]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[master] regen flex/bison files
authorFrancis Dupont <fdupont@isc.org>
Thu, 6 Jul 2017 11:12:16 +0000 (11:12 +0000)
committerFrancis Dupont <fdupont@isc.org>
Thu, 6 Jul 2017 11:12:16 +0000 (11:12 +0000)
12 files changed:
src/bin/dhcp4/dhcp4_lexer.cc
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/location.hh
src/bin/dhcp4/position.hh
src/bin/dhcp4/stack.hh
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/location.hh
src/bin/dhcp6/position.hh
src/bin/dhcp6/stack.hh

index 2a56627fe472514dff42fe92ec4443d5693ce03b..56167230854731960b2a84fc1075f2702cbffbd3 100644 (file)
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] 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 148
-#define YY_END_OF_BUFFER 149
+#define YY_NUM_RULES 152
+#define YY_END_OF_BUFFER 153
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,138 +700,142 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1190] =
+static const flex_int16_t yy_accept[1212] =
     {   0,
-      141,  141,    0,    0,    0,    0,    0,    0,    0,    0,
-      149,  147,   10,   11,  147,    1,  141,  138,  141,  141,
-      147,  140,  139,  147,  147,  147,  147,  147,  134,  135,
-      147,  147,  147,  136,  137,    5,    5,    5,  147,  147,
-      147,   10,   11,    0,    0,  130,    0,    0,    0,    0,
+      145,  145,    0,    0,    0,    0,    0,    0,    0,    0,
+      153,  151,   10,   11,  151,    1,  145,  142,  145,  145,
+      151,  144,  143,  151,  151,  151,  151,  151,  138,  139,
+      151,  151,  151,  140,  141,    5,    5,    5,  151,  151,
+      151,   10,   11,    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,    0,    0,    0,    0,    0,    0,    1,  141,
-      141,    0,  140,  141,    3,    2,    6,    0,  141,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    1,  145,
+      145,    0,  144,  145,    3,    2,    6,    0,  145,    0,
         0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
 
-      131,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  133,    0,    0,    0,    0,    0,
+      135,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  137,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    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,
-      132,    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,  136,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   51,    0,    0,
+        0,    0,    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,    0,    0,
-        0,    0,    0,    0,    0,  146,  144,    0,  143,  142,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  112,
-        0,  111,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   26,    0,    0,    0,    0,    0,    0,    0,
+      150,  148,    0,  147,  146,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  116,    0,  115,    0,    0,   57,
+        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,   15,    0,    0,
+        0,    0,    0,   55,    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,    0,    0,   16,    0,    0,    0,  145,
-      142,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      113,    0,    0,  115,    0,    0,    0,    0,    0,    0,
-        0,   54,    0,    0,    0,    0,   44,    0,    0,    0,
-        0,   69,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   16,    0,    0,    0,  149,  146,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  117,
+        0,    0,  119,    0,    0,    0,    0,    0,    0,    0,
+       58,    0,    0,    0,    0,   44,    0,    0,    0,    0,
 
+        0,   73,    0,    0,    0,    0,    0,    0,    0,    0,
         0,   29,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    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,   46,    0,   30,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   67,   22,    0,   27,    0,    0,    0,    0,    0,
-        0,    0,   12,  120,    0,  117,    0,  116,    0,    0,
-        0,   79,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   61,
+        0,    0,   71,   22,    0,   27,    0,    0,    0,    0,
+        0,    0,    0,   12,  124,    0,  121,    0,  120,    0,
+        0,    0,   83,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
+        0,   65,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   24,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   45,    0,    0,    0,    0,    0,
+        0,    0,    0,   84,    0,    0,    0,    0,    0,    0,
+        0,   79,    0,    0,    0,    0,    7,    0,    0,  122,
         0,    0,    0,    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,
-       80,    0,    0,    0,    0,    0,    0,    0,   75,    0,
-        0,    0,    0,    7,    0,    0,  118,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   63,    0,
-        0,    0,    0,    0,   59,    0,    0,    0,    0,    0,
 
+        0,    0,   67,    0,    0,    0,    0,    0,    0,   63,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    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,   73,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   84,   57,
-        0,    0,    0,   62,   23,    0,    0,    0,    0,    0,
-        0,    0,    0,   31,    0,    0,    0,    0,    0,    0,
+       48,    0,    0,    0,    0,    0,    0,    0,   60,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   40,    0,    0,    0,    0,    0,  121,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       77,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   88,   61,    0,    0,    0,   66,
+       23,    0,    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,  125,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   74,    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,   54,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   78,    0,    0,    0,    0,   34,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   64,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   71,    0,    0,    0,    0,
-        0,    0,   96,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   49,    0,    0,    0,
+        0,    0,    0,   28,    0,    0,    0,    0,   21,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       68,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   75,    0,    0,    0,    0,    0,
 
+        0,  100,    0,    0,    0,    0,    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,    0,    0,    0,   18,    0,    0,
-        0,    0,    0,    0,  101,    0,    0,   99,    0,    0,
-        0,    0,    0,    0,    0,  124,    0,    0,    0,    0,
-       72,    0,    0,    0,    0,   76,   60,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       70,    0,   17,    0,   81,    0,    0,    0,    0,    0,
-      105,    0,    0,    0,   41,    0,    0,    0,   83,   25,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  105,    0,    0,  103,    0,    0,
+        0,    0,    0,    0,    0,  128,    0,    0,    0,    0,
+       76,    0,    0,    0,    0,   80,   64,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       74,    0,   17,    0,   85,    0,    0,    0,    0,    0,
+      109,    0,    0,    0,   41,    0,    0,    0,    0,   87,
 
+       25,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    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,  127,   42,    0,    0,
-        0,    0,    0,    0,    0,    0,   37,    0,    0,    0,
-      102,    0,  100,   95,   94,    0,    0,    0,    0,    0,
-      114,    0,    0,   66,    0,    0,    0,    0,    0,    0,
-       92,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       50,    0,    0,   32,    0,    0,    0,    0,  104,    0,
-        0,    0,    0,   52,   38,    0,   77,    0,    0,   68,
-        0,    0,   47,    0,  122,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   82,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  131,   42,   56,
+        0,    0,    0,    0,    0,    0,    0,    0,   37,    0,
+        0,    0,  106,    0,  104,   99,   98,    0,    0,    0,
+        0,    0,  118,    0,    0,   70,    0,    0,    0,    0,
+        0,    0,   96,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   50,    0,    0,   32,    0,    0,    0,    0,
 
+      108,    0,    0,    0,    0,   52,   38,    0,   81,    0,
+        0,   72,    0,    0,   47,    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,    0,
-        0,    0,    0,  129,   65,    0,   35,   93,    0,    0,
-      125,   97,    0,    0,    0,    0,    0,    0,   20,    0,
-       19,    0,  103,    0,    0,   58,    0,    0,    0,    0,
-        0,    0,    0,    0,   36,    0,    0,    0,   33,    0,
-        0,    0,    0,    0,    0,   82,    0,    0,  126,    0,
-        0,    0,    0,    0,    0,    0,    0,  128,    0,  123,
-      119,    0,    0,   14,    0,    0,  110,    0,    0,    0,
-
-        0,   90,    0,    0,    0,    0,    0,   53,    0,    0,
-        0,    0,    0,    0,    0,   13,    0,    0,    0,   98,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   89,
-        0,  107,    0,    0,    0,  106,    0,    0,    0,   88,
-        0,    0,    0,  109,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  133,   69,    0,   35,   97,
+        0,    0,  129,  101,    0,    0,    0,    0,    0,    0,
+       20,    0,   19,    0,  107,    0,    0,   62,    0,    0,
+        0,    0,    0,    0,    0,    0,   36,    0,    0,    0,
+       33,    0,    0,    0,    0,    0,    0,   86,    0,    0,
+
+      130,    0,    0,    0,    0,    0,    0,    0,    0,  132,
+        0,  127,  123,    0,    0,   14,    0,    0,  114,    0,
+        0,    0,    0,   94,    0,    0,    0,    0,    0,   53,
+        0,    0,    0,    0,    0,    0,    0,   13,    0,    0,
+        0,  102,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   93,    0,  111,    0,    0,    0,  110,    0,    0,
+        0,   92,    0,    0,    0,  113,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  108,    0,    0,    0,    0,    0,    0,
-       86,   91,   39,    0,    0,    0,   85,    0,    0,    0,
-        0,    0,    0,    0,   55,    0,    0,   87,    0
+        0,    0,    0,    0,    0,  112,    0,    0,    0,    0,
+        0,    0,   90,   95,   39,    0,    0,    0,   89,    0,
+
+        0,    0,    0,    0,    0,    0,   59,    0,    0,   91,
+        0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -878,297 +882,301 @@ static const YY_CHAR yy_meta[72] =
         3
     } ;
 
-static const flex_int16_t yy_base[1202] =
+static const flex_int16_t yy_base[1224] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1551, 1552,   32, 1547,  141,    0,  201, 1552,  206,   88,
-       11,  213, 1552, 1529,  114,   25,    2,    6, 1552, 1552,
-       73,   11,   17, 1552, 1552, 1552,  104, 1535, 1490,    0,
-     1527,  107, 1542,  217,  247, 1552, 1486,  185, 1492,   93,
-       58, 1484,   91,  209,  200,   14,  273,  190, 1483,  181,
-      186,  189,  223, 1492,   66,  206, 1491,  232,  204,  294,
-      256,  216, 1474,   78,  268,  300,  300, 1493,    0,  329,
-      344,  356,  364,  359, 1552,    0, 1552,  273,  335,  300,
-      335,  289,  353,  354,  299, 1552, 1490, 1529, 1552,  311,
-
-     1552,  375, 1518,  328, 1487,  356,  355, 1482,  350,  359,
-      357,  363,  371, 1525,    0,  426,  359, 1469, 1471, 1467,
-     1475,   74, 1471, 1460, 1461,   89, 1477, 1470, 1470,  213,
-     1461,  350, 1462,  344, 1507, 1511, 1453, 1504, 1446, 1469,
-     1466, 1466, 1460,  337, 1453, 1446, 1451, 1445,  364, 1442,
-     1441, 1455,  365, 1441,  372, 1457,  344,  432,  396, 1454,
-     1455, 1453, 1435, 1437,  385, 1429, 1446, 1438,    0,  394,
-      408,  398,  420,  426,  410, 1437, 1552,    0, 1480,  424,
-     1431,  426,  429, 1439,  437, 1482,  442, 1481,  435, 1480,
-     1552,  481,  472, 1441, 1421, 1437, 1434, 1433,  451, 1474,
-
-     1468, 1434, 1413, 1421, 1416, 1427, 1415, 1427, 1427, 1418,
-     1402, 1406, 1419, 1419, 1411, 1401, 1419, 1552, 1414, 1417,
-     1398, 1397, 1447, 1396, 1406, 1409,  453, 1405, 1393, 1404,
-     1440, 1387, 1397, 1389, 1386, 1402, 1383, 1382, 1388, 1379,
-     1378, 1385, 1387, 1432, 1390, 1389, 1383,  211, 1390, 1385,
-     1377, 1383, 1383, 1364, 1380, 1373, 1380, 1368, 1361, 1375,
-     1416, 1377, 1359, 1367,  473, 1552, 1552,  474, 1552, 1552,
-     1354,    0,  279,  441,  495,  475, 1411, 1364,  451, 1552,
-     1409, 1552, 1403,  517,  478, 1345, 1401, 1347, 1353, 1403,
-     1360,  422, 1552, 1358, 1400, 1355, 1352,  509, 1397, 1391,
-
-     1346, 1341, 1338, 1387, 1346, 1335, 1384, 1332,  538, 1346,
-     1331, 1344, 1331, 1341, 1336, 1343, 1338, 1334,  474, 1332,
-     1335, 1330, 1326, 1374,  420, 1368, 1320, 1313, 1315, 1319,
-     1308, 1321,  495, 1366, 1321, 1318, 1322, 1552, 1320, 1309,
-     1309, 1321, 1303, 1295, 1296, 1317, 1299, 1311, 1310, 1296,
-     1308, 1307, 1306, 1347, 1346, 1552, 1290,  539, 1303, 1552,
-     1552, 1302,    0, 1291, 1283,  513, 1340, 1339, 1297, 1337,
-     1552, 1285, 1335, 1552,  521,  587,  514, 1334, 1290, 1286,
-     1274, 1552, 1290, 1289, 1276, 1275, 1552, 1277, 1274,  490,
-     1272, 1552, 1283, 1280, 1265, 1278, 1273,  548, 1280, 1262,
-
-     1311, 1552, 1260, 1276, 1308, 1271, 1268, 1269, 1271, 1303,
-     1256, 1251, 1250, 1299, 1245, 1260, 1238, 1245, 1250, 1298,
-     1552, 1245, 1241, 1239, 1243, 1236, 1246, 1249, 1238, 1233,
-     1552, 1288, 1552, 1232, 1243, 1280, 1227, 1232, 1241, 1235,
-     1239, 1279, 1273, 1237, 1217, 1220, 1219, 1227, 1215, 1271,
-     1213, 1552, 1552, 1218, 1552, 1228, 1262, 1224,    0, 1208,
-     1225, 1263, 1552, 1552, 1211, 1552, 1217, 1552,  524,  523,
-      561, 1552, 1214, 1202, 1253, 1200, 1199, 1206, 1199, 1211,
-     1210, 1210, 1198, 1239, 1199, 1242, 1188, 1204, 1203, 1552,
-     1188, 1185, 1199, 1191, 1197, 1188, 1196, 1181, 1197, 1179,
-
-     1193, 1191, 1174, 1168, 1173, 1188, 1185, 1186, 1183, 1224,
-     1181, 1552, 1167, 1169, 1178, 1214,  530, 1177, 1160, 1161,
-     1158, 1552, 1172, 1151, 1172, 1169, 1161, 1204, 1158, 1202,
-     1552, 1149, 1163, 1166, 1198, 1197, 1144, 1195, 1552,   14,
-     1157, 1146, 1148, 1552, 1154, 1144, 1552, 1138, 1193,  523,
-      535, 1146, 1142, 1185,  522, 1184, 1183, 1182, 1136, 1126,
-     1179, 1132, 1142, 1176, 1134, 1121, 1129, 1172, 1176, 1133,
-     1132, 1133, 1126, 1115, 1128, 1131, 1126, 1127, 1124, 1123,
-     1126, 1121, 1162, 1161, 1111, 1101, 1109, 1157, 1552, 1156,
-     1105, 1097, 1098, 1111, 1552, 1099, 1108, 1107, 1107, 1147,
-
-     1090, 1099, 1092, 1103, 1080, 1084, 1135, 1082, 1092, 1132,
-     1079,  518,  537, 1073,  522, 1552, 1134, 1092, 1081, 1085,
-     1075, 1087, 1128, 1552, 1122,  535, 1075, 1083, 1078, 1074,
-     1081, 1064, 1067, 1063, 1080, 1075, 1063, 1059, 1066, 1060,
-     1070, 1058, 1072, 1060, 1552, 1068, 1066, 1057, 1066, 1062,
-     1103, 1045, 1045, 1058, 1043, 1098, 1040, 1041, 1552, 1552,
-     1049, 1052, 1055, 1552, 1552, 1054, 1039, 1031,  543, 1036,
-     1083, 1032, 1086, 1552, 1031, 1033, 1033, 1025, 1081, 1034,
-     1022, 1016, 1027, 1036, 1029, 1021, 1021, 1020, 1018, 1018,
-     1069, 1030, 1005, 1552, 1061, 1008, 1021, 1020, 1005, 1552,
-
-      539,  556, 1021, 1055, 1018, 1020, 1057, 1010, 1003, 1002,
-      996, 1003,  996, 1050, 1007,  996,  996,   12,    5,   90,
-      273,  328,  361,  452,  529, 1552,  548,  531,  588,  543,
-     1552,  562,  542,  566,  604,  564,  554,  572,  571,  557,
-      572,  559,  580,  561, 1552,  569,  575,  571,  622, 1552,
-      573,  578,  579,  591,  585,  583,  636,  582,  582,  639,
-      585, 1552,  591,  589,  588,  603,  604,  609,  648,  622,
-      627,  601,  601,  653,  598, 1552,  605,  610,  617,  658,
-      659,  608, 1552,  604,  607,  606,  626,  623,  628,  629,
-      615,  623,  632,  612,  633,  673, 1552,  628,  675,  676,
-
-      640,  643,  631,  627,  634,  685,  634,  632,  650,  689,
-      644,  642,  640,  693,  694,  690,  650, 1552,  655,  648,
-      657,  645,  655,  651, 1552,  646,  647, 1552,  648,  664,
-      665,  666,  648,  653,  671, 1552,  693,  684,  656,  677,
-     1552,  660,  675,  667,  671, 1552, 1552,  681,  716,  665,
-      718,  667,  725,  670,  681,  673,  679,  675,  693,  694,
-     1552,  692, 1552,  694, 1552,  698,  688,  681,  693,  735,
-     1552,  693,  743,  744, 1552,  693,  700,  742, 1552, 1552,
-      692,  692,  695,  709,  696,  753,  712,  750,  756,  706,
-      758,  759,  760,  721,  705,  717,  722,  737,  766,  726,
-
-      718,  769,  718,  714,  730,  735,  717,  775,  730,  735,
-     1552,  736,  729,  738,  739,  736,  726,  728,  785,  734,
-      731,  788,  784,  727,  742,  792, 1552, 1552,  743,  753,
-      738,  739,  798,  800,  746,  802, 1552,  752,  754,  805,
-     1552,  769, 1552, 1552, 1552,  759,  809,  760,  812,  794,
-     1552,  772,  773, 1552,  760,  760,  763,  763,  764,  760,
-     1552,  782,  768,  769,  784,  784,  787,  787,  784,  789,
-     1552,  781,  791, 1552,  788,  793,  795,  792, 1552,  783,
-      789,  788,  799, 1552, 1552,  838, 1552,  787,  793, 1552,
-      796,  809, 1552,  806, 1552,  803,  826,  846,  852,  853,
-
-      797,  855,  856,  811,  805,  859,  860,  856,  821,  817,
-      859,  809,  814,  867,  825,  869,  829,  871,  834,  823,
-      874,  818,  835,  835,  819,  875,  840,  840,  837,  884,
-      844,  857,  844, 1552, 1552,  888, 1552, 1552,  837,  848,
-     1552, 1552,  838,  887,  832,  837,  895,  845, 1552,  851,
-     1552,  898, 1552,  843,  858, 1552,  896,  864,  857,  866,
-      854,  864,  907,  858, 1552,  909,  910,  857, 1552,  861,
-      913,  860,  859,  917,  872, 1552,  914,  876, 1552,  879,
-      922,  865,  867,  864,  880,  889,  928, 1552,  924, 1552,
-     1552,  889,  926, 1552,  880,  887, 1552,  884,  889,  936,
-
-      881, 1552,  885,  897,  940,  884,  892, 1552,  903,  893,
-      892,  906,  897,  906,  908, 1552,  950,  910,  952, 1552,
-      948,  912,  893,  956,  915,  916,  917,  960,  919, 1552,
-      924, 1552,  906,  964,  925, 1552,  911,  911,  913, 1552,
-      918,  913,  925, 1552,  923,  927,  918,  970,  919,  935,
-      928,  937,  928,  935,  922,  937,  984,  943,  930,  946,
-      937,  951,  947, 1552,  991,  992,  993,  950,  949,  950,
-     1552, 1552, 1552,  997,  941,  957, 1552,  995,  946,  945,
-      947,  958, 1005,  956, 1552,  965, 1008, 1552, 1552, 1014,
-     1019, 1024, 1029, 1034, 1039, 1044, 1047, 1021, 1026, 1028,
-
-     1041
+     1573, 1574,   32, 1569,  141,    0,  201, 1574,  206,   88,
+       11,  213, 1574, 1551,  114,   25,    2,    6, 1574, 1574,
+       73,   11,   17, 1574, 1574, 1574,  104, 1557, 1512,    0,
+     1549,  107, 1564,  217,  247, 1574, 1508,  185, 1514,   93,
+       58, 1506,   91,  209,  200,   14,  273,  190, 1505,  181,
+      208,  200,  209, 1514,   66,  231, 1513,  267,  221,  295,
+      268,  280, 1496,   78,  287,  317,  297, 1515,    0,  333,
+      341,  353,  358,  361, 1574,    0, 1574,  376,  379,  208,
+      219,  316,  332,  342,  324, 1574, 1512, 1551, 1574,  373,
+
+     1574,  390, 1540,  344, 1509,  369,  353, 1504,  362,  369,
+      366,  373,  375, 1547,    0,  441,  370, 1491, 1493, 1489,
+     1497,   74, 1493, 1482, 1483,   89, 1499, 1482, 1491, 1491,
+      285, 1482,  186, 1483,  357, 1528, 1532, 1474, 1525, 1467,
+     1490, 1487, 1487, 1481,  217, 1474, 1467, 1472, 1466,  376,
+     1477, 1462, 1461, 1475,  355, 1461,  360, 1477,  367,  437,
+      377, 1474, 1475, 1473, 1455, 1457,  412, 1449, 1466, 1458,
+        0,  406,  391,  404,  411,  420,  412, 1457, 1574,    0,
+     1500,  440, 1451,  416,  440, 1459,  447, 1502,  452, 1501,
+      444, 1500, 1574,  488, 1499,  472, 1460, 1440, 1456, 1453,
+
+     1452,  224, 1493, 1487, 1453, 1432, 1440, 1435, 1449, 1445,
+     1433, 1445, 1445, 1436, 1420, 1424, 1437, 1437, 1429, 1419,
+     1437, 1574, 1432, 1435, 1416, 1415, 1465, 1414, 1424, 1427,
+      458, 1423, 1411, 1422, 1458, 1405, 1461, 1414,    9, 1404,
+     1420, 1401, 1400, 1406, 1397, 1396, 1403, 1405, 1450, 1408,
+     1407, 1401,  268, 1408, 1403, 1395, 1401, 1401, 1382, 1398,
+     1391, 1398, 1386, 1379, 1393, 1434, 1395, 1377, 1385,  473,
+     1574, 1574,  480, 1574, 1574, 1372,    0,  455,  440,  503,
+      481, 1429, 1382,  482, 1574, 1427, 1574, 1421,  530, 1574,
+      491, 1363, 1419, 1365, 1371, 1421, 1378,  415, 1574, 1376,
+
+     1418, 1373, 1370,  511, 1376, 1414, 1408, 1363, 1358, 1355,
+     1404, 1363, 1352, 1401, 1349,  536, 1363, 1348, 1361, 1348,
+     1358, 1353, 1360, 1355, 1351,  464, 1349, 1352, 1347, 1343,
+     1391,  482, 1385, 1574, 1337, 1336, 1329, 1331, 1335, 1324,
+     1337,  532, 1382, 1337, 1334, 1338, 1574, 1336, 1325, 1325,
+     1337, 1319, 1311, 1312, 1333, 1315, 1327, 1326, 1312, 1324,
+     1323, 1322, 1363, 1362, 1574, 1306,  551, 1319, 1574, 1574,
+     1318,    0, 1307, 1299,  505, 1356, 1355, 1313, 1353, 1574,
+     1301, 1351, 1574,  528,  585,  506, 1350, 1306, 1302, 1290,
+     1574, 1306, 1305, 1292, 1291, 1574, 1293, 1290,  501, 1288,
+
+     1290, 1574, 1298, 1295, 1280, 1293, 1288,  555, 1295, 1277,
+     1326, 1574, 1275, 1291, 1323, 1286, 1283, 1284, 1286, 1318,
+     1271, 1266, 1265, 1314, 1260, 1275, 1253, 1260, 1265, 1313,
+     1574, 1260, 1256, 1254, 1258, 1265, 1250, 1260, 1263, 1252,
+     1247, 1574, 1302, 1574, 1246, 1257, 1294, 1241, 1246, 1255,
+     1249, 1253, 1293, 1287, 1251, 1231, 1234, 1233, 1241, 1229,
+     1285, 1227, 1574, 1574, 1232, 1574, 1242, 1276, 1238,    0,
+     1222, 1239, 1277, 1574, 1574, 1225, 1574, 1231, 1574,  533,
+      536,  559, 1574, 1228, 1216, 1267, 1214, 1213, 1220, 1213,
+     1225, 1224, 1224, 1212, 1253, 1220, 1212, 1255, 1201, 1217,
+
+     1216, 1574, 1201, 1198, 1212, 1204, 1210, 1201, 1209, 1194,
+     1210, 1192, 1206, 1204, 1187, 1181, 1186, 1201, 1198, 1199,
+     1196, 1237, 1194, 1574, 1180, 1182, 1191, 1227, 1226,  543,
+     1189, 1172, 1173, 1170, 1574, 1184, 1163, 1184, 1181, 1173,
+     1216, 1170, 1214, 1574, 1161, 1175, 1178, 1210, 1209, 1156,
+     1207, 1574,  229, 1169, 1158, 1160, 1574, 1166, 1156, 1574,
+     1150, 1205,  549,  525, 1158, 1154, 1197,  536, 1196, 1195,
+     1194, 1148, 1138, 1191, 1144, 1154, 1188, 1151, 1145, 1132,
+     1140, 1183, 1187, 1144, 1143, 1144, 1137, 1126, 1139, 1142,
+     1137, 1138, 1135, 1134, 1137, 1132, 1173, 1172, 1122, 1112,
+
+     1120, 1168, 1574, 1167, 1116, 1108, 1109, 1122, 1109, 1574,
+     1109, 1118, 1117, 1117, 1157, 1100, 1109, 1102, 1113, 1090,
+     1094, 1145, 1092, 1102, 1142, 1089,  531,  544, 1083,  556,
+     1574, 1144, 1102, 1091, 1095, 1085, 1097, 1138, 1574, 1132,
+      555, 1085, 1093, 1088, 1084, 1091, 1074, 1077, 1073, 1090,
+     1085, 1073, 1069, 1076, 1070, 1122, 1079, 1067, 1081, 1069,
+     1574, 1077, 1075, 1066, 1075, 1071, 1112, 1054, 1054, 1067,
+     1052, 1107, 1049, 1050, 1574, 1574, 1058, 1061, 1064, 1574,
+     1574, 1063, 1048, 1040,  570, 1046, 1044, 1091, 1040, 1094,
+     1574, 1039, 1041, 1041, 1033, 1089, 1042, 1030, 1024, 1035,
+
+     1044, 1037, 1029, 1029, 1028, 1026, 1026, 1077, 1038, 1013,
+     1574, 1069, 1016, 1029, 1028, 1013, 1574,  583,  556, 1029,
+       17,   12,   94,  260,  290,  346,  349,  395,  425,  430,
+      565,  524,  522, 1574,  535,  555,  542,  568,  565,  610,
+      578,  562,  563, 1574,  581,  564,  629,  565, 1574,  584,
+      571,  589,  627,  587,  578,  597,  596,  582,  597,  589,
+      585,  603,  588, 1574,  596,  602,  597,  648, 1574,  599,
+      604,  598,  610,  604,  603,  656,  602,  602,  659,  605,
+     1574,  611,  609,  608,  622,  623,  628,  667,  641,  646,
+      620,  620,  672,  617, 1574,  624,  629,  636,  677,  678,
+
+      627, 1574,  623,  626,  625,  645,  642,  648,  649,  635,
+      643,  652,  632,  653,  693, 1574,  648,  695,  698,  660,
+      663,  651,  647,  654,  705,  654,  652,  670,  709,  661,
+      665,  663,  661,  714,  715,  711,  671, 1574,  676,  669,
+      678,  666,  676,  672, 1574,  667,  668, 1574,  669,  685,
+      686,  687,  669,  674,  692, 1574,  714,  705,  677,  698,
+     1574,  681,  696,  688,  692, 1574, 1574,  702,  737,  686,
+      739,  688,  746,  691,  702,  694,  700,  696,  714,  715,
+     1574,  713, 1574,  715, 1574,  719,  709,  702,  714,  756,
+     1574,  714,  764,  765, 1574,  766,  715,  722,  764, 1574,
+
+     1574,  714,  714,  717,  731,  718,  775,  734,  772,  778,
+      728,  780,  781,  782,  743,  727,  739,  744,  759,  788,
+      748,  740,  791,  740,  736,  752,  757,  739,  797,  752,
+      757, 1574,  758,  751,  760,  761,  758,  748,  750,  807,
+      756,  753,  810,  806,  749,  764,  814, 1574, 1574, 1574,
+      765,  775,  760,  761,  820,  822,  768,  824, 1574,  774,
+      776,  827, 1574,  791, 1574, 1574, 1574,  781,  831,  782,
+      834,  816, 1574,  794,  795, 1574,  782,  782,  785,  785,
+      786,  782, 1574,  804,  790,  791,  806,  806,  809,  809,
+      806,  811, 1574,  803,  813, 1574,  810,  815,  817,  814,
+
+     1574,  805,  811,  810,  821, 1574, 1574,  860, 1574,  809,
+      815, 1574,  818,  831, 1574,  828, 1574,  825,  848,  868,
+      874,  875,  819,  877,  878,  833,  827,  881,  882,  878,
+      843,  839,  881,  831,  836,  889,  847,  891,  851,  893,
+      856,  845,  896,  840,  857,  857,  841,  897,  862,  862,
+      859,  906,  866,  879,  866, 1574, 1574,  910, 1574, 1574,
+      859,  870, 1574, 1574,  860,  909,  854,  859,  917,  867,
+     1574,  873, 1574,  920, 1574,  865,  880, 1574,  918,  886,
+      879,  888,  876,  886,  929,  880, 1574,  931,  932,  879,
+     1574,  883,  935,  882,  881,  939,  894, 1574,  936,  898,
+
+     1574,  901,  944,  887,  889,  886,  902,  911,  950, 1574,
+      946, 1574, 1574,  911,  948, 1574,  902,  909, 1574,  906,
+      911,  958,  903, 1574,  907,  919,  962,  906,  914, 1574,
+      925,  915,  914,  928,  919,  928,  930, 1574,  972,  932,
+      974, 1574,  970,  934,  915,  978,  937,  938,  939,  982,
+      941, 1574,  946, 1574,  928,  986,  947, 1574,  933,  933,
+      935, 1574,  940,  935,  947, 1574,  945,  949,  940,  992,
+      941,  957,  950,  959,  950,  957,  944,  959, 1006,  965,
+      952,  968,  959,  973,  969, 1574, 1013, 1014, 1015,  972,
+      971,  972, 1574, 1574, 1574, 1019,  963,  979, 1574, 1017,
+
+      968,  967,  969,  980, 1027,  978, 1574,  987, 1030, 1574,
+     1574, 1036, 1041, 1046, 1051, 1056, 1061, 1066, 1069, 1043,
+     1048, 1050, 1063
     } ;
 
-static const flex_int16_t yy_def[1202] =
+static const flex_int16_t yy_def[1224] =
     {   0,
-     1190, 1190, 1191, 1191, 1190, 1190, 1190, 1190, 1190, 1190,
-     1189, 1189, 1189, 1189, 1189, 1192, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1193,
-     1189, 1189, 1189, 1194,   15, 1189,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1195,   45,   45,   45,
+     1212, 1212, 1213, 1213, 1212, 1212, 1212, 1212, 1212, 1212,
+     1211, 1211, 1211, 1211, 1211, 1214, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1215,
+     1211, 1211, 1211, 1216,   15, 1211,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1217,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1192, 1189,
-     1189, 1189, 1189, 1189, 1189, 1196, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1193, 1189, 1194,
+       45,   45,   45,   45,   45,   45,   45,   45, 1214, 1211,
+     1211, 1211, 1211, 1211, 1211, 1218, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1215, 1211, 1216,
 
-     1189, 1189,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1197,   45, 1195,   45,   45,   45,   45,
+     1211, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1219,   45, 1217,   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,
+     1218, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1220,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1196, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1198,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1197,
-     1189, 1195,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1219, 1211, 1217,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1189,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1211,   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, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1199,   45,   45,   45,   45,   45,   45,   45, 1189,
-       45, 1189,   45, 1195,   45,   45,   45,   45,   45,   45,
-       45,   45, 1189,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1221,   45,   45,   45,
+       45,   45,   45,   45, 1211,   45, 1211,   45, 1217, 1211,
+       45,   45,   45,   45,   45,   45,   45,   45, 1211,   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, 1189,   45,   45,
+       45,   45,   45, 1211,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1211,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1189,   45,   45,   45, 1189,
-     1189, 1189, 1200,   45,   45,   45,   45,   45,   45,   45,
-     1189,   45,   45, 1189,   45, 1195,   45,   45,   45,   45,
-       45, 1189,   45,   45,   45,   45, 1189,   45,   45,   45,
-       45, 1189,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1211,   45,   45,   45, 1211, 1211,
+     1211, 1222,   45,   45,   45,   45,   45,   45,   45, 1211,
+       45,   45, 1211,   45, 1217,   45,   45,   45,   45,   45,
+     1211,   45,   45,   45,   45, 1211,   45,   45,   45,   45,
 
-       45, 1189,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1189,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1189,   45, 1189,   45,   45,   45,   45,   45,   45,   45,
+     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1211,   45, 1211,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1189, 1189,   45, 1189,   45,   45, 1189, 1201,   45,
-       45,   45, 1189, 1189,   45, 1189,   45, 1189,   45,   45,
-       45, 1189,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1189,
+       45,   45, 1211, 1211,   45, 1211,   45,   45, 1211, 1223,
+       45,   45,   45, 1211, 1211,   45, 1211,   45, 1211,   45,
+       45,   45, 1211,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
+       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1189,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1189,   45,   45,   45,   45,   45,   45,   45,   45,
-     1189,   45,   45,   45,   45,   45,   45,   45, 1189,   45,
-       45,   45,   45, 1189,   45,   45, 1189,   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, 1211,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1211,   45,   45,   45,   45,   45,
+       45,   45,   45, 1211,   45,   45,   45,   45,   45,   45,
+       45, 1211,   45,   45,   45,   45, 1211,   45,   45, 1211,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1189,   45,
-       45,   45,   45,   45, 1189,   45,   45,   45,   45,   45,
-
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1189,   45,   45,   45,   45,
-       45,   45,   45, 1189,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1189,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1189, 1189,
-       45,   45,   45, 1189, 1189,   45,   45,   45,   45,   45,
-       45,   45,   45, 1189,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1189,   45,   45,   45,   45,   45, 1189,
 
+       45,   45, 1211,   45,   45,   45,   45,   45,   45, 1211,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1211,   45,   45,   45,   45,   45,   45,   45, 1211,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1189,   45,   45,   45,   45,
-     1189,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1189,   45,   45,   45,   45, 1189,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1189,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1189,   45,   45,   45,   45,
-       45,   45, 1189,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1189,   45,   45,   45,
+     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1211, 1211,   45,   45,   45, 1211,
+     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1211,   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, 1189,   45,   45,
-       45,   45,   45,   45, 1189,   45,   45, 1189,   45,   45,
-       45,   45,   45,   45,   45, 1189,   45,   45,   45,   45,
-     1189,   45,   45,   45,   45, 1189, 1189,   45,   45,   45,
+     1211,   45,   45,   45,   45,   45, 1211,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1189,   45, 1189,   45, 1189,   45,   45,   45,   45,   45,
-     1189,   45,   45,   45, 1189,   45,   45,   45, 1189, 1189,
+       45,   45,   45, 1211,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1211,   45,   45,   45,   45, 1211,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1211,   45,   45,   45,   45, 1211,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1211,   45,   45,   45,   45,   45,
 
+       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1211,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1211,   45,   45,
+       45,   45,   45,   45, 1211,   45,   45, 1211,   45,   45,
+       45,   45,   45,   45,   45, 1211,   45,   45,   45,   45,
+     1211,   45,   45,   45,   45, 1211, 1211,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1189,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1189, 1189,   45,   45,
-       45,   45,   45,   45,   45,   45, 1189,   45,   45,   45,
-     1189,   45, 1189, 1189, 1189,   45,   45,   45,   45,   45,
-     1189,   45,   45, 1189,   45,   45,   45,   45,   45,   45,
-     1189,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1189,   45,   45, 1189,   45,   45,   45,   45, 1189,   45,
-       45,   45,   45, 1189, 1189,   45, 1189,   45,   45, 1189,
-       45,   45, 1189,   45, 1189,   45,   45,   45,   45,   45,
+     1211,   45, 1211,   45, 1211,   45,   45,   45,   45,   45,
+     1211,   45,   45,   45, 1211,   45,   45,   45,   45, 1211,
 
+     1211,   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, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1211, 1211, 1211,
+       45,   45,   45,   45,   45,   45,   45,   45, 1211,   45,
+       45,   45, 1211,   45, 1211, 1211, 1211,   45,   45,   45,
+       45,   45, 1211,   45,   45, 1211,   45,   45,   45,   45,
+       45,   45, 1211,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1211,   45,   45, 1211,   45,   45,   45,   45,
+
+     1211,   45,   45,   45,   45, 1211, 1211,   45, 1211,   45,
+       45, 1211,   45,   45, 1211,   45, 1211,   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, 1189, 1189,   45, 1189, 1189,   45,   45,
-     1189, 1189,   45,   45,   45,   45,   45,   45, 1189,   45,
-     1189,   45, 1189,   45,   45, 1189,   45,   45,   45,   45,
-       45,   45,   45,   45, 1189,   45,   45,   45, 1189,   45,
-       45,   45,   45,   45,   45, 1189,   45,   45, 1189,   45,
-       45,   45,   45,   45,   45,   45,   45, 1189,   45, 1189,
-     1189,   45,   45, 1189,   45,   45, 1189,   45,   45,   45,
-
-       45, 1189,   45,   45,   45,   45,   45, 1189,   45,   45,
-       45,   45,   45,   45,   45, 1189,   45,   45,   45, 1189,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1189,
-       45, 1189,   45,   45,   45, 1189,   45,   45,   45, 1189,
-       45,   45,   45, 1189,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1211, 1211,   45, 1211, 1211,
+       45,   45, 1211, 1211,   45,   45,   45,   45,   45,   45,
+     1211,   45, 1211,   45, 1211,   45,   45, 1211,   45,   45,
+       45,   45,   45,   45,   45,   45, 1211,   45,   45,   45,
+     1211,   45,   45,   45,   45,   45,   45, 1211,   45,   45,
+
+     1211,   45,   45,   45,   45,   45,   45,   45,   45, 1211,
+       45, 1211, 1211,   45,   45, 1211,   45,   45, 1211,   45,
+       45,   45,   45, 1211,   45,   45,   45,   45,   45, 1211,
+       45,   45,   45,   45,   45,   45,   45, 1211,   45,   45,
+       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1211,   45, 1211,   45,   45,   45, 1211,   45,   45,
+       45, 1211,   45,   45,   45, 1211,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1189,   45,   45,   45,   45,   45,   45,
-     1189, 1189, 1189,   45,   45,   45, 1189,   45,   45,   45,
-       45,   45,   45,   45, 1189,   45,   45, 1189,    0, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
+       45,   45,   45,   45,   45, 1211,   45,   45,   45,   45,
+       45,   45, 1211, 1211, 1211,   45,   45,   45, 1211,   45,
 
-     1189
+       45,   45,   45,   45,   45,   45, 1211,   45,   45, 1211,
+        0, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211
     } ;
 
-static const flex_int16_t yy_nxt[1624] =
+static const flex_int16_t yy_nxt[1646] =
     {   0,
-     1189,   13,   14,   13, 1189,   15,   16, 1189,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   85,  616,
-       37,   14,   37,   86,   25,   26,   38, 1189,  617,   27,
+     1211,   13,   14,   13, 1211,   15,   16, 1211,   17,   18,
+       19,   20,   21,   22,   22,   22,   23,   24,   85,  336,
+       37,   14,   37,   86,   25,   26,   38,  792, 1211,   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,  787,   13,
-       14,   13,   33,   40,  113,   91,   92,  788,   90,   34,
+       13,   14,   13,   13,   14,   13,   32,   40,  793,   13,
+       14,   13,   33,   40,  113,   91,   92,  337,   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,
 
        39,   84,   84,   84,   28,   42,   41,   42,   42,   29,
        42,   30,   82,  106,   41,  109,   93,   25,   31,  107,
-      198,  157,   88,  134,   88,  158,   32,   89,   89,   89,
-      199,  135,   33,  203,  204,   82,  106,  789,  109,   34,
+      201,  159,   88,  135,   88,  160,   32,   89,   89,   89,
+      202,  136,   33,  206,  207,   82,  106,  794,  109,   34,
        35,   44,   44,   44,   45,   45,   46,   45,   45,   45,
        45,   45,   45,   45,   45,   47,   45,   45,   45,   45,
        45,   48,   45,   45,   49,   45,   50,   45,   51,   52,
@@ -1178,86 +1186,86 @@ static const flex_int16_t yy_nxt[1624] =
 
        73,   74,   75,   76,   77,   78,   56,   45,   45,   45,
        45,   45,   80,  104,   81,   81,   81,   80,  104,   83,
-       83,   83,  101,  112,   80,   82,   83,   83,   83,  125,
-       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,  342,  106,   45,  343,  111,
-       45,  146,   45,  155,   45,   45,   45,  132,  115,  140,
-      141,   45,   45,  142,   45,   45,   89,   89,   89,  143,
+       83,   83,  101,  112,   80,   82,   83,   83,   83,  106,
+       82,  110,  120,  215,  631,  121,  172,   82,  122,  104,
+      123,  111,  124,  632,  117,  130,  112,  173,   82,  216,
+      118,  125,  106,   82,  110,  126,  131,  102,  127,  128,
+       82,   45,  172,  133,  145,  795,  132,   45,  146,  111,
+       45,  129,   45,  173,   45,   45,   45,  137,  115,  230,
+      297,   45,   45,  231,   45,   45,  298,  138,  147,  139,
        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,  790,  170,   45,
-      364,  162,  111,   45,  172,   45,  116,  147,  791,  148,
-      365,  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,  211,  214,  226,
-
-      185,  215,  243,  227,  792,  216,   82,  173,  174,  244,
-      182,   82,  183,  212,  185,  100,  188,  186,  189,  100,
-      187,  188,  267,  100,  193,  236,  237,  265,  185,  239,
-      232,  100,  240,  241,  267,  100,  266,  100,  178,  192,
-      192,  192,  245,  261,  274,  267,  192,  192,  192,  192,
-      192,  192,  253,  265,  266,  265,  254,  270,  277,  276,
-      255,  279,  266,  319,  283,  384,  281,  274,  422,  192,
-      192,  192,  192,  192,  192,  246,  247,  248,  423,  366,
-      269,  268,  385,  373,  279,  277,  249,  276,  250,  281,
-      251,  283,  274,  252,  284,  284,  284,  360,  360,  370,
-
-      431,  284,  284,  284,  284,  284,  284,  291,  366,  367,
-      368,  373,  793,  292,  320,  285,  366,  321,  369,  390,
-      360,  361,  370,  391,  284,  284,  284,  284,  284,  284,
-      376,  376,  376,  415,  416,  595,  482,  376,  376,  376,
-      376,  376,  376,  402,  455,  377,  462,  462,  403,  456,
-      469,  483,  470,  490,  550,  551,  432,  625,  491,  626,
-      376,  376,  376,  376,  376,  376,  547,  630,  702,  686,
-      770,  552,  596,  631,  462,  471,  687,  469,  692,  470,
-      771,  550,  626,  551,  693,  625,  740,  688,  689,  794,
-      741,  795,  796,  797,  404,  690,  702,  770,  798,  405,
-
-       45,   45,   45,  771,  800,  801,  802,   45,   45,   45,
-       45,   45,   45,  803,  804,  805,  806,  807,  808,  809,
-      810,  811,  814,  815,  816,  812,  817,  818,  819,  820,
-       45,   45,   45,   45,   45,   45,  813,  821,  822,  823,
-      824,  825,  826,  827,  828,  829,  830,  831,  832,  799,
-      833,  834,  835,  836,  837,  839,  838,  840,  841,  842,
-      843,  844,  845,  846,  847,  848,  849,  850,  851,  852,
-      853,  854,  855,  856,  857,  858,  859,  860,  861,  862,
-      863,  865,  837,  838,  866,  864,  867,  868,  869,  870,
-      871,  872,  873,  874,  875,  876,  877,  878,  879,  880,
-
-      881,  882,  883,  884,  885,  886,  887,  888,  889,  890,
+       45,   45,   45,   45,  141,  142,  151,   45,  143,  109,
+      112,   45,  351,  155,  144,  352,  152,  156,  212,   45,
+      213,  153,  154,   45,  161,   45,  116,  157,  148,  110,
+      149,  796,  150,  167,  162,  163,   84,   84,   84,  111,
+      164,  174,   80,  168,   81,   81,   81,   82,  169,  174,
+      172,   88,  110,   88,  165,   82,   89,   89,   89,   80,
+      173,   83,   83,   83,   84,   84,   84,  111,  101,  174,
+       82,  182,   82,  185,  166,   82,  175,  177,   82,   89,
+       89,   89,   89,   89,   89,  100,  176,  184,  187,  191,
+
+      188,  189,  100,  797,  190,   82,  798,  182,   82,  182,
+      185,  218,  187,  102,  219,  241,  242,  244,  220,  271,
+      245,  246,  191,  184,  195,  248,  187,  188,  272,  189,
+      100,  190,  249,  258,  100,  196,  272,  259,  100,  270,
+      187,  260,  236,  190,  270,  271,  100,  250,  271,  281,
+      100,  272,  100,  180,  194,  194,  194,  799,  393,  275,
+      279,  194,  194,  194,  194,  194,  194,  270,  326,  282,
+      266,  284,  273,  288,  274,  394,  286,  281,  375,  800,
+      251,  252,  253,  279,  194,  194,  194,  194,  194,  194,
+      801,  254,  279,  255,  284,  256,  282,  369,  257,  286,
+
+      288,  289,  289,  289,  369,  379,  373,  375,  289,  289,
+      289,  289,  289,  289,  382,  291,  374,  376,  377,  327,
+      369,  399,  328,  425,  426,  400,  378,  370,  379,  375,
+      432,  289,  289,  289,  289,  289,  289,  442,  473,  473,
+      433,  412,  382,  385,  385,  385,  413,  493,  610,  641,
+      385,  385,  385,  385,  385,  385,  466,  480,  386,  481,
+      502,  467,  494,  563,  560,  503,  473,  482,  564,  565,
+      802,  803,  641,  385,  385,  385,  385,  385,  385,  804,
+      790,  645,  703,  640,  480,  611,  481,  646,  719,  704,
+      563,  805,  414,  443,  705,  706,  564,  415,   45,   45,
+
+       45,  806,  707,  790,  807,   45,   45,   45,   45,   45,
+       45,  640,  709,  758,  789,  808,  719,  759,  710,  809,
+      810,  811,  812,  813,  814,  815,  819,  820,   45,   45,
+       45,   45,   45,   45,  816,  821,  822,  823,  824,  817,
+      825,  789,  826,  827,  828,  829,  830,  831,  832,  834,
+      835,  836,  837,  838,  839,  840,  841,  842,  843,  833,
+      844,  845,  846,  847,  848,  849,  850,  851,  852,  853,
+      854,  855,  856,  857,  859,  858,  860,  861,  862,  863,
+      864,  865,  866,  867,  868,  869,  870,  871,  872,  873,
+      818,  874,  875,  876,  877,  878,  879,  880,  881,  882,
+
+      883,  857,  858,  885,  886,  884,  887,  888,  889,  890,
       891,  892,  893,  894,  895,  896,  897,  898,  899,  900,
       901,  902,  903,  904,  905,  906,  907,  908,  909,  910,
       911,  912,  913,  914,  915,  916,  917,  918,  919,  920,
-      898,  921,  922,  923,  924,  925,  899,  926,  927,  928,
-      929,  930,  931,  932,  933,  934,  935,  936,  937,  938,
-      939,  941,  942,  943,  944,  945,  946,  947,  948,  949,
-      950,  951,  952,  953,  954,  956,  957,  958,  959,  960,
-      961,  962,  963,  964,  965,  966,  967,  968,  969,  970,
-      971,  972,  973,  974,  975,  976,  977,  979,  950,  980,
-
-      981,  982,  983,  984,  978,  985,  986,  987,  988,  989,
-      990,  940,  991,  992,  993,  994,  955,  995,  997,  998,
-      999, 1000,  996, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
-     1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
-     1018,  997, 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,
+      921,  922,  923,  924,  925,  926,  927,  928,  929,  930,
+      931,  932,  933,  934,  935,  936,  937,  938,  939,  940,
+      941,  919,  942,  943,  944,  945,  946,  920,  947,  948,
+      949,  950,  951,  952,  953,  954,  955,  956,  957,  958,
+      959,  960,  961,  963,  964,  965,  966,  967,  968,  969,
+      970,  971,  972,  973,  974,  975,  976,  978,  979,  980,
+
+      981,  982,  983,  984,  985,  986,  987,  988,  989,  990,
+      991,  992,  993,  994,  995,  996,  997,  998,  999, 1001,
+      972, 1002, 1003, 1004, 1005, 1006, 1000, 1007, 1008, 1009,
+     1010, 1011, 1012,  962, 1013, 1014, 1015, 1016,  977, 1017,
+     1019, 1020, 1021, 1022, 1018, 1023, 1024, 1025, 1026, 1027,
+     1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037,
+     1038, 1039, 1040, 1019, 1041, 1042, 1043, 1044, 1045, 1046,
      1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,
-     1057, 1058, 1032, 1059, 1060, 1061, 1062, 1063, 1064, 1065,
-     1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075,
-
-     1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085,
-     1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1067,
-     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,
+     1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066,
+     1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076,
+
+     1077, 1078, 1079, 1080, 1054, 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, 1089, 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,
@@ -1265,85 +1273,87 @@ static const flex_int16_t yy_nxt[1624] =
      1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174,
 
      1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184,
-     1185, 1186, 1187, 1188,   12,   12,   12,   12,   12,   36,
-       36,   36,   36,   36,   79,  272,   79,   79,   79,   98,
-      363,   98,  459,   98,  100,  100,  100,  100,  100,  114,
-      114,  114,  114,  114,  169,  100,  169,  169,  169,  190,
-      190,  190,  786,  785,  784,  783,  782,  781,  780,  779,
-      778,  777,  776,  775,  774,  773,  772,  769,  768,  767,
-      766,  765,  764,  763,  762,  761,  760,  759,  758,  757,
-      756,  755,  754,  753,  752,  751,  750,  749,  748,  747,
-      746,  745,  744,  743,  742,  739,  738,  737,  736,  735,
-
-      734,  733,  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,  701,  700,  699,  698,  697,  696,  695,  694,
-      691,  685,  684,  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,  629,  628,  627,  624,  623,
-
-      622,  621,  620,  619,  618,  615,  614,  613,  612,  611,
-      610,  609,  608,  607,  606,  605,  604,  603,  602,  601,
-      600,  599,  598,  597,  594,  593,  592,  591,  590,  589,
-      588,  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,  549,  548,  547,  546,
-      545,  544,  543,  542,  541,  540,  539,  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,  489,  488,  487,  486,  485,  484,
-      481,  480,  479,  478,  477,  476,  475,  474,  473,  472,
-      468,  467,  466,  465,  464,  463,  461,  460,  458,  457,
-      454,  453,  452,  451,  450,  449,  448,  447,  446,  445,
-      444,  443,  442,  441,  440,  439,  438,  437,  436,  435,
-      434,  433,  430,  429,  428,  427,  426,  425,  424,  421,
-      420,  419,  418,  417,  414,  413,  412,  411,  410,  409,
-      408,  407,  406,  401,  400,  399,  398,  397,  396,  395,
-
-      394,  393,  392,  389,  388,  387,  386,  383,  382,  381,
-      380,  379,  378,  375,  374,  372,  371,  362,  359,  358,
-      357,  356,  355,  354,  353,  352,  351,  350,  349,  348,
-      347,  346,  345,  344,  341,  340,  339,  338,  337,  336,
-      335,  334,  333,  332,  331,  330,  329,  328,  327,  326,
-      325,  324,  323,  322,  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,
-      290,  289,  288,  287,  286,  191,  282,  280,  278,  275,
-      273,  271,  264,  263,  262,  260,  259,  258,  257,  256,
-
-      242,  238,  235,  234,  233,  231,  230,  229,  228,  225,
-      224,  223,  222,  221,  220,  219,  218,  217,  213,  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,
-     1189,   11, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189
+     1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194,
+     1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204,
+     1205, 1206, 1207, 1208, 1209, 1210,   12,   12,   12,   12,
+       12,   36,   36,   36,   36,   36,   79,  277,   79,   79,
+       79,   98,  372,   98,  470,   98,  100,  100,  100,  100,
+      100,  114,  114,  114,  114,  114,  171,  100,  171,  171,
+      171,  192,  192,  192,  791,  788,  787,  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,  760,  757,  756,  755,  754,  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,  718,  717,  716,  715,  714,  713,  712,  711,
+      708,  702,  701,  700,  699,  698,  697,  696,  695,  694,
+      693,  692,  691,  690,  689,  688,  687,  686,  685,  684,
+      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,  644,  643,  642,
+      639,  638,  637,  636,  635,  634,  633,  630,  629,  628,
+      627,  626,  625,  624,  623,  622,  621,  620,  619,  618,
+      617,  616,  615,  614,  613,  612,  609,  608,  607,  606,
+      605,  604,  603,  602,  601,  600,  599,  598,  597,  596,
+      595,  594,  593,  592,  591,  590,  589,  588,  587,  586,
+      585,  584,  583,  582,  581,  580,  579,  578,  577,  576,
+      575,  574,  573,  572,  571,  570,  569,  568,  567,  566,
+      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,  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,  501,
+      500,  499,  498,  497,  496,  495,  492,  491,  490,  489,
+      488,  487,  486,  485,  484,  483,  479,  478,  477,  476,
+      475,  474,  472,  471,  469,  468,  465,  464,  463,  462,
+      461,  460,  459,  458,  457,  456,  455,  454,  453,  452,
+      451,  450,  449,  448,  447,  446,  445,  444,  441,  440,
+      439,  438,  437,  436,  435,  434,  431,  430,  429,  428,
+
+      427,  424,  423,  422,  421,  420,  419,  418,  417,  416,
+      411,  410,  409,  408,  407,  406,  405,  404,  403,  402,
+      401,  398,  397,  396,  395,  392,  391,  390,  389,  388,
+      387,  384,  383,  381,  380,  371,  368,  367,  366,  365,
+      364,  363,  362,  361,  360,  359,  358,  357,  356,  355,
+      354,  353,  350,  349,  348,  347,  346,  345,  344,  343,
+      342,  341,  340,  339,  338,  335,  334,  333,  332,  331,
+      330,  329,  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,  296,
+
+      295,  294,  293,  292,  290,  193,  287,  285,  283,  280,
+      278,  276,  269,  268,  267,  265,  264,  263,  262,  261,
+      247,  243,  240,  239,  238,  237,  235,  234,  233,  232,
+      229,  228,  227,  226,  225,  224,  223,  222,  221,  217,
+      214,  211,  210,  209,  208,  205,  204,  203,  200,  199,
+      198,  197,  193,  186,  183,  181,  179,  178,  170,  158,
+      140,  134,  119,  108,  105,  103,   43,   99,   97,   96,
+       87,   43, 1211,   11, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211
     } ;
 
-static const flex_int16_t yy_chk[1624] =
+static const flex_int16_t yy_chk[1646] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,   21,  540,
-        3,    3,    3,   21,    1,    1,    3,    0,  540,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,   21,  239,
+        3,    3,    3,   21,    1,    1,    3,  721,    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,  718,    8,
-        8,    8,    1,    8,   56,   27,   28,  719,   26,    1,
+        6,    6,    6,    7,    7,    7,    1,    7,  722,    8,
+        8,    8,    1,    8,   56,   27,   28,  239,   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,
@@ -1351,7 +1361,7 @@ static const flex_int16_t yy_chk[1624] =
         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,  720,   53,    2,
+      122,   65,    2,  126,  126,   20,   50,  723,   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,
@@ -1361,161 +1371,163 @@ static const flex_int16_t yy_chk[1624] =
 
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   17,   48,   17,   17,   17,   19,   58,   19,
-       19,   19,   44,   55,   22,   17,   22,   22,   22,   61,
-       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,  248,   63,   45,  248,   54,
-       45,   69,   45,   72,   45,   45,   45,   63,   57,   68,
-       68,   45,   45,   68,   45,   57,   88,   88,   88,   68,
+       19,   19,   44,   55,   22,   17,   22,   22,   22,   63,
+       19,   54,   60,  133,  553,   60,   90,   22,   60,   48,
+       60,   54,   60,  553,   58,   62,   55,   91,   17,  133,
+       58,   61,   63,   19,   54,   61,   62,   44,   61,   61,
+       22,   45,   90,   63,   69,  724,   62,   45,   69,   54,
+       45,   61,   45,   91,   45,   45,   45,   66,   57,  145,
+      202,   45,   45,  145,   45,   57,  202,   66,   69,   66,
        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,  721,   90,   57,
-      273,   75,   76,   57,   95,   57,   57,   70,  722,   70,
-      273,   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,  132,  134,  144,
-
-      149,  134,  157,  144,  723,  134,   84,   93,   94,  157,
-      106,   83,  107,  132,  109,  102,  165,  110,  113,  102,
-      111,  112,  172,  102,  117,  153,  153,  170,  149,  155,
-      149,  102,  155,  155,  175,  102,  171,  102,  102,  116,
-      116,  116,  158,  165,  180,  172,  116,  116,  116,  116,
-      116,  116,  159,  173,  174,  170,  159,  175,  183,  182,
-      159,  185,  171,  227,  189,  292,  187,  180,  325,  116,
-      116,  116,  116,  116,  116,  158,  158,  158,  325,  274,
-      174,  173,  292,  279,  185,  183,  158,  182,  158,  187,
-      158,  189,  193,  158,  192,  192,  192,  265,  268,  276,
-
-      333,  192,  192,  192,  192,  192,  192,  199,  274,  275,
-      275,  279,  724,  199,  227,  193,  285,  227,  275,  298,
-      265,  268,  276,  298,  192,  192,  192,  192,  192,  192,
-      284,  284,  284,  319,  319,  517,  390,  284,  284,  284,
-      284,  284,  284,  309,  358,  285,  366,  377,  309,  358,
-      375,  390,  375,  398,  469,  470,  333,  550,  398,  551,
-      284,  284,  284,  284,  284,  284,  471,  555,  626,  612,
-      701,  471,  517,  555,  366,  377,  612,  375,  615,  375,
-      702,  469,  551,  470,  615,  550,  669,  613,  613,  725,
-      669,  727,  728,  729,  309,  613,  626,  701,  729,  309,
-
-      376,  376,  376,  702,  730,  732,  733,  376,  376,  376,
-      376,  376,  376,  734,  735,  736,  737,  738,  739,  740,
-      741,  742,  744,  746,  747,  743,  748,  749,  751,  752,
-      376,  376,  376,  376,  376,  376,  743,  753,  754,  755,
-      756,  757,  758,  759,  760,  761,  763,  764,  765,  729,
-      766,  767,  768,  769,  770,  772,  771,  773,  774,  775,
-      777,  778,  779,  780,  781,  782,  784,  785,  786,  787,
-      788,  789,  790,  791,  792,  793,  794,  795,  796,  798,
-      799,  800,  770,  771,  801,  799,  802,  803,  804,  805,
-      806,  807,  808,  809,  810,  811,  812,  813,  814,  815,
-
-      816,  817,  819,  820,  821,  822,  823,  824,  826,  827,
-      829,  830,  831,  832,  833,  834,  835,  837,  838,  839,
-      840,  842,  843,  844,  845,  848,  849,  850,  851,  852,
-      853,  854,  855,  856,  857,  858,  859,  860,  862,  864,
-      837,  866,  867,  868,  869,  870,  838,  872,  873,  874,
-      876,  877,  878,  881,  882,  883,  884,  885,  886,  887,
-      888,  889,  890,  891,  892,  893,  894,  895,  896,  897,
-      898,  899,  900,  901,  902,  903,  904,  905,  906,  907,
-      908,  909,  910,  912,  913,  914,  915,  916,  917,  918,
-      919,  920,  921,  922,  923,  924,  925,  926,  898,  929,
-
-      930,  931,  932,  933,  925,  934,  935,  936,  938,  939,
-      940,  888,  942,  946,  947,  948,  902,  949,  950,  952,
-      953,  955,  949,  956,  957,  958,  959,  960,  962,  963,
-      964,  965,  966,  967,  968,  969,  970,  972,  973,  975,
-      976,  950,  977,  978,  980,  981,  982,  983,  986,  988,
-      989,  991,  992,  994,  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,  997, 1024, 1025, 1026, 1027, 1028, 1029, 1030,
-     1031, 1032, 1033, 1036, 1039, 1040, 1043, 1044, 1045, 1046,
-
-     1047, 1048, 1050, 1052, 1054, 1055, 1057, 1058, 1059, 1060,
-     1061, 1062, 1063, 1064, 1066, 1067, 1068, 1070, 1071, 1032,
-     1072, 1073, 1074, 1075, 1077, 1078, 1080, 1081, 1082, 1083,
-     1084, 1085, 1086, 1087, 1089, 1092, 1093, 1095, 1096, 1098,
-     1099, 1100, 1101, 1103, 1104, 1105, 1106, 1107, 1109, 1110,
-     1111, 1112, 1113, 1114, 1115, 1117, 1118, 1119, 1121, 1122,
-     1123, 1124, 1125, 1126, 1127, 1128, 1129, 1131, 1133, 1134,
-     1135, 1137, 1138, 1139, 1141, 1142, 1143, 1145, 1146, 1147,
-     1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157,
-     1158, 1159, 1160, 1161, 1162, 1163, 1165, 1166, 1167, 1168,
-
-     1169, 1170, 1174, 1175, 1176, 1178, 1179, 1180, 1181, 1182,
-     1183, 1184, 1186, 1187, 1190, 1190, 1190, 1190, 1190, 1191,
-     1191, 1191, 1191, 1191, 1192, 1198, 1192, 1192, 1192, 1193,
-     1199, 1193, 1200, 1193, 1194, 1194, 1194, 1194, 1194, 1195,
-     1195, 1195, 1195, 1195, 1196, 1201, 1196, 1196, 1196, 1197,
-     1197, 1197,  717,  716,  715,  714,  713,  712,  711,  710,
-      709,  708,  707,  706,  705,  704,  703,  699,  698,  697,
-      696,  695,  693,  692,  691,  690,  689,  688,  687,  686,
-      685,  684,  683,  682,  681,  680,  679,  678,  677,  676,
-      675,  673,  672,  671,  670,  668,  667,  666,  663,  662,
-
-      661,  658,  657,  656,  655,  654,  653,  652,  651,  650,
-      649,  648,  647,  646,  644,  643,  642,  641,  640,  639,
-      638,  637,  636,  635,  634,  633,  632,  631,  630,  629,
-      628,  627,  625,  623,  622,  621,  620,  619,  618,  617,
-      614,  611,  610,  609,  608,  607,  606,  605,  604,  603,
-      602,  601,  600,  599,  598,  597,  596,  594,  593,  592,
-      591,  590,  588,  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,  554,  553,  552,  549,  548,
-
-      546,  545,  543,  542,  541,  538,  537,  536,  535,  534,
-      533,  532,  530,  529,  528,  527,  526,  525,  524,  523,
-      521,  520,  519,  518,  516,  515,  514,  513,  511,  510,
-      509,  508,  507,  506,  505,  504,  503,  502,  501,  500,
-      499,  498,  497,  496,  495,  494,  493,  492,  491,  489,
-      488,  487,  486,  485,  484,  483,  482,  481,  480,  479,
-      478,  477,  476,  475,  474,  473,  467,  465,  462,  461,
-      460,  458,  457,  456,  454,  451,  450,  449,  448,  447,
-      446,  445,  444,  443,  442,  441,  440,  439,  438,  437,
-      436,  435,  434,  432,  430,  429,  428,  427,  426,  425,
-
-      424,  423,  422,  420,  419,  418,  417,  416,  415,  414,
-      413,  412,  411,  410,  409,  408,  407,  406,  405,  404,
-      403,  401,  400,  399,  397,  396,  395,  394,  393,  391,
-      389,  388,  386,  385,  384,  383,  381,  380,  379,  378,
-      373,  372,  370,  369,  368,  367,  365,  364,  362,  359,
-      357,  355,  354,  353,  352,  351,  350,  349,  348,  347,
-      346,  345,  344,  343,  342,  341,  340,  339,  337,  336,
-      335,  334,  332,  331,  330,  329,  328,  327,  326,  324,
-      323,  322,  321,  320,  318,  317,  316,  315,  314,  313,
-      312,  311,  310,  308,  307,  306,  305,  304,  303,  302,
-
-      301,  300,  299,  297,  296,  295,  294,  291,  290,  289,
-      288,  287,  286,  283,  281,  278,  277,  271,  264,  263,
-      262,  261,  260,  259,  258,  257,  256,  255,  254,  253,
-      252,  251,  250,  249,  247,  246,  245,  244,  243,  242,
-      241,  240,  239,  238,  237,  236,  235,  234,  233,  232,
-      231,  230,  229,  228,  226,  225,  224,  223,  222,  221,
-      220,  219,  217,  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,  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, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189
+       45,   45,   45,   57,   68,   68,   71,   57,   68,   70,
+       77,   57,  253,   72,   68,  253,   71,   72,  131,   57,
+      131,   71,   71,   57,   75,   57,   57,   72,   70,   76,
+       70,  725,   70,   77,   75,   75,   80,   80,   80,   76,
+       75,   92,   81,   77,   81,   81,   81,   80,   77,   95,
+       93,   82,   76,   82,   76,   81,   82,   82,   82,   83,
+       94,   83,   83,   83,   84,   84,   84,   76,  100,   92,
+       80,  104,   83,  107,   76,   84,   93,   95,   81,   88,
+       88,   88,   89,   89,   89,  102,   94,  106,  109,  113,
+
+      110,  111,  102,  726,  112,   83,  727,  117,   84,  104,
+      107,  135,  150,  100,  135,  155,  155,  157,  135,  173,
+      157,  157,  113,  106,  117,  159,  109,  110,  174,  111,
+      102,  112,  159,  161,  102,  117,  177,  161,  102,  172,
+      150,  161,  150,  167,  175,  173,  102,  160,  176,  184,
+      102,  174,  102,  102,  116,  116,  116,  728,  298,  177,
+      182,  116,  116,  116,  116,  116,  116,  172,  231,  185,
+      167,  187,  175,  191,  176,  298,  189,  184,  279,  729,
+      160,  160,  160,  182,  116,  116,  116,  116,  116,  116,
+      730,  160,  196,  160,  187,  160,  185,  270,  160,  189,
+
+      191,  194,  194,  194,  273,  281,  278,  279,  194,  194,
+      194,  194,  194,  194,  284,  196,  278,  280,  280,  231,
+      270,  304,  231,  326,  326,  304,  280,  273,  281,  291,
+      332,  194,  194,  194,  194,  194,  194,  342,  375,  386,
+      332,  316,  284,  289,  289,  289,  316,  399,  530,  564,
+      289,  289,  289,  289,  289,  289,  367,  384,  291,  384,
+      408,  367,  399,  480,  482,  408,  375,  386,  481,  482,
+      731,  732,  564,  289,  289,  289,  289,  289,  289,  733,
+      719,  568,  627,  563,  384,  530,  384,  568,  641,  627,
+      480,  735,  316,  342,  628,  628,  481,  316,  385,  385,
+
+      385,  736,  628,  719,  737,  385,  385,  385,  385,  385,
+      385,  563,  630,  685,  718,  738,  641,  685,  630,  739,
+      740,  741,  742,  743,  745,  746,  748,  750,  385,  385,
+      385,  385,  385,  385,  747,  751,  752,  753,  754,  747,
+      755,  718,  756,  757,  758,  759,  760,  761,  762,  763,
+      765,  766,  767,  768,  770,  771,  772,  773,  774,  762,
+      775,  776,  777,  778,  779,  780,  782,  783,  784,  785,
+      786,  787,  788,  789,  791,  790,  792,  793,  794,  796,
+      797,  798,  799,  800,  801,  803,  804,  805,  806,  807,
+      747,  808,  809,  810,  811,  812,  813,  814,  815,  817,
+
+      818,  789,  790,  819,  820,  818,  821,  822,  823,  824,
+      825,  826,  827,  828,  829,  830,  831,  832,  833,  834,
+      835,  836,  837,  839,  840,  841,  842,  843,  844,  846,
+      847,  849,  850,  851,  852,  853,  854,  855,  857,  858,
+      859,  860,  862,  863,  864,  865,  868,  869,  870,  871,
+      872,  873,  874,  875,  876,  877,  878,  879,  880,  882,
+      884,  857,  886,  887,  888,  889,  890,  858,  892,  893,
+      894,  896,  897,  898,  899,  902,  903,  904,  905,  906,
+      907,  908,  909,  910,  911,  912,  913,  914,  915,  916,
+      917,  918,  919,  920,  921,  922,  923,  924,  925,  926,
+
+      927,  928,  929,  930,  931,  933,  934,  935,  936,  937,
+      938,  939,  940,  941,  942,  943,  944,  945,  946,  947,
+      919,  951,  952,  953,  954,  955,  946,  956,  957,  958,
+      960,  961,  962,  909,  964,  968,  969,  970,  923,  971,
+      972,  974,  975,  977,  971,  978,  979,  980,  981,  982,
+      984,  985,  986,  987,  988,  989,  990,  991,  992,  994,
+      995,  997,  998,  972,  999, 1000, 1002, 1003, 1004, 1005,
+     1008, 1010, 1011, 1013, 1014, 1016, 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, 1019, 1046, 1047, 1048, 1049, 1050,
+     1051, 1052, 1053, 1054, 1055, 1058, 1061, 1062, 1065, 1066,
+     1067, 1068, 1069, 1070, 1072, 1074, 1076, 1077, 1079, 1080,
+     1081, 1082, 1083, 1084, 1085, 1086, 1088, 1089, 1090, 1092,
+     1093, 1054, 1094, 1095, 1096, 1097, 1099, 1100, 1102, 1103,
+     1104, 1105, 1106, 1107, 1108, 1109, 1111, 1114, 1115, 1117,
+     1118, 1120, 1121, 1122, 1123, 1125, 1126, 1127, 1128, 1129,
+     1131, 1132, 1133, 1134, 1135, 1136, 1137, 1139, 1140, 1141,
+     1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1153,
+     1155, 1156, 1157, 1159, 1160, 1161, 1163, 1164, 1165, 1167,
+
+     1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177,
+     1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1187, 1188,
+     1189, 1190, 1191, 1192, 1196, 1197, 1198, 1200, 1201, 1202,
+     1203, 1204, 1205, 1206, 1208, 1209, 1212, 1212, 1212, 1212,
+     1212, 1213, 1213, 1213, 1213, 1213, 1214, 1220, 1214, 1214,
+     1214, 1215, 1221, 1215, 1222, 1215, 1216, 1216, 1216, 1216,
+     1216, 1217, 1217, 1217, 1217, 1217, 1218, 1223, 1218, 1218,
+     1218, 1219, 1219, 1219,  720,  716,  715,  714,  713,  712,
+      710,  709,  708,  707,  706,  705,  704,  703,  702,  701,
+      700,  699,  698,  697,  696,  695,  694,  693,  692,  690,
+
+      689,  688,  687,  686,  684,  683,  682,  679,  678,  677,
+      674,  673,  672,  671,  670,  669,  668,  667,  666,  665,
+      664,  663,  662,  660,  659,  658,  657,  656,  655,  654,
+      653,  652,  651,  650,  649,  648,  647,  646,  645,  644,
+      643,  642,  640,  638,  637,  636,  635,  634,  633,  632,
+      629,  626,  625,  624,  623,  622,  621,  620,  619,  618,
+      617,  616,  615,  614,  613,  612,  611,  609,  608,  607,
+      606,  605,  604,  602,  601,  600,  599,  598,  597,  596,
+      595,  594,  593,  592,  591,  590,  589,  588,  587,  586,
+      585,  584,  583,  582,  581,  580,  579,  578,  577,  576,
+
+      575,  574,  573,  572,  571,  570,  569,  567,  566,  565,
+      562,  561,  559,  558,  556,  555,  554,  551,  550,  549,
+      548,  547,  546,  545,  543,  542,  541,  540,  539,  538,
+      537,  536,  534,  533,  532,  531,  529,  528,  527,  526,
+      525,  523,  522,  521,  520,  519,  518,  517,  516,  515,
+      514,  513,  512,  511,  510,  509,  508,  507,  506,  505,
+      504,  503,  501,  500,  499,  498,  497,  496,  495,  494,
+      493,  492,  491,  490,  489,  488,  487,  486,  485,  484,
+      478,  476,  473,  472,  471,  469,  468,  467,  465,  462,
+      461,  460,  459,  458,  457,  456,  455,  454,  453,  452,
+
+      451,  450,  449,  448,  447,  446,  445,  443,  441,  440,
+      439,  438,  437,  436,  435,  434,  433,  432,  430,  429,
+      428,  427,  426,  425,  424,  423,  422,  421,  420,  419,
+      418,  417,  416,  415,  414,  413,  411,  410,  409,  407,
+      406,  405,  404,  403,  401,  400,  398,  397,  395,  394,
+      393,  392,  390,  389,  388,  387,  382,  381,  379,  378,
+      377,  376,  374,  373,  371,  368,  366,  364,  363,  362,
+      361,  360,  359,  358,  357,  356,  355,  354,  353,  352,
+      351,  350,  349,  348,  346,  345,  344,  343,  341,  340,
+      339,  338,  337,  336,  335,  333,  331,  330,  329,  328,
+
+      327,  325,  324,  323,  322,  321,  320,  319,  318,  317,
+      315,  314,  313,  312,  311,  310,  309,  308,  307,  306,
+      305,  303,  302,  301,  300,  297,  296,  295,  294,  293,
+      292,  288,  286,  283,  282,  276,  269,  268,  267,  266,
+      265,  264,  263,  262,  261,  260,  259,  258,  257,  256,
+      255,  254,  252,  251,  250,  249,  248,  247,  246,  245,
+      244,  243,  242,  241,  240,  238,  237,  236,  235,  234,
+      233,  232,  230,  229,  228,  227,  226,  225,  224,  223,
+      221,  220,  219,  218,  217,  216,  215,  214,  213,  212,
+      211,  210,  209,  208,  207,  206,  205,  204,  203,  201,
+
+      200,  199,  198,  197,  195,  192,  190,  188,  186,  183,
+      181,  178,  170,  169,  168,  166,  165,  164,  163,  162,
+      158,  156,  154,  153,  152,  151,  149,  148,  147,  146,
+      144,  143,  142,  141,  140,  139,  138,  137,  136,  134,
+      132,  130,  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, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1524,24 +1536,25 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[148] =
+static const flex_int16_t yy_rule_linenum[152] =
     {   0,
       133,  135,  137,  142,  143,  148,  149,  150,  162,  165,
       170,  177,  186,  195,  204,  213,  223,  232,  241,  250,
       259,  268,  279,  288,  297,  306,  315,  325,  335,  345,
       355,  365,  375,  385,  395,  405,  415,  425,  435,  444,
       453,  462,  476,  491,  500,  509,  518,  527,  536,  545,
-      554,  563,  572,  581,  591,  600,  609,  618,  627,  636,
-      645,  654,  663,  672,  681,  691,  701,  711,  720,  730,
-      740,  750,  760,  770,  779,  789,  798,  807,  816,  825,
-      834,  844,  854,  863,  872,  881,  890,  899,  908,  917,
+      554,  563,  572,  581,  590,  599,  608,  617,  627,  636,
+      645,  654,  663,  672,  681,  690,  699,  708,  717,  727,
+      737,  747,  756,  766,  776,  786,  796,  806,  815,  825,
+      834,  843,  852,  861,  870,  880,  890,  899,  908,  917,
       926,  935,  944,  953,  962,  971,  980,  989,  998, 1007,
 
      1016, 1025, 1034, 1043, 1052, 1061, 1070, 1079, 1088, 1097,
-     1106, 1116, 1126, 1136, 1146, 1156, 1166, 1176, 1186, 1196,
-     1205, 1214, 1223, 1232, 1241, 1251, 1261, 1273, 1284, 1297,
-     1395, 1400, 1405, 1410, 1411, 1412, 1413, 1414, 1415, 1417,
-     1435, 1448, 1453, 1457, 1459, 1461, 1463
+     1106, 1115, 1124, 1133, 1142, 1152, 1162, 1172, 1182, 1192,
+     1202, 1212, 1222, 1232, 1241, 1250, 1259, 1268, 1277, 1287,
+     1297, 1309, 1320, 1333, 1431, 1436, 1441, 1446, 1447, 1448,
+     1449, 1450, 1451, 1453, 1471, 1484, 1489, 1493, 1495, 1497,
+     1499
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1588,7 +1601,7 @@ unsigned int comment_start_line = 0;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1591 "dhcp4_lexer.cc"
+#line 1604 "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
@@ -1614,8 +1627,8 @@ unsigned int comment_start_line = 0;
    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 1617 "dhcp4_lexer.cc"
-#line 1618 "dhcp4_lexer.cc"
+#line 1630 "dhcp4_lexer.cc"
+#line 1631 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1937,7 +1950,7 @@ YY_DECL
     }
 
 
-#line 1940 "dhcp4_lexer.cc"
+#line 1953 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1966,13 +1979,13 @@ yy_match:
                        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 >= 1190 )
+                               if ( yy_current_state >= 1212 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1189 );
+               while ( yy_current_state != 1211 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1991,13 +2004,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 148 )
+                       else if ( yy_act < 152 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 148 )
+                       else if ( yy_act == 152 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 149 )
+                       else if ( yy_act == 153 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2634,6 +2647,54 @@ YY_RULE_SETUP
 case 54:
 YY_RULE_SETUP
 #line 581 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::RESERVATION_MODE:
+        return isc::dhcp::Dhcp4Parser::make_DISABLED(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("disabled", driver.loc_);
+    }
+}
+       YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 590 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::RESERVATION_MODE:
+        return isc::dhcp::Dhcp4Parser::make_DISABLED(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("off", driver.loc_);
+    }
+}
+       YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 599 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::RESERVATION_MODE:
+        return isc::dhcp::Dhcp4Parser::make_OUT_OF_POOL(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("out-of-pool", driver.loc_);
+    }
+}
+       YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 608 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::RESERVATION_MODE:
+        return isc::dhcp::Dhcp4Parser::make_ALL(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("all", driver.loc_);
+    }
+}
+       YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 617 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2644,9 +2705,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 55:
+case 59:
 YY_RULE_SETUP
-#line 591 "dhcp4_lexer.ll"
+#line 627 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2656,9 +2717,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 56:
+case 60:
 YY_RULE_SETUP
-#line 600 "dhcp4_lexer.ll"
+#line 636 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -2668,9 +2729,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 57:
+case 61:
 YY_RULE_SETUP
-#line 609 "dhcp4_lexer.ll"
+#line 645 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGING:
@@ -2680,9 +2741,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 58:
+case 62:
 YY_RULE_SETUP
-#line 618 "dhcp4_lexer.ll"
+#line 654 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2692,9 +2753,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 59:
+case 63:
 YY_RULE_SETUP
-#line 627 "dhcp4_lexer.ll"
+#line 663 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2704,9 +2765,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 60:
+case 64:
 YY_RULE_SETUP
-#line 636 "dhcp4_lexer.ll"
+#line 672 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2716,9 +2777,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 61:
+case 65:
 YY_RULE_SETUP
-#line 645 "dhcp4_lexer.ll"
+#line 681 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2728,9 +2789,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 62:
+case 66:
 YY_RULE_SETUP
-#line 654 "dhcp4_lexer.ll"
+#line 690 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2740,9 +2801,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 63:
+case 67:
 YY_RULE_SETUP
-#line 663 "dhcp4_lexer.ll"
+#line 699 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2752,9 +2813,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 64:
+case 68:
 YY_RULE_SETUP
-#line 672 "dhcp4_lexer.ll"
+#line 708 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2764,9 +2825,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 65:
+case 69:
 YY_RULE_SETUP
-#line 681 "dhcp4_lexer.ll"
+#line 717 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2777,9 +2838,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 66:
+case 70:
 YY_RULE_SETUP
-#line 691 "dhcp4_lexer.ll"
+#line 727 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2790,9 +2851,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 67:
+case 71:
 YY_RULE_SETUP
-#line 701 "dhcp4_lexer.ll"
+#line 737 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -2803,9 +2864,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 68:
+case 72:
 YY_RULE_SETUP
-#line 711 "dhcp4_lexer.ll"
+#line 747 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2815,9 +2876,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 73:
 YY_RULE_SETUP
-#line 720 "dhcp4_lexer.ll"
+#line 756 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2828,9 +2889,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 74:
 YY_RULE_SETUP
-#line 730 "dhcp4_lexer.ll"
+#line 766 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2841,9 +2902,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 75:
 YY_RULE_SETUP
-#line 740 "dhcp4_lexer.ll"
+#line 776 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2854,9 +2915,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 76:
 YY_RULE_SETUP
-#line 750 "dhcp4_lexer.ll"
+#line 786 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2867,9 +2928,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 77:
 YY_RULE_SETUP
-#line 760 "dhcp4_lexer.ll"
+#line 796 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2880,9 +2941,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 78:
 YY_RULE_SETUP
-#line 770 "dhcp4_lexer.ll"
+#line 806 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATIONS:
@@ -2892,9 +2953,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 79:
 YY_RULE_SETUP
-#line 779 "dhcp4_lexer.ll"
+#line 815 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2905,9 +2966,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 80:
 YY_RULE_SETUP
-#line 789 "dhcp4_lexer.ll"
+#line 825 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -2917,9 +2978,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 81:
 YY_RULE_SETUP
-#line 798 "dhcp4_lexer.ll"
+#line 834 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2929,9 +2990,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 82:
 YY_RULE_SETUP
-#line 807 "dhcp4_lexer.ll"
+#line 843 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2941,9 +3002,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 83:
 YY_RULE_SETUP
-#line 816 "dhcp4_lexer.ll"
+#line 852 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2953,9 +3014,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 84:
 YY_RULE_SETUP
-#line 825 "dhcp4_lexer.ll"
+#line 861 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2965,9 +3026,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 85:
 YY_RULE_SETUP
-#line 834 "dhcp4_lexer.ll"
+#line 870 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -2978,9 +3039,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 86:
 YY_RULE_SETUP
-#line 844 "dhcp4_lexer.ll"
+#line 880 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2990,9 +3051,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 87:
 YY_RULE_SETUP
-#line 854 "dhcp4_lexer.ll"
+#line 890 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3002,9 +3063,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 88:
 YY_RULE_SETUP
-#line 863 "dhcp4_lexer.ll"
+#line 899 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3014,9 +3075,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 89:
 YY_RULE_SETUP
-#line 872 "dhcp4_lexer.ll"
+#line 908 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3026,9 +3087,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 90:
 YY_RULE_SETUP
-#line 881 "dhcp4_lexer.ll"
+#line 917 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3038,9 +3099,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 91:
 YY_RULE_SETUP
-#line 890 "dhcp4_lexer.ll"
+#line 926 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3050,9 +3111,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 92:
 YY_RULE_SETUP
-#line 899 "dhcp4_lexer.ll"
+#line 935 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3062,9 +3123,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 93:
 YY_RULE_SETUP
-#line 908 "dhcp4_lexer.ll"
+#line 944 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3074,9 +3135,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 94:
 YY_RULE_SETUP
-#line 917 "dhcp4_lexer.ll"
+#line 953 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3086,9 +3147,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 95:
 YY_RULE_SETUP
-#line 926 "dhcp4_lexer.ll"
+#line 962 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3098,9 +3159,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 96:
 YY_RULE_SETUP
-#line 935 "dhcp4_lexer.ll"
+#line 971 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3110,9 +3171,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 97:
 YY_RULE_SETUP
-#line 944 "dhcp4_lexer.ll"
+#line 980 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3122,9 +3183,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 98:
 YY_RULE_SETUP
-#line 953 "dhcp4_lexer.ll"
+#line 989 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -3134,9 +3195,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 99:
 YY_RULE_SETUP
-#line 962 "dhcp4_lexer.ll"
+#line 998 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -3146,9 +3207,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 100:
 YY_RULE_SETUP
-#line 971 "dhcp4_lexer.ll"
+#line 1007 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3158,9 +3219,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 101:
 YY_RULE_SETUP
-#line 980 "dhcp4_lexer.ll"
+#line 1016 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3170,9 +3231,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 102:
 YY_RULE_SETUP
-#line 989 "dhcp4_lexer.ll"
+#line 1025 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3182,9 +3243,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 103:
 YY_RULE_SETUP
-#line 998 "dhcp4_lexer.ll"
+#line 1034 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3194,9 +3255,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 104:
 YY_RULE_SETUP
-#line 1007 "dhcp4_lexer.ll"
+#line 1043 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3206,9 +3267,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 105:
 YY_RULE_SETUP
-#line 1016 "dhcp4_lexer.ll"
+#line 1052 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3218,9 +3279,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 106:
 YY_RULE_SETUP
-#line 1025 "dhcp4_lexer.ll"
+#line 1061 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3230,9 +3291,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 107:
 YY_RULE_SETUP
-#line 1034 "dhcp4_lexer.ll"
+#line 1070 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3242,9 +3303,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 108:
 YY_RULE_SETUP
-#line 1043 "dhcp4_lexer.ll"
+#line 1079 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3254,9 +3315,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 109:
 YY_RULE_SETUP
-#line 1052 "dhcp4_lexer.ll"
+#line 1088 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3266,9 +3327,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 110:
 YY_RULE_SETUP
-#line 1061 "dhcp4_lexer.ll"
+#line 1097 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3278,9 +3339,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 111:
 YY_RULE_SETUP
-#line 1070 "dhcp4_lexer.ll"
+#line 1106 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3290,9 +3351,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 112:
 YY_RULE_SETUP
-#line 1079 "dhcp4_lexer.ll"
+#line 1115 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3302,9 +3363,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 113:
 YY_RULE_SETUP
-#line 1088 "dhcp4_lexer.ll"
+#line 1124 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3314,9 +3375,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 114:
 YY_RULE_SETUP
-#line 1097 "dhcp4_lexer.ll"
+#line 1133 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3326,9 +3387,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 115:
 YY_RULE_SETUP
-#line 1106 "dhcp4_lexer.ll"
+#line 1142 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -3339,9 +3400,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 112:
+case 116:
 YY_RULE_SETUP
-#line 1116 "dhcp4_lexer.ll"
+#line 1152 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -3352,9 +3413,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 113:
+case 117:
 YY_RULE_SETUP
-#line 1126 "dhcp4_lexer.ll"
+#line 1162 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
@@ -3365,9 +3426,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 114:
+case 118:
 YY_RULE_SETUP
-#line 1136 "dhcp4_lexer.ll"
+#line 1172 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3378,9 +3439,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 115:
+case 119:
 YY_RULE_SETUP
-#line 1146 "dhcp4_lexer.ll"
+#line 1182 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3391,9 +3452,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 116:
+case 120:
 YY_RULE_SETUP
-#line 1156 "dhcp4_lexer.ll"
+#line 1192 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3404,9 +3465,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 117:
+case 121:
 YY_RULE_SETUP
-#line 1166 "dhcp4_lexer.ll"
+#line 1202 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3417,9 +3478,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 118:
+case 122:
 YY_RULE_SETUP
-#line 1176 "dhcp4_lexer.ll"
+#line 1212 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3430,9 +3491,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 119:
+case 123:
 YY_RULE_SETUP
-#line 1186 "dhcp4_lexer.ll"
+#line 1222 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3443,9 +3504,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 120:
+case 124:
 YY_RULE_SETUP
-#line 1196 "dhcp4_lexer.ll"
+#line 1232 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -3455,9 +3516,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 125:
 YY_RULE_SETUP
-#line 1205 "dhcp4_lexer.ll"
+#line 1241 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -3467,9 +3528,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 126:
 YY_RULE_SETUP
-#line 1214 "dhcp4_lexer.ll"
+#line 1250 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3479,9 +3540,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 127:
 YY_RULE_SETUP
-#line 1223 "dhcp4_lexer.ll"
+#line 1259 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3491,9 +3552,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 128:
 YY_RULE_SETUP
-#line 1232 "dhcp4_lexer.ll"
+#line 1268 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3503,9 +3564,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 129:
 YY_RULE_SETUP
-#line 1241 "dhcp4_lexer.ll"
+#line 1277 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3516,9 +3577,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 130:
 YY_RULE_SETUP
-#line 1251 "dhcp4_lexer.ll"
+#line 1287 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3529,9 +3590,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 131:
 YY_RULE_SETUP
-#line 1261 "dhcp4_lexer.ll"
+#line 1297 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3544,9 +3605,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 132:
 YY_RULE_SETUP
-#line 1273 "dhcp4_lexer.ll"
+#line 1309 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3558,9 +3619,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 133:
 YY_RULE_SETUP
-#line 1284 "dhcp4_lexer.ll"
+#line 1320 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3572,9 +3633,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 134:
 YY_RULE_SETUP
-#line 1297 "dhcp4_lexer.ll"
+#line 1333 "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.
@@ -3673,65 +3734,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 131:
-/* rule 131 can match eol */
+case 135:
+/* rule 135 can match eol */
 YY_RULE_SETUP
-#line 1395 "dhcp4_lexer.ll"
+#line 1431 "dhcp4_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 132:
-/* rule 132 can match eol */
+case 136:
+/* rule 136 can match eol */
 YY_RULE_SETUP
-#line 1400 "dhcp4_lexer.ll"
+#line 1436 "dhcp4_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 133:
+case 137:
 YY_RULE_SETUP
-#line 1405 "dhcp4_lexer.ll"
+#line 1441 "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 134:
+case 138:
 YY_RULE_SETUP
-#line 1410 "dhcp4_lexer.ll"
+#line 1446 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 135:
+case 139:
 YY_RULE_SETUP
-#line 1411 "dhcp4_lexer.ll"
+#line 1447 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 136:
+case 140:
 YY_RULE_SETUP
-#line 1412 "dhcp4_lexer.ll"
+#line 1448 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 137:
+case 141:
 YY_RULE_SETUP
-#line 1413 "dhcp4_lexer.ll"
+#line 1449 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 138:
+case 142:
 YY_RULE_SETUP
-#line 1414 "dhcp4_lexer.ll"
+#line 1450 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 139:
+case 143:
 YY_RULE_SETUP
-#line 1415 "dhcp4_lexer.ll"
+#line 1451 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 140:
+case 144:
 YY_RULE_SETUP
-#line 1417 "dhcp4_lexer.ll"
+#line 1453 "dhcp4_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -3750,9 +3811,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 141:
+case 145:
 YY_RULE_SETUP
-#line 1435 "dhcp4_lexer.ll"
+#line 1471 "dhcp4_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -3766,43 +3827,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 142:
+case 146:
 YY_RULE_SETUP
-#line 1448 "dhcp4_lexer.ll"
+#line 1484 "dhcp4_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 143:
+case 147:
 YY_RULE_SETUP
-#line 1453 "dhcp4_lexer.ll"
+#line 1489 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 144:
+case 148:
 YY_RULE_SETUP
-#line 1457 "dhcp4_lexer.ll"
+#line 1493 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 145:
+case 149:
 YY_RULE_SETUP
-#line 1459 "dhcp4_lexer.ll"
+#line 1495 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 146:
+case 150:
 YY_RULE_SETUP
-#line 1461 "dhcp4_lexer.ll"
+#line 1497 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 147:
+case 151:
 YY_RULE_SETUP
-#line 1463 "dhcp4_lexer.ll"
+#line 1499 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1465 "dhcp4_lexer.ll"
+#line 1501 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -3826,12 +3887,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 148:
+case 152:
 YY_RULE_SETUP
-#line 1488 "dhcp4_lexer.ll"
+#line 1524 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 3834 "dhcp4_lexer.cc"
+#line 3895 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4150,7 +4211,7 @@ static int yy_get_next_buffer (void)
                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 >= 1190 )
+                       if ( yy_current_state >= 1212 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4183,11 +4244,11 @@ static int yy_get_next_buffer (void)
        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 >= 1190 )
+               if ( yy_current_state >= 1212 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1189);
+       yy_is_jam = (yy_current_state == 1211);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4936,7 +4997,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1488 "dhcp4_lexer.ll"
+#line 1524 "dhcp4_lexer.ll"
 
 
 using namespace isc::dhcp;
index b112d4f67d8031027fc51c4ba1c96e4253cd6f49..51d88708fdc4379efad6692ff0e311591414da7b 100644 (file)
@@ -253,28 +253,29 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 153: // value
-      case 157: // map_value
-      case 195: // socket_type
-      case 205: // db_type
-      case 413: // ncr_protocol_value
-      case 421: // replace_client_name_value
+      case 156: // value
+      case 160: // map_value
+      case 198: // socket_type
+      case 208: // db_type
+      case 285: // hr_mode
+      case 417: // ncr_protocol_value
+      case 425: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 139: // "boolean"
+      case 142: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 138: // "floating point"
+      case 141: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 137: // "integer"
+      case 140: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 136: // "constant string"
+      case 139: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -293,28 +294,29 @@ namespace isc { namespace dhcp {
     state = that.state;
       switch (that.type_get ())
     {
-      case 153: // value
-      case 157: // map_value
-      case 195: // socket_type
-      case 205: // db_type
-      case 413: // ncr_protocol_value
-      case 421: // replace_client_name_value
+      case 156: // value
+      case 160: // map_value
+      case 198: // socket_type
+      case 208: // db_type
+      case 285: // hr_mode
+      case 417: // ncr_protocol_value
+      case 425: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 139: // "boolean"
+      case 142: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 138: // "floating point"
+      case 141: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 137: // "integer"
+      case 140: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 136: // "constant string"
+      case 139: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -354,74 +356,81 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 136: // "constant string"
+            case 139: // "constant string"
 
-#line 211 "dhcp4_parser.yy" // lalr1.cc:636
+#line 215 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
-#line 362 "dhcp4_parser.cc" // lalr1.cc:636
+#line 364 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 137: // "integer"
+      case 140: // "integer"
 
-#line 211 "dhcp4_parser.yy" // lalr1.cc:636
+#line 215 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
-#line 369 "dhcp4_parser.cc" // lalr1.cc:636
+#line 371 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 138: // "floating point"
+      case 141: // "floating point"
 
-#line 211 "dhcp4_parser.yy" // lalr1.cc:636
+#line 215 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
-#line 376 "dhcp4_parser.cc" // lalr1.cc:636
+#line 378 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 139: // "boolean"
+      case 142: // "boolean"
 
-#line 211 "dhcp4_parser.yy" // lalr1.cc:636
+#line 215 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
-#line 383 "dhcp4_parser.cc" // lalr1.cc:636
+#line 385 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 153: // value
+      case 156: // value
 
-#line 211 "dhcp4_parser.yy" // lalr1.cc:636
+#line 215 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 390 "dhcp4_parser.cc" // lalr1.cc:636
+#line 392 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 157: // map_value
+      case 160: // map_value
 
-#line 211 "dhcp4_parser.yy" // lalr1.cc:636
+#line 215 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 397 "dhcp4_parser.cc" // lalr1.cc:636
+#line 399 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 195: // socket_type
+      case 198: // socket_type
 
-#line 211 "dhcp4_parser.yy" // lalr1.cc:636
+#line 215 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 404 "dhcp4_parser.cc" // lalr1.cc:636
+#line 406 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 205: // db_type
+      case 208: // db_type
 
-#line 211 "dhcp4_parser.yy" // lalr1.cc:636
+#line 215 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 411 "dhcp4_parser.cc" // lalr1.cc:636
+#line 413 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 413: // ncr_protocol_value
+      case 285: // hr_mode
 
-#line 211 "dhcp4_parser.yy" // lalr1.cc:636
+#line 215 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 418 "dhcp4_parser.cc" // lalr1.cc:636
+#line 420 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 421: // replace_client_name_value
+      case 417: // ncr_protocol_value
 
-#line 211 "dhcp4_parser.yy" // lalr1.cc:636
+#line 215 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 425 "dhcp4_parser.cc" // lalr1.cc:636
+#line 427 "dhcp4_parser.cc" // lalr1.cc:636
+        break;
+
+      case 425: // replace_client_name_value
+
+#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 434 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
 
@@ -621,28 +630,29 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 153: // value
-      case 157: // map_value
-      case 195: // socket_type
-      case 205: // db_type
-      case 413: // ncr_protocol_value
-      case 421: // replace_client_name_value
+      case 156: // value
+      case 160: // map_value
+      case 198: // socket_type
+      case 208: // db_type
+      case 285: // hr_mode
+      case 417: // ncr_protocol_value
+      case 425: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 139: // "boolean"
+      case 142: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 138: // "floating point"
+      case 141: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 137: // "integer"
+      case 140: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 136: // "constant string"
+      case 139: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -664,272 +674,272 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 220 "dhcp4_parser.yy" // lalr1.cc:859
+#line 224 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 670 "dhcp4_parser.cc" // lalr1.cc:859
+#line 680 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 221 "dhcp4_parser.yy" // lalr1.cc:859
+#line 225 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
-#line 676 "dhcp4_parser.cc" // lalr1.cc:859
+#line 686 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 222 "dhcp4_parser.yy" // lalr1.cc:859
+#line 226 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP4; }
-#line 682 "dhcp4_parser.cc" // lalr1.cc:859
+#line 692 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 223 "dhcp4_parser.yy" // lalr1.cc:859
+#line 227 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 688 "dhcp4_parser.cc" // lalr1.cc:859
+#line 698 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 224 "dhcp4_parser.yy" // lalr1.cc:859
+#line 228 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET4; }
-#line 694 "dhcp4_parser.cc" // lalr1.cc:859
+#line 704 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 225 "dhcp4_parser.yy" // lalr1.cc:859
+#line 229 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
-#line 700 "dhcp4_parser.cc" // lalr1.cc:859
+#line 710 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 226 "dhcp4_parser.yy" // lalr1.cc:859
+#line 230 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
-#line 706 "dhcp4_parser.cc" // lalr1.cc:859
+#line 716 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 227 "dhcp4_parser.yy" // lalr1.cc:859
+#line 231 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
-#line 712 "dhcp4_parser.cc" // lalr1.cc:859
+#line 722 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 228 "dhcp4_parser.yy" // lalr1.cc:859
+#line 232 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
-#line 718 "dhcp4_parser.cc" // lalr1.cc:859
+#line 728 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 229 "dhcp4_parser.yy" // lalr1.cc:859
+#line 233 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 724 "dhcp4_parser.cc" // lalr1.cc:859
+#line 734 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 230 "dhcp4_parser.yy" // lalr1.cc:859
+#line 234 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
-#line 730 "dhcp4_parser.cc" // lalr1.cc:859
+#line 740 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 238 "dhcp4_parser.yy" // lalr1.cc:859
+#line 242 "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
+#line 746 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 25:
-#line 239 "dhcp4_parser.yy" // lalr1.cc:859
+#line 243 "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
+#line 752 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 240 "dhcp4_parser.yy" // lalr1.cc:859
+#line 244 "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
+#line 758 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 241 "dhcp4_parser.yy" // lalr1.cc:859
+#line 245 "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
+#line 764 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 242 "dhcp4_parser.yy" // lalr1.cc:859
+#line 246 "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
+#line 770 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 243 "dhcp4_parser.yy" // lalr1.cc:859
+#line 247 "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
+#line 776 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 244 "dhcp4_parser.yy" // lalr1.cc:859
+#line 248 "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
+#line 782 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 247 "dhcp4_parser.yy" // lalr1.cc:859
+#line 251 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
 }
-#line 781 "dhcp4_parser.cc" // lalr1.cc:859
+#line 791 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 32:
-#line 252 "dhcp4_parser.yy" // lalr1.cc:859
+#line 256 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 792 "dhcp4_parser.cc" // lalr1.cc:859
+#line 802 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 33:
-#line 257 "dhcp4_parser.yy" // lalr1.cc:859
+#line 261 "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
     // for it.
 }
-#line 802 "dhcp4_parser.cc" // lalr1.cc:859
+#line 812 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 34:
-#line 263 "dhcp4_parser.yy" // lalr1.cc:859
+#line 267 "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
+#line 818 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 37:
-#line 270 "dhcp4_parser.yy" // lalr1.cc:859
+#line 274 "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 > ());
                   }
-#line 817 "dhcp4_parser.cc" // lalr1.cc:859
+#line 827 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 38:
-#line 274 "dhcp4_parser.yy" // lalr1.cc:859
+#line 278 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 827 "dhcp4_parser.cc" // lalr1.cc:859
+#line 837 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 39:
-#line 281 "dhcp4_parser.yy" // lalr1.cc:859
+#line 285 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
 }
-#line 836 "dhcp4_parser.cc" // lalr1.cc:859
+#line 846 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 40:
-#line 284 "dhcp4_parser.yy" // lalr1.cc:859
+#line 288 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
-#line 844 "dhcp4_parser.cc" // lalr1.cc:859
+#line 854 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 43:
-#line 292 "dhcp4_parser.yy" // lalr1.cc:859
+#line 296 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 853 "dhcp4_parser.cc" // lalr1.cc:859
+#line 863 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 44:
-#line 296 "dhcp4_parser.yy" // lalr1.cc:859
+#line 300 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 862 "dhcp4_parser.cc" // lalr1.cc:859
+#line 872 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 45:
-#line 303 "dhcp4_parser.yy" // lalr1.cc:859
+#line 307 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
-#line 870 "dhcp4_parser.cc" // lalr1.cc:859
+#line 880 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 46:
-#line 305 "dhcp4_parser.yy" // lalr1.cc:859
+#line 309 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
 }
-#line 879 "dhcp4_parser.cc" // lalr1.cc:859
+#line 889 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 49:
-#line 314 "dhcp4_parser.yy" // lalr1.cc:859
+#line 318 "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);
                           }
-#line 888 "dhcp4_parser.cc" // lalr1.cc:859
+#line 898 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 50:
-#line 318 "dhcp4_parser.yy" // lalr1.cc:859
+#line 322 "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);
                           }
-#line 897 "dhcp4_parser.cc" // lalr1.cc:859
+#line 907 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 51:
-#line 329 "dhcp4_parser.yy" // lalr1.cc:859
+#line 333 "dhcp4_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
     error(yystack_[1].location,
           "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
 }
-#line 908 "dhcp4_parser.cc" // lalr1.cc:859
+#line 918 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 52:
-#line 339 "dhcp4_parser.yy" // lalr1.cc:859
+#line 343 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 919 "dhcp4_parser.cc" // lalr1.cc:859
+#line 929 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 53:
-#line 344 "dhcp4_parser.yy" // lalr1.cc:859
+#line 348 "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
     // for it.
 }
-#line 929 "dhcp4_parser.cc" // lalr1.cc:859
+#line 939 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 61:
-#line 363 "dhcp4_parser.yy" // lalr1.cc:859
+#line 367 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -938,11 +948,11 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP4);
 }
-#line 942 "dhcp4_parser.cc" // lalr1.cc:859
+#line 952 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 62:
-#line 370 "dhcp4_parser.yy" // lalr1.cc:859
+#line 374 "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
@@ -950,673 +960,673 @@ namespace isc { namespace dhcp {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 954 "dhcp4_parser.cc" // lalr1.cc:859
+#line 964 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 63:
-#line 380 "dhcp4_parser.yy" // lalr1.cc:859
+#line 384 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 964 "dhcp4_parser.cc" // lalr1.cc:859
+#line 974 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 64:
-#line 384 "dhcp4_parser.yy" // lalr1.cc:859
+#line 388 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 972 "dhcp4_parser.cc" // lalr1.cc:859
+#line 982 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 88:
-#line 417 "dhcp4_parser.yy" // lalr1.cc:859
+#line 421 "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);
 }
-#line 981 "dhcp4_parser.cc" // lalr1.cc:859
+#line 991 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 89:
-#line 422 "dhcp4_parser.yy" // lalr1.cc:859
+#line 426 "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);
 }
-#line 990 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1000 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 90:
-#line 427 "dhcp4_parser.yy" // lalr1.cc:859
+#line 431 "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);
 }
-#line 999 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1009 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 91:
-#line 432 "dhcp4_parser.yy" // lalr1.cc:859
+#line 436 "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);
 }
-#line 1008 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1018 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 92:
-#line 437 "dhcp4_parser.yy" // lalr1.cc:859
+#line 441 "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);
 }
-#line 1017 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1027 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 93:
-#line 442 "dhcp4_parser.yy" // lalr1.cc:859
+#line 446 "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);
 }
-#line 1026 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1036 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 94:
-#line 448 "dhcp4_parser.yy" // lalr1.cc:859
+#line 452 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.INTERFACES_CONFIG);
 }
-#line 1037 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1047 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 95:
-#line 453 "dhcp4_parser.yy" // lalr1.cc:859
+#line 457 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1046 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1056 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 101:
-#line 467 "dhcp4_parser.yy" // lalr1.cc:859
+#line 471 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1056 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1066 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 102:
-#line 471 "dhcp4_parser.yy" // lalr1.cc:859
+#line 475 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1064 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1074 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 103:
-#line 475 "dhcp4_parser.yy" // lalr1.cc:859
+#line 479 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1075 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1085 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 104:
-#line 480 "dhcp4_parser.yy" // lalr1.cc:859
+#line 484 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1084 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1094 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 105:
-#line 485 "dhcp4_parser.yy" // lalr1.cc:859
+#line 489 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
 }
-#line 1092 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1102 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 106:
-#line 487 "dhcp4_parser.yy" // lalr1.cc:859
+#line 491 "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
+#line 1111 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 107:
-#line 492 "dhcp4_parser.yy" // lalr1.cc:859
+#line 496 "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
+#line 1117 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 108:
-#line 493 "dhcp4_parser.yy" // lalr1.cc:859
+#line 497 "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
+#line 1123 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 109:
-#line 496 "dhcp4_parser.yy" // lalr1.cc:859
+#line 500 "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
+#line 1132 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 110:
-#line 502 "dhcp4_parser.yy" // lalr1.cc:859
+#line 506 "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 1133 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1143 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 111:
-#line 507 "dhcp4_parser.yy" // lalr1.cc:859
+#line 511 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1142 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1152 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 112:
-#line 512 "dhcp4_parser.yy" // lalr1.cc:859
+#line 516 "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 1153 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1163 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 113:
-#line 517 "dhcp4_parser.yy" // lalr1.cc:859
+#line 521 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1162 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1172 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 129:
-#line 541 "dhcp4_parser.yy" // lalr1.cc:859
+#line 545 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1170 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1180 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 130:
-#line 543 "dhcp4_parser.yy" // lalr1.cc:859
+#line 547 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1179 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1189 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 131:
-#line 548 "dhcp4_parser.yy" // lalr1.cc:859
+#line 552 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1185 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1195 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 132:
-#line 549 "dhcp4_parser.yy" // lalr1.cc:859
+#line 553 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1191 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1201 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 133:
-#line 550 "dhcp4_parser.yy" // lalr1.cc:859
+#line 554 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1197 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1207 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 134:
-#line 551 "dhcp4_parser.yy" // lalr1.cc:859
+#line 555 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1203 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1213 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 135:
-#line 554 "dhcp4_parser.yy" // lalr1.cc:859
+#line 558 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1211 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1221 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 136:
-#line 556 "dhcp4_parser.yy" // lalr1.cc:859
+#line 560 "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 1221 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1231 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 137:
-#line 562 "dhcp4_parser.yy" // lalr1.cc:859
+#line 566 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1229 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1239 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 138:
-#line 564 "dhcp4_parser.yy" // lalr1.cc:859
+#line 568 "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 1239 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1249 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 139:
-#line 570 "dhcp4_parser.yy" // lalr1.cc:859
+#line 574 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1247 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1257 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 140:
-#line 572 "dhcp4_parser.yy" // lalr1.cc:859
+#line 576 "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 1257 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1267 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 141:
-#line 578 "dhcp4_parser.yy" // lalr1.cc:859
+#line 582 "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 1266 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1276 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 142:
-#line 583 "dhcp4_parser.yy" // lalr1.cc:859
+#line 587 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1274 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1284 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 143:
-#line 585 "dhcp4_parser.yy" // lalr1.cc:859
+#line 589 "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 1284 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1294 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 144:
-#line 591 "dhcp4_parser.yy" // lalr1.cc:859
+#line 595 "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 1293 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1303 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 145:
-#line 596 "dhcp4_parser.yy" // lalr1.cc:859
+#line 600 "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 1302 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1312 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 146:
-#line 601 "dhcp4_parser.yy" // lalr1.cc:859
+#line 605 "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 1311 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1321 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 147:
-#line 606 "dhcp4_parser.yy" // lalr1.cc:859
+#line 610 "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 1320 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1330 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 148:
-#line 611 "dhcp4_parser.yy" // lalr1.cc:859
+#line 615 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1328 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1338 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 149:
-#line 613 "dhcp4_parser.yy" // lalr1.cc:859
+#line 617 "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 1338 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1348 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 150:
-#line 619 "dhcp4_parser.yy" // lalr1.cc:859
+#line 623 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1346 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1356 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 151:
-#line 621 "dhcp4_parser.yy" // lalr1.cc:859
+#line 625 "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 1356 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1366 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 152:
-#line 628 "dhcp4_parser.yy" // lalr1.cc:859
+#line 632 "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 1367 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1377 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 153:
-#line 633 "dhcp4_parser.yy" // lalr1.cc:859
+#line 637 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1376 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1386 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 161:
-#line 649 "dhcp4_parser.yy" // lalr1.cc:859
+#line 653 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1385 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1395 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 162:
-#line 654 "dhcp4_parser.yy" // lalr1.cc:859
+#line 658 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1394 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1404 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 163:
-#line 659 "dhcp4_parser.yy" // lalr1.cc:859
+#line 663 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
 }
-#line 1403 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1413 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 164:
-#line 664 "dhcp4_parser.yy" // lalr1.cc:859
+#line 668 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
 }
-#line 1412 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1422 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 165:
-#line 669 "dhcp4_parser.yy" // lalr1.cc:859
+#line 673 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1421 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1431 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 166:
-#line 674 "dhcp4_parser.yy" // lalr1.cc:859
+#line 678 "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 1432 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1442 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 167:
-#line 679 "dhcp4_parser.yy" // lalr1.cc:859
+#line 683 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1441 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1451 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 172:
-#line 692 "dhcp4_parser.yy" // lalr1.cc:859
+#line 696 "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 1451 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1461 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 173:
-#line 696 "dhcp4_parser.yy" // lalr1.cc:859
+#line 700 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1459 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1469 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 174:
-#line 700 "dhcp4_parser.yy" // lalr1.cc:859
+#line 704 "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 1469 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1479 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 175:
-#line 704 "dhcp4_parser.yy" // lalr1.cc:859
+#line 708 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1477 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1487 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 181:
-#line 717 "dhcp4_parser.yy" // lalr1.cc:859
+#line 721 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1485 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1495 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 182:
-#line 719 "dhcp4_parser.yy" // lalr1.cc:859
+#line 723 "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 1495 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1505 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 183:
-#line 725 "dhcp4_parser.yy" // lalr1.cc:859
+#line 729 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1503 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1513 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 184:
-#line 727 "dhcp4_parser.yy" // lalr1.cc:859
+#line 731 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1512 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1522 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 185:
-#line 733 "dhcp4_parser.yy" // lalr1.cc:859
+#line 737 "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 1523 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1533 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 186:
-#line 738 "dhcp4_parser.yy" // lalr1.cc:859
+#line 742 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1532 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1542 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 195:
-#line 755 "dhcp4_parser.yy" // lalr1.cc:859
+#line 759 "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 1541 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1551 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 196:
-#line 760 "dhcp4_parser.yy" // lalr1.cc:859
+#line 764 "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 1550 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1560 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 197:
-#line 765 "dhcp4_parser.yy" // lalr1.cc:859
+#line 769 "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 1559 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1569 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 198:
-#line 770 "dhcp4_parser.yy" // lalr1.cc:859
+#line 774 "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 1568 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1578 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 199:
-#line 775 "dhcp4_parser.yy" // lalr1.cc:859
+#line 779 "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 1577 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1587 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 200:
-#line 780 "dhcp4_parser.yy" // lalr1.cc:859
+#line 784 "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 1586 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1596 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 201:
-#line 788 "dhcp4_parser.yy" // lalr1.cc:859
+#line 792 "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 1597 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1607 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 202:
-#line 793 "dhcp4_parser.yy" // lalr1.cc:859
+#line 797 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1606 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1616 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 207:
-#line 813 "dhcp4_parser.yy" // lalr1.cc:859
+#line 817 "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 1616 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1626 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 208:
-#line 817 "dhcp4_parser.yy" // lalr1.cc:859
+#line 821 "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.
@@ -1635,1406 +1645,1423 @@ namespace isc { namespace dhcp {
     // }
     ctx.stack_.pop_back();
 }
-#line 1639 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1649 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 209:
-#line 836 "dhcp4_parser.yy" // lalr1.cc:859
+#line 840 "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 1649 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1659 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 210:
-#line 840 "dhcp4_parser.yy" // lalr1.cc:859
+#line 844 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1657 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1667 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 233:
-#line 872 "dhcp4_parser.yy" // lalr1.cc:859
+#line 876 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1665 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1675 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 234:
-#line 874 "dhcp4_parser.yy" // lalr1.cc:859
+#line 878 "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 1675 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1685 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 235:
-#line 880 "dhcp4_parser.yy" // lalr1.cc:859
+#line 884 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1683 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1693 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 236:
-#line 882 "dhcp4_parser.yy" // lalr1.cc:859
+#line 886 "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);
     ctx.leave();
 }
-#line 1693 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1703 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 237:
-#line 888 "dhcp4_parser.yy" // lalr1.cc:859
+#line 892 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1701 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1711 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 238:
-#line 890 "dhcp4_parser.yy" // lalr1.cc:859
+#line 894 "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.leave();
 }
-#line 1711 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1721 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 239:
-#line 896 "dhcp4_parser.yy" // lalr1.cc:859
+#line 900 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1719 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1729 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 240:
-#line 898 "dhcp4_parser.yy" // lalr1.cc:859
+#line 902 "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.leave();
 }
-#line 1729 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1739 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 241:
-#line 904 "dhcp4_parser.yy" // lalr1.cc:859
+#line 908 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1737 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1747 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 242:
-#line 906 "dhcp4_parser.yy" // lalr1.cc:859
+#line 910 "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.leave();
 }
-#line 1747 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1757 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 243:
-#line 912 "dhcp4_parser.yy" // lalr1.cc:859
+#line 916 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1755 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1765 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 244:
-#line 914 "dhcp4_parser.yy" // lalr1.cc:859
+#line 918 "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.leave();
 }
-#line 1765 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1775 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 245:
-#line 920 "dhcp4_parser.yy" // lalr1.cc:859
+#line 924 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
-#line 1773 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1783 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 246:
-#line 922 "dhcp4_parser.yy" // lalr1.cc:859
+#line 926 "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);
     ctx.leave();
 }
-#line 1783 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1793 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 247:
-#line 928 "dhcp4_parser.yy" // lalr1.cc:859
+#line 932 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.enter(ctx.NO_KEYWORD);
+    ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 1791 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1801 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 248:
-#line 930 "dhcp4_parser.yy" // lalr1.cc:859
+#line 934 "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.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1801 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1810 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 249:
-#line 936 "dhcp4_parser.yy" // lalr1.cc:859
+#line 939 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
+#line 1816 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 250:
+#line 940 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
+#line 1822 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 251:
+#line 941 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
+#line 1828 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 252:
+#line 944 "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 1810 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1837 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 250:
-#line 941 "dhcp4_parser.yy" // lalr1.cc:859
+  case 253:
+#line 949 "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 1819 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1846 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 251:
-#line 950 "dhcp4_parser.yy" // lalr1.cc:859
+  case 254:
+#line 958 "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 1830 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1857 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 252:
-#line 955 "dhcp4_parser.yy" // lalr1.cc:859
+  case 255:
+#line 963 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1839 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1866 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 257:
-#line 972 "dhcp4_parser.yy" // lalr1.cc:859
+  case 260:
+#line 980 "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 1849 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1876 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 258:
-#line 976 "dhcp4_parser.yy" // lalr1.cc:859
+  case 261:
+#line 984 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1857 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1884 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 259:
-#line 983 "dhcp4_parser.yy" // lalr1.cc:859
+  case 262:
+#line 991 "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 1867 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1894 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 260:
-#line 987 "dhcp4_parser.yy" // lalr1.cc:859
+  case 263:
+#line 995 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1875 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1902 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 274:
-#line 1013 "dhcp4_parser.yy" // lalr1.cc:859
+  case 277:
+#line 1021 "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 1884 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1911 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 276:
-#line 1020 "dhcp4_parser.yy" // lalr1.cc:859
+  case 279:
+#line 1028 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1892 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1919 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 277:
-#line 1022 "dhcp4_parser.yy" // lalr1.cc:859
+  case 280:
+#line 1030 "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 1902 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1929 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 278:
-#line 1028 "dhcp4_parser.yy" // lalr1.cc:859
+  case 281:
+#line 1036 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1910 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1937 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 279:
-#line 1030 "dhcp4_parser.yy" // lalr1.cc:859
+  case 282:
+#line 1038 "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 1920 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1947 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 280:
-#line 1036 "dhcp4_parser.yy" // lalr1.cc:859
+  case 283:
+#line 1044 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1928 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1955 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 281:
-#line 1038 "dhcp4_parser.yy" // lalr1.cc:859
+  case 284:
+#line 1046 "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 1938 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1965 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 283:
-#line 1046 "dhcp4_parser.yy" // lalr1.cc:859
+  case 286:
+#line 1054 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1946 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1973 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 284:
-#line 1048 "dhcp4_parser.yy" // lalr1.cc:859
+  case 287:
+#line 1056 "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 1956 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1983 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 285:
-#line 1054 "dhcp4_parser.yy" // lalr1.cc:859
+  case 288:
+#line 1062 "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 1965 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1992 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 286:
-#line 1063 "dhcp4_parser.yy" // lalr1.cc:859
+  case 289:
+#line 1071 "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 1976 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2003 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 287:
-#line 1068 "dhcp4_parser.yy" // lalr1.cc:859
+  case 290:
+#line 1076 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1985 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2012 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 292:
-#line 1087 "dhcp4_parser.yy" // lalr1.cc:859
+  case 295:
+#line 1095 "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 1995 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2022 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 293:
-#line 1091 "dhcp4_parser.yy" // lalr1.cc:859
+  case 296:
+#line 1099 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2003 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2030 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 294:
-#line 1098 "dhcp4_parser.yy" // lalr1.cc:859
+  case 297:
+#line 1106 "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 2013 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2040 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 295:
-#line 1102 "dhcp4_parser.yy" // lalr1.cc:859
+  case 298:
+#line 1110 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2021 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2048 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 307:
-#line 1131 "dhcp4_parser.yy" // lalr1.cc:859
+  case 310:
+#line 1139 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2029 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2056 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 308:
-#line 1133 "dhcp4_parser.yy" // lalr1.cc:859
+  case 311:
+#line 1141 "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 2039 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2066 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 311:
-#line 1143 "dhcp4_parser.yy" // lalr1.cc:859
+  case 314:
+#line 1151 "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 2048 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2075 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 312:
-#line 1151 "dhcp4_parser.yy" // lalr1.cc:859
+  case 315:
+#line 1159 "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 2059 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2086 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 313:
-#line 1156 "dhcp4_parser.yy" // lalr1.cc:859
+  case 316:
+#line 1164 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2068 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2095 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 318:
-#line 1171 "dhcp4_parser.yy" // lalr1.cc:859
+  case 321:
+#line 1179 "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 2078 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2105 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 319:
-#line 1175 "dhcp4_parser.yy" // lalr1.cc:859
+  case 322:
+#line 1183 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2086 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2113 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 320:
-#line 1179 "dhcp4_parser.yy" // lalr1.cc:859
+  case 323:
+#line 1187 "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 2096 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2123 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 321:
-#line 1183 "dhcp4_parser.yy" // lalr1.cc:859
+  case 324:
+#line 1191 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2104 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2131 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 328:
-#line 1197 "dhcp4_parser.yy" // lalr1.cc:859
+  case 331:
+#line 1205 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2112 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2139 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 329:
-#line 1199 "dhcp4_parser.yy" // lalr1.cc:859
+  case 332:
+#line 1207 "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 2122 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2149 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 330:
-#line 1205 "dhcp4_parser.yy" // lalr1.cc:859
+  case 333:
+#line 1213 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2130 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2157 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 331:
-#line 1207 "dhcp4_parser.yy" // lalr1.cc:859
+  case 334:
+#line 1215 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("user-context", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2139 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2166 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 332:
-#line 1215 "dhcp4_parser.yy" // lalr1.cc:859
+  case 335:
+#line 1223 "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 2150 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2177 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 333:
-#line 1220 "dhcp4_parser.yy" // lalr1.cc:859
+  case 336:
+#line 1228 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2159 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2186 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 338:
-#line 1233 "dhcp4_parser.yy" // lalr1.cc:859
+  case 341:
+#line 1241 "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 2169 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2196 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 339:
-#line 1237 "dhcp4_parser.yy" // lalr1.cc:859
+  case 342:
+#line 1245 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2177 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2204 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 340:
-#line 1241 "dhcp4_parser.yy" // lalr1.cc:859
+  case 343:
+#line 1249 "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 2187 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2214 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 341:
-#line 1245 "dhcp4_parser.yy" // lalr1.cc:859
+  case 344:
+#line 1253 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2195 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2222 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 359:
-#line 1273 "dhcp4_parser.yy" // lalr1.cc:859
+  case 362:
+#line 1281 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2203 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2230 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 360:
-#line 1275 "dhcp4_parser.yy" // lalr1.cc:859
+  case 363:
+#line 1283 "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 2213 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2240 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 361:
-#line 1281 "dhcp4_parser.yy" // lalr1.cc:859
+  case 364:
+#line 1289 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2221 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2248 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 362:
-#line 1283 "dhcp4_parser.yy" // lalr1.cc:859
+  case 365:
+#line 1291 "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);
     ctx.leave();
 }
-#line 2231 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2258 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 363:
-#line 1289 "dhcp4_parser.yy" // lalr1.cc:859
+  case 366:
+#line 1297 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2239 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2266 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 364:
-#line 1291 "dhcp4_parser.yy" // lalr1.cc:859
+  case 367:
+#line 1299 "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);
     ctx.leave();
 }
-#line 2249 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2276 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 365:
-#line 1297 "dhcp4_parser.yy" // lalr1.cc:859
+  case 368:
+#line 1305 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2257 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2284 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 366:
-#line 1299 "dhcp4_parser.yy" // lalr1.cc:859
+  case 369:
+#line 1307 "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);
     ctx.leave();
 }
-#line 2267 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2294 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 367:
-#line 1305 "dhcp4_parser.yy" // lalr1.cc:859
+  case 370:
+#line 1313 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2275 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2302 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 368:
-#line 1307 "dhcp4_parser.yy" // lalr1.cc:859
+  case 371:
+#line 1315 "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);
     ctx.leave();
 }
-#line 2285 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2312 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 369:
-#line 1313 "dhcp4_parser.yy" // lalr1.cc:859
+  case 372:
+#line 1321 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2293 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2320 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 370:
-#line 1315 "dhcp4_parser.yy" // lalr1.cc:859
+  case 373:
+#line 1323 "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);
     ctx.leave();
 }
-#line 2303 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2330 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 371:
-#line 1321 "dhcp4_parser.yy" // lalr1.cc:859
+  case 374:
+#line 1329 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2311 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2338 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 372:
-#line 1323 "dhcp4_parser.yy" // lalr1.cc:859
+  case 375:
+#line 1331 "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.leave();
 }
-#line 2321 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2348 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 373:
-#line 1329 "dhcp4_parser.yy" // lalr1.cc:859
+  case 376:
+#line 1337 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2329 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2356 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 374:
-#line 1331 "dhcp4_parser.yy" // lalr1.cc:859
+  case 377:
+#line 1339 "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.leave();
 }
-#line 2339 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2366 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 375:
-#line 1337 "dhcp4_parser.yy" // lalr1.cc:859
+  case 378:
+#line 1345 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2347 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2374 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 376:
-#line 1339 "dhcp4_parser.yy" // lalr1.cc:859
+  case 379:
+#line 1347 "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("flex-id", hw);
     ctx.leave();
 }
-#line 2357 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2384 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 377:
-#line 1345 "dhcp4_parser.yy" // lalr1.cc:859
+  case 380:
+#line 1353 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2365 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2392 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1347 "dhcp4_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1355 "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 2375 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2402 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 379:
-#line 1353 "dhcp4_parser.yy" // lalr1.cc:859
+  case 382:
+#line 1361 "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 2386 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2413 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 380:
-#line 1358 "dhcp4_parser.yy" // lalr1.cc:859
+  case 383:
+#line 1366 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2395 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2422 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 381:
-#line 1366 "dhcp4_parser.yy" // lalr1.cc:859
+  case 384:
+#line 1374 "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 2406 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2433 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 382:
-#line 1371 "dhcp4_parser.yy" // lalr1.cc:859
+  case 385:
+#line 1379 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2415 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2442 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 383:
-#line 1376 "dhcp4_parser.yy" // lalr1.cc:859
+  case 386:
+#line 1384 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2423 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2450 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 384:
-#line 1378 "dhcp4_parser.yy" // lalr1.cc:859
+  case 387:
+#line 1386 "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 2433 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2460 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 385:
-#line 1387 "dhcp4_parser.yy" // lalr1.cc:859
+  case 388:
+#line 1395 "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 2444 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2471 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 386:
-#line 1392 "dhcp4_parser.yy" // lalr1.cc:859
+  case 389:
+#line 1400 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2453 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2480 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 389:
-#line 1401 "dhcp4_parser.yy" // lalr1.cc:859
+  case 392:
+#line 1409 "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 2463 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2490 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 390:
-#line 1405 "dhcp4_parser.yy" // lalr1.cc:859
+  case 393:
+#line 1413 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2471 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2498 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 403:
-#line 1428 "dhcp4_parser.yy" // lalr1.cc:859
+  case 406:
+#line 1436 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2479 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2506 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 404:
-#line 1430 "dhcp4_parser.yy" // lalr1.cc:859
+  case 407:
+#line 1438 "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 2489 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2516 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 405:
-#line 1440 "dhcp4_parser.yy" // lalr1.cc:859
+  case 408:
+#line 1448 "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 2498 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2525 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 406:
-#line 1447 "dhcp4_parser.yy" // lalr1.cc:859
+  case 409:
+#line 1455 "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 2509 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2536 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 407:
-#line 1452 "dhcp4_parser.yy" // lalr1.cc:859
+  case 410:
+#line 1460 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2518 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2545 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 412:
-#line 1465 "dhcp4_parser.yy" // lalr1.cc:859
+  case 415:
+#line 1473 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2526 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2553 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 413:
-#line 1467 "dhcp4_parser.yy" // lalr1.cc:859
+  case 416:
+#line 1475 "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 2536 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2563 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 414:
-#line 1473 "dhcp4_parser.yy" // lalr1.cc:859
+  case 417:
+#line 1481 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2544 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2571 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 415:
-#line 1475 "dhcp4_parser.yy" // lalr1.cc:859
+  case 418:
+#line 1483 "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 2554 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2581 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 416:
-#line 1483 "dhcp4_parser.yy" // lalr1.cc:859
+  case 419:
+#line 1491 "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 2565 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2592 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 417:
-#line 1488 "dhcp4_parser.yy" // lalr1.cc:859
+  case 420:
+#line 1496 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2574 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2601 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 418:
-#line 1493 "dhcp4_parser.yy" // lalr1.cc:859
+  case 421:
+#line 1501 "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 2584 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2611 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 419:
-#line 1497 "dhcp4_parser.yy" // lalr1.cc:859
+  case 422:
+#line 1505 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2592 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2619 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 437:
-#line 1522 "dhcp4_parser.yy" // lalr1.cc:859
+  case 440:
+#line 1530 "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 2601 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2628 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 438:
-#line 1527 "dhcp4_parser.yy" // lalr1.cc:859
+  case 441:
+#line 1535 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2609 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2636 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 439:
-#line 1529 "dhcp4_parser.yy" // lalr1.cc:859
+  case 442:
+#line 1537 "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 2619 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2646 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 440:
-#line 1535 "dhcp4_parser.yy" // lalr1.cc:859
+  case 443:
+#line 1543 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2627 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2654 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 441:
-#line 1537 "dhcp4_parser.yy" // lalr1.cc:859
+  case 444:
+#line 1545 "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 2637 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2664 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 442:
-#line 1543 "dhcp4_parser.yy" // lalr1.cc:859
+  case 445:
+#line 1551 "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 2646 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2673 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 443:
-#line 1548 "dhcp4_parser.yy" // lalr1.cc:859
+  case 446:
+#line 1556 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2654 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2681 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 444:
-#line 1550 "dhcp4_parser.yy" // lalr1.cc:859
+  case 447:
+#line 1558 "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 2664 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2691 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 445:
-#line 1556 "dhcp4_parser.yy" // lalr1.cc:859
+  case 448:
+#line 1564 "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 2673 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2700 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 446:
-#line 1561 "dhcp4_parser.yy" // lalr1.cc:859
+  case 449:
+#line 1569 "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 2682 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2709 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 447:
-#line 1566 "dhcp4_parser.yy" // lalr1.cc:859
+  case 450:
+#line 1574 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 2690 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2717 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 448:
-#line 1568 "dhcp4_parser.yy" // lalr1.cc:859
+  case 451:
+#line 1576 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2699 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2726 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 449:
-#line 1574 "dhcp4_parser.yy" // lalr1.cc:859
+  case 452:
+#line 1582 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 2705 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2732 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 450:
-#line 1575 "dhcp4_parser.yy" // lalr1.cc:859
+  case 453:
+#line 1583 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 2711 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2738 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 451:
-#line 1578 "dhcp4_parser.yy" // lalr1.cc:859
+  case 454:
+#line 1586 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 2719 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2746 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 452:
-#line 1580 "dhcp4_parser.yy" // lalr1.cc:859
+  case 455:
+#line 1588 "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 2729 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2756 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 453:
-#line 1586 "dhcp4_parser.yy" // lalr1.cc:859
+  case 456:
+#line 1594 "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 2738 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2765 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 454:
-#line 1591 "dhcp4_parser.yy" // lalr1.cc:859
+  case 457:
+#line 1599 "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 2747 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2774 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 455:
-#line 1596 "dhcp4_parser.yy" // lalr1.cc:859
+  case 458:
+#line 1604 "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 2756 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2783 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 456:
-#line 1601 "dhcp4_parser.yy" // lalr1.cc:859
+  case 459:
+#line 1609 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 2764 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2791 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 457:
-#line 1603 "dhcp4_parser.yy" // lalr1.cc:859
+  case 460:
+#line 1611 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2773 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2800 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 458:
-#line 1609 "dhcp4_parser.yy" // lalr1.cc:859
+  case 461:
+#line 1617 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
       }
-#line 2781 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2808 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 459:
-#line 1612 "dhcp4_parser.yy" // lalr1.cc:859
+  case 462:
+#line 1620 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2789 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2816 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 460:
-#line 1615 "dhcp4_parser.yy" // lalr1.cc:859
+  case 463:
+#line 1623 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2797 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2824 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 461:
-#line 1618 "dhcp4_parser.yy" // lalr1.cc:859
+  case 464:
+#line 1626 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2805 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2832 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 462:
-#line 1621 "dhcp4_parser.yy" // lalr1.cc:859
+  case 465:
+#line 1629 "dhcp4_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 2814 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2841 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 463:
-#line 1627 "dhcp4_parser.yy" // lalr1.cc:859
+  case 466:
+#line 1635 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2822 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2849 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 464:
-#line 1629 "dhcp4_parser.yy" // lalr1.cc:859
+  case 467:
+#line 1637 "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 2832 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2859 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 465:
-#line 1637 "dhcp4_parser.yy" // lalr1.cc:859
+  case 468:
+#line 1645 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2840 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2867 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 466:
-#line 1639 "dhcp4_parser.yy" // lalr1.cc:859
+  case 469:
+#line 1647 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2849 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2876 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 467:
-#line 1644 "dhcp4_parser.yy" // lalr1.cc:859
+  case 470:
+#line 1652 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2857 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2884 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 468:
-#line 1646 "dhcp4_parser.yy" // lalr1.cc:859
+  case 471:
+#line 1654 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2866 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2893 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 469:
-#line 1656 "dhcp4_parser.yy" // lalr1.cc:859
+  case 472:
+#line 1664 "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 2877 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2904 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 470:
-#line 1661 "dhcp4_parser.yy" // lalr1.cc:859
+  case 473:
+#line 1669 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2886 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2913 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 474:
-#line 1678 "dhcp4_parser.yy" // lalr1.cc:859
+  case 477:
+#line 1686 "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 2897 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2924 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 475:
-#line 1683 "dhcp4_parser.yy" // lalr1.cc:859
+  case 478:
+#line 1691 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2906 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2933 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 478:
-#line 1695 "dhcp4_parser.yy" // lalr1.cc:859
+  case 481:
+#line 1703 "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 2916 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2943 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 479:
-#line 1699 "dhcp4_parser.yy" // lalr1.cc:859
+  case 482:
+#line 1707 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2924 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2951 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 487:
-#line 1714 "dhcp4_parser.yy" // lalr1.cc:859
+  case 490:
+#line 1722 "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 2933 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2960 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 488:
-#line 1719 "dhcp4_parser.yy" // lalr1.cc:859
+  case 491:
+#line 1727 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2941 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2968 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 489:
-#line 1721 "dhcp4_parser.yy" // lalr1.cc:859
+  case 492:
+#line 1729 "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 2951 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2978 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 490:
-#line 1727 "dhcp4_parser.yy" // lalr1.cc:859
+  case 493:
+#line 1735 "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 2962 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2989 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 491:
-#line 1732 "dhcp4_parser.yy" // lalr1.cc:859
+  case 494:
+#line 1740 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2971 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2998 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 494:
-#line 1741 "dhcp4_parser.yy" // lalr1.cc:859
+  case 497:
+#line 1749 "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 2981 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3008 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 495:
-#line 1745 "dhcp4_parser.yy" // lalr1.cc:859
+  case 498:
+#line 1753 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2989 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3016 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 502:
-#line 1759 "dhcp4_parser.yy" // lalr1.cc:859
+  case 505:
+#line 1767 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2997 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3024 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 503:
-#line 1761 "dhcp4_parser.yy" // lalr1.cc:859
+  case 506:
+#line 1769 "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 3007 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3034 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 504:
-#line 1767 "dhcp4_parser.yy" // lalr1.cc:859
+  case 507:
+#line 1775 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 3016 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3043 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 505:
-#line 1772 "dhcp4_parser.yy" // lalr1.cc:859
+  case 508:
+#line 1780 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 3025 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3052 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 506:
-#line 1777 "dhcp4_parser.yy" // lalr1.cc:859
+  case 509:
+#line 1785 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 3034 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3061 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 3038 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3065 "dhcp4_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -3296,90 +3323,90 @@ namespace isc { namespace dhcp {
   const short int
   Dhcp4Parser::yypact_[] =
   {
-     108,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,    65,    19,    23,    86,   109,   129,   130,   131,
-     170,   183,   185,   187,  -477,  -477,  -477,  -477,  -477,  -477,
+     105,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
+    -477,  -477,    60,    19,    47,    62,    67,    85,   109,   122,
+     128,   134,   144,   156,  -477,  -477,  -477,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,    19,    69,    17,    80,
-     136,    18,   -19,   113,   127,    -1,   -46,   123,  -477,   169,
-     204,   207,   223,   212,  -477,  -477,  -477,  -477,   240,  -477,
-      30,  -477,  -477,  -477,  -477,  -477,  -477,   250,   262,  -477,
-    -477,  -477,   266,   270,   276,   280,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,   283,  -477,  -477,  -477,    38,  -477,  -477,
+    -477,  -477,  -477,  -477,  -477,  -477,    19,    35,    17,    54,
+     106,    18,   -19,    92,    76,   -18,   -35,   119,  -477,    82,
+      96,   171,   168,   185,  -477,  -477,  -477,  -477,   190,  -477,
+      53,  -477,  -477,  -477,  -477,  -477,  -477,   206,   208,  -477,
+    -477,  -477,   226,   259,   262,   266,  -477,  -477,  -477,  -477,
+    -477,  -477,  -477,   270,  -477,  -477,  -477,    81,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,   284,    39,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,   286,   294,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,    52,  -477,  -477,  -477,
+    -477,   276,   130,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
+    -477,  -477,  -477,  -477,  -477,   280,   284,  -477,  -477,  -477,
+    -477,  -477,  -477,  -477,  -477,  -477,   145,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,    53,  -477,  -477,
+    -477,  -477,  -477,  -477,  -477,  -477,  -477,   146,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,   243,   255,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,   299,
-    -477,  -477,  -477,   300,  -477,  -477,   298,   274,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,   303,
-    -477,  -477,  -477,  -477,   301,   305,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,    68,  -477,  -477,  -477,   306,
-    -477,  -477,   307,  -477,   308,   309,  -477,  -477,   311,   313,
-     314,  -477,  -477,  -477,    81,  -477,  -477,  -477,  -477,  -477,
+    -477,  -477,  -477,   243,   274,  -477,  -477,  -477,  -477,  -477,
+    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,   290,
+    -477,  -477,  -477,   292,  -477,  -477,   289,   301,  -477,  -477,
+    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,   306,
+    -477,  -477,  -477,  -477,   303,   309,  -477,  -477,  -477,  -477,
+    -477,  -477,  -477,  -477,  -477,   188,  -477,  -477,  -477,   311,
+    -477,  -477,   313,  -477,   314,   315,  -477,  -477,   316,   317,
+     318,  -477,  -477,  -477,   201,  -477,  -477,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,    19,    19,  -477,   184,   315,   317,   318,   319,  -477,
-      17,  -477,   321,   188,   189,   322,   325,   326,   194,   195,
-     196,   197,   331,   332,   333,   334,   335,   336,   337,   205,
-     339,   340,    80,  -477,   341,   342,   208,   136,  -477,    24,
-     344,   345,   346,   347,   348,   351,   352,   220,   219,   355,
-     356,   357,   358,    18,  -477,   359,   360,   -19,  -477,   361,
-     362,   363,   364,   365,   366,   367,   368,   369,   370,  -477,
-     113,   371,   372,   241,   373,   375,   376,   242,  -477,   127,
-     378,   246,  -477,    -1,   379,   380,   -27,  -477,   248,   382,
-     384,   252,   386,   256,   258,   387,   388,   259,   260,   263,
-     390,   392,   123,  -477,  -477,  -477,   393,   394,   396,    19,
-      19,  -477,   397,  -477,  -477,   271,   398,   399,  -477,  -477,
-    -477,  -477,   395,   403,   404,   405,   406,   407,   408,  -477,
-     409,   410,  -477,   413,   115,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,   411,   417,  -477,  -477,  -477,   277,
-     278,   285,   418,   288,   289,   290,  -477,  -477,   291,   292,
-     424,   415,  -477,   296,   427,  -477,   302,   304,   413,   310,
-     316,   320,   323,   328,   329,   330,  -477,   338,   343,  -477,
-     349,   350,   353,  -477,  -477,   354,  -477,  -477,   374,    19,
-    -477,  -477,   377,   381,  -477,   383,  -477,  -477,    16,   385,
-    -477,  -477,  -477,   -43,   389,  -477,    19,    80,   324,  -477,
-    -477,   136,  -477,    76,    76,   430,   434,   435,    92,    25,
-     436,   114,    -6,   123,  -477,  -477,  -477,  -477,  -477,   440,
-    -477,    24,  -477,  -477,  -477,   442,  -477,  -477,  -477,  -477,
-    -477,   444,   391,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
+    -477,    19,    19,  -477,   174,   319,   321,   322,   323,  -477,
+      17,  -477,   324,   187,   191,   326,   327,   328,   194,   195,
+     196,   197,   334,   335,   336,   337,   338,   339,   340,   207,
+     341,   342,    54,  -477,   344,   345,   209,   106,  -477,    66,
+     346,   348,   351,   352,   353,   354,   355,   220,   219,   358,
+     359,   360,   361,    18,  -477,   362,   363,   -19,  -477,   364,
+     365,   366,   367,   368,   369,   370,   371,   372,   373,  -477,
+      92,   374,   375,   240,   377,   378,   379,   242,  -477,    76,
+     381,   246,  -477,   -18,   382,   383,   -16,  -477,   248,   385,
+     387,   252,   389,   255,   256,   390,   393,   258,   260,   263,
+     394,   395,   119,  -477,  -477,  -477,   397,   396,   399,    19,
+      19,  -477,   400,  -477,  -477,   265,   401,   402,  -477,  -477,
+    -477,  -477,   405,   406,   407,   408,   409,   410,   411,  -477,
+     412,   413,  -477,   416,   150,  -477,  -477,  -477,  -477,  -477,
+    -477,  -477,  -477,  -477,   414,   420,  -477,  -477,  -477,   277,
+     278,   285,   421,   286,   288,   293,  -477,  -477,   -21,   298,
+     423,   422,  -477,   299,   427,  -477,   300,   302,   416,   304,
+     305,   307,   308,   310,   312,   320,  -477,   325,   329,  -477,
+     330,   331,   332,  -477,  -477,   333,  -477,  -477,   343,    19,
+    -477,  -477,   347,   349,  -477,   350,  -477,  -477,    15,   380,
+    -477,  -477,  -477,   -72,   356,  -477,    19,    54,   357,  -477,
+    -477,   106,  -477,   148,   148,   433,   435,   445,   -24,    31,
+     447,   112,    12,   119,  -477,  -477,  -477,  -477,  -477,   451,
+    -477,    66,  -477,  -477,  -477,   449,  -477,  -477,  -477,  -477,
+    -477,  -477,  -477,  -477,   450,   384,  -477,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,   142,
-    -477,   164,  -477,  -477,   200,  -477,  -477,  -477,  -477,   443,
-     450,   451,   453,   454,  -477,  -477,  -477,   201,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,   244,  -477,   455,   459,  -477,  -477,   461,   465,  -477,
-    -477,   464,   468,  -477,  -477,  -477,  -477,  -477,  -477,    71,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,    98,  -477,   466,
-     470,  -477,   471,   472,   473,   474,   476,   477,   245,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,   247,  -477,
-    -477,  -477,   254,   400,   401,  -477,  -477,   478,   479,  -477,
-    -477,   481,   480,  -477,  -477,   483,  -477,   484,   324,  -477,
-    -477,   488,   489,   491,   492,   402,   412,   416,   419,   420,
-     493,   494,    76,  -477,  -477,    18,  -477,   430,   127,  -477,
-     434,    -1,  -477,   435,    92,  -477,    25,  -477,   -46,  -477,
-     436,   422,   423,   425,   426,   428,   429,   114,  -477,   495,
-     496,    -6,  -477,  -477,  -477,   497,   498,  -477,   -19,  -477,
-     442,   113,  -477,   444,   500,  -477,   501,  -477,   269,   414,
-     431,   432,  -477,  -477,  -477,  -477,  -477,   433,   437,  -477,
-     257,  -477,   499,  -477,   503,  -477,  -477,  -477,   261,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,   438,   439,  -477,
-    -477,   441,   264,  -477,   504,  -477,   445,   502,  -477,  -477,
+    -477,  -477,   241,  -477,   244,  -477,  -477,   245,  -477,  -477,
+    -477,  -477,   454,   457,   458,   462,   463,  -477,  -477,  -477,
+     247,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
+    -477,  -477,  -477,  -477,   251,  -477,   467,   471,  -477,  -477,
+     470,   474,  -477,  -477,   472,   476,  -477,  -477,  -477,  -477,
+    -477,  -477,   139,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
+     149,  -477,   475,   477,  -477,   479,   480,   481,   483,   486,
+     487,   254,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
+    -477,   257,  -477,  -477,  -477,   261,   376,   386,  -477,  -477,
+     488,   490,  -477,  -477,   491,   493,  -477,  -477,   492,  -477,
+     494,   357,  -477,  -477,   495,   497,   498,   499,   388,   391,
+     392,   398,   403,   500,   501,   148,  -477,  -477,    18,  -477,
+     433,    76,  -477,   435,   -18,  -477,   445,   -24,  -477,    31,
+    -477,   -35,  -477,   447,   404,   415,   417,   418,   419,   424,
+     112,  -477,   502,   503,    12,  -477,  -477,  -477,   504,   505,
+    -477,   -19,  -477,   449,    92,  -477,   450,   507,  -477,   508,
+    -477,   281,   426,   428,   429,  -477,  -477,  -477,  -477,  -477,
+     430,   431,  -477,   264,  -477,   506,  -477,   509,  -477,  -477,
+    -477,   273,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
+     432,   434,  -477,  -477,   436,   275,  -477,   510,  -477,   437,
+     512,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,   112,
-    -477,    77,   502,  -477,  -477,   510,  -477,  -477,  -477,   273,
-    -477,  -477,  -477,  -477,  -477,   511,   446,   512,    77,  -477,
-     513,  -477,   448,  -477,   514,  -477,  -477,   168,  -477,    22,
-     514,  -477,  -477,   516,   518,   519,   275,  -477,  -477,  -477,
-    -477,  -477,  -477,   520,   447,   452,   456,    22,  -477,   449,
-    -477,  -477,  -477,  -477,  -477
+    -477,  -477,   189,  -477,    68,   512,  -477,  -477,   516,  -477,
+    -477,  -477,   287,  -477,  -477,  -477,  -477,  -477,   517,   438,
+     518,    68,  -477,   511,  -477,   440,  -477,   519,  -477,  -477,
+     205,  -477,   -15,   519,  -477,  -477,   520,   523,   525,   295,
+    -477,  -477,  -477,  -477,  -477,  -477,   526,   439,   442,   443,
+     -15,  -477,   441,  -477,  -477,  -477,  -477,  -477
   };
 
   const unsigned short int
@@ -3389,160 +3416,160 @@ namespace isc { namespace dhcp {
       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,
-     101,     9,   209,    11,   320,    13,   340,    15,   259,    17,
-     294,    19,   174,    21,   418,    23,    41,    35,     0,     0,
-       0,     0,     0,   342,   261,   296,     0,     0,    43,     0,
-      42,     0,     0,    36,    61,   469,   465,   467,     0,    60,
-       0,    54,    56,    58,    59,    57,    94,     0,     0,   359,
-     110,   112,     0,     0,     0,     0,   201,   251,   286,   152,
-     385,   166,   185,     0,   406,   416,    87,     0,    65,    67,
+     101,     9,   209,    11,   323,    13,   343,    15,   262,    17,
+     297,    19,   174,    21,   421,    23,    41,    35,     0,     0,
+       0,     0,     0,   345,   264,   299,     0,     0,    43,     0,
+      42,     0,     0,    36,    61,   472,   468,   470,     0,    60,
+       0,    54,    56,    58,    59,    57,    94,     0,     0,   362,
+     110,   112,     0,     0,     0,     0,   201,   254,   289,   152,
+     388,   166,   185,     0,   409,   419,    87,     0,    65,    67,
       68,    69,    70,    84,    85,    72,    73,    74,    75,    79,
       80,    71,    77,    78,    86,    76,    81,    82,    83,   103,
-     105,     0,     0,    96,    98,    99,   100,   389,   235,   237,
-     239,   312,   233,   241,   243,     0,     0,   247,   245,   332,
-     381,   232,   213,   214,   215,   227,     0,   211,   218,   229,
+     105,     0,     0,    96,    98,    99,   100,   392,   235,   237,
+     239,   315,   233,   241,   243,     0,     0,   247,   245,   335,
+     384,   232,   213,   214,   215,   227,     0,   211,   218,   229,
      230,   231,   219,   220,   223,   225,   221,   222,   216,   217,
-     224,   228,   226,   328,   330,   327,   325,     0,   322,   324,
-     326,   361,   363,   379,   367,   369,   373,   371,   377,   375,
-     365,   358,   354,     0,   343,   344,   355,   356,   357,   351,
-     346,   352,   348,   349,   350,   353,   347,   276,   142,     0,
-     280,   278,   283,     0,   272,   273,     0,   262,   263,   265,
-     275,   266,   267,   268,   282,   269,   270,   271,   307,     0,
-     305,   306,   309,   310,     0,   297,   298,   300,   301,   302,
-     303,   304,   181,   183,   178,     0,   176,   179,   180,     0,
-     438,   440,     0,   443,     0,     0,   447,   451,     0,     0,
-       0,   456,   463,   436,     0,   420,   422,   423,   424,   425,
-     426,   427,   428,   429,   430,   431,   432,   433,   434,   435,
+     224,   228,   226,   331,   333,   330,   328,     0,   325,   327,
+     329,   364,   366,   382,   370,   372,   376,   374,   380,   378,
+     368,   361,   357,     0,   346,   347,   358,   359,   360,   354,
+     349,   355,   351,   352,   353,   356,   350,   279,   142,     0,
+     283,   281,   286,     0,   275,   276,     0,   265,   266,   268,
+     278,   269,   270,   271,   285,   272,   273,   274,   310,     0,
+     308,   309,   312,   313,     0,   300,   301,   303,   304,   305,
+     306,   307,   181,   183,   178,     0,   176,   179,   180,     0,
+     441,   443,     0,   446,     0,     0,   450,   454,     0,     0,
+       0,   459,   466,   439,     0,   423,   425,   426,   427,   428,
+     429,   430,   431,   432,   433,   434,   435,   436,   437,   438,
       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,   391,
+       0,     0,     0,    64,     0,     0,     0,     0,   102,   394,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   210,     0,     0,     0,   321,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   341,
-       0,     0,     0,     0,     0,     0,     0,     0,   260,     0,
-       0,     0,   295,     0,     0,     0,     0,   175,     0,     0,
+       0,     0,     0,     0,   210,     0,     0,     0,   324,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   344,
+       0,     0,     0,     0,     0,     0,     0,     0,   263,     0,
+       0,     0,   298,     0,     0,     0,     0,   175,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   419,    44,    37,     0,     0,     0,     0,
+       0,     0,     0,   422,    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,   405,
-       0,     0,    66,     0,     0,   109,    97,   403,   401,   402,
-     397,   398,   399,   400,     0,   392,   393,   395,   396,     0,
-       0,     0,     0,     0,     0,     0,   249,   250,     0,     0,
-       0,     0,   212,     0,     0,   323,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   345,     0,     0,   274,
-       0,     0,     0,   285,   264,     0,   311,   299,     0,     0,
-     177,   437,     0,     0,   442,     0,   445,   446,     0,     0,
-     453,   454,   455,     0,     0,   421,     0,     0,     0,   466,
-     468,     0,   360,     0,     0,   203,   253,   288,     0,     0,
+      90,    91,     0,     0,     0,     0,     0,     0,     0,   408,
+       0,     0,    66,     0,     0,   109,    97,   406,   404,   405,
+     400,   401,   402,   403,     0,   395,   396,   398,   399,     0,
+       0,     0,     0,     0,     0,     0,   252,   253,     0,     0,
+       0,     0,   212,     0,     0,   326,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   348,     0,     0,   277,
+       0,     0,     0,   288,   267,     0,   314,   302,     0,     0,
+     177,   440,     0,     0,   445,     0,   448,   449,     0,     0,
+     456,   457,   458,     0,     0,   424,     0,     0,     0,   469,
+     471,     0,   363,     0,     0,   203,   256,   291,     0,     0,
      168,     0,     0,     0,    45,   104,   107,   108,   106,     0,
-     390,     0,   236,   238,   240,   314,   234,   242,   244,   248,
-     246,   334,     0,   329,    34,   331,   362,   364,   380,   368,
-     370,   374,   372,   378,   376,   366,   277,   143,   281,   279,
-     284,   308,   182,   184,   439,   441,   444,   449,   450,   448,
-     452,   458,   459,   460,   461,   462,   457,   464,    38,     0,
-     474,     0,   471,   473,     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,   207,     0,   204,   205,   257,     0,   254,   255,
-     292,     0,   289,   290,   161,   162,   163,   164,   165,     0,
-     154,   156,   157,   158,   159,   160,   387,     0,   172,     0,
-     169,   170,     0,     0,     0,     0,     0,     0,     0,   187,
-     189,   190,   191,   192,   193,   194,   412,   414,     0,   408,
-     410,   411,     0,    47,     0,   394,   318,     0,   315,   316,
-     338,     0,   335,   336,   383,     0,    62,     0,     0,   470,
-      95,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   111,   113,     0,   202,     0,   261,   252,
-       0,   296,   287,     0,     0,   153,     0,   386,     0,   167,
-       0,     0,     0,     0,     0,     0,     0,     0,   186,     0,
-       0,     0,   407,   417,    49,     0,    48,   404,     0,   313,
-       0,   342,   333,     0,     0,   382,     0,   472,     0,     0,
-       0,     0,   141,   144,   145,   146,   147,     0,     0,   115,
-       0,   206,     0,   256,     0,   291,   155,   388,     0,   171,
-     195,   196,   197,   198,   199,   200,   188,     0,     0,   409,
-      46,     0,     0,   317,     0,   337,     0,     0,   131,   132,
-     133,   134,   130,   136,   138,   140,   149,   151,   208,   258,
-     293,   173,   413,   415,    50,   319,   339,   384,   478,     0,
-     476,     0,     0,   475,   490,     0,   488,   486,   482,     0,
-     480,   484,   485,   483,   477,     0,     0,     0,     0,   479,
-       0,   487,     0,   481,     0,   489,   494,     0,   492,     0,
-       0,   491,   502,     0,     0,     0,     0,   496,   498,   499,
-     500,   501,   493,     0,     0,     0,     0,     0,   495,     0,
-     504,   505,   506,   497,   503
+     393,     0,   236,   238,   240,   317,   234,   242,   244,   249,
+     250,   251,   248,   246,   337,     0,   332,    34,   334,   365,
+     367,   383,   371,   373,   377,   375,   381,   379,   369,   280,
+     143,   284,   282,   287,   311,   182,   184,   442,   444,   447,
+     452,   453,   451,   455,   461,   462,   463,   464,   465,   460,
+     467,    38,     0,   477,     0,   474,   476,     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,   207,     0,   204,   205,   260,
+       0,   257,   258,   295,     0,   292,   293,   161,   162,   163,
+     164,   165,     0,   154,   156,   157,   158,   159,   160,   390,
+       0,   172,     0,   169,   170,     0,     0,     0,     0,     0,
+       0,     0,   187,   189,   190,   191,   192,   193,   194,   415,
+     417,     0,   411,   413,   414,     0,    47,     0,   397,   321,
+       0,   318,   319,   341,     0,   338,   339,   386,     0,    62,
+       0,     0,   473,    95,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   111,   113,     0,   202,
+       0,   264,   255,     0,   299,   290,     0,     0,   153,     0,
+     389,     0,   167,     0,     0,     0,     0,     0,     0,     0,
+       0,   186,     0,     0,     0,   410,   420,    49,     0,    48,
+     407,     0,   316,     0,   345,   336,     0,     0,   385,     0,
+     475,     0,     0,     0,     0,   141,   144,   145,   146,   147,
+       0,     0,   115,     0,   206,     0,   259,     0,   294,   155,
+     391,     0,   171,   195,   196,   197,   198,   199,   200,   188,
+       0,     0,   412,    46,     0,     0,   320,     0,   340,     0,
+       0,   131,   132,   133,   134,   130,   136,   138,   140,   149,
+     151,   208,   261,   296,   173,   416,   418,    50,   322,   342,
+     387,   481,     0,   479,     0,     0,   478,   493,     0,   491,
+     489,   485,     0,   483,   487,   488,   486,   480,     0,     0,
+       0,     0,   482,     0,   490,     0,   484,     0,   492,   497,
+       0,   495,     0,     0,   494,   505,     0,     0,     0,     0,
+     499,   501,   502,   503,   504,   496,     0,     0,     0,     0,
+       0,   498,     0,   507,   508,   509,   500,   506
   };
 
   const short int
   Dhcp4Parser::yypgoto_[] =
   {
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,   -36,  -477,    58,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,    57,  -477,  -477,  -477,   -58,  -477,
-    -477,  -477,   218,  -477,  -477,  -477,  -477,    40,   214,   -60,
-     -44,   -42,  -477,  -477,   -40,  -477,  -477,    37,   213,  -477,
+    -477,  -477,  -477,   -36,  -477,    65,  -477,  -477,  -477,  -477,
+    -477,  -477,  -477,  -477,    64,  -477,  -477,  -477,   -58,  -477,
+    -477,  -477,   233,  -477,  -477,  -477,  -477,    44,   222,   -60,
+     -44,   -42,  -477,  -477,   -40,  -477,  -477,    45,   218,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,    35,  -141,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
+    -477,    43,  -137,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
     -477,  -477,  -477,   -63,  -477,  -477,  -477,  -477,  -477,  -477,
+    -477,  -477,  -477,  -477,  -477,  -477,  -148,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -152,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -157,  -477,  -477,  -477,
-    -154,   172,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -162,
+    -149,   179,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -154,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -137,  -477,  -477,  -477,  -134,   209,  -477,  -477,  -477,  -477,
+    -133,  -477,  -477,  -477,  -130,   216,  -477,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -476,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -136,  -477,
-    -477,  -477,  -135,  -477,   186,  -477,   -49,  -477,  -477,  -477,
-    -477,  -477,   -47,  -477,  -477,  -477,  -477,  -477,   -51,  -477,
-    -477,  -477,  -131,  -477,  -477,  -477,  -133,  -477,   191,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -164,
-    -477,  -477,  -477,  -161,   224,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -158,  -477,  -477,  -477,  -155,  -477,   199,
-     -48,  -477,  -305,  -477,  -297,  -477,  -477,  -477,  -477,  -477,
+    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -132,
+    -477,  -477,  -477,  -131,  -477,   193,  -477,   -49,  -477,  -477,
+    -477,  -477,  -477,   -47,  -477,  -477,  -477,  -477,  -477,   -51,
+    -477,  -477,  -477,  -126,  -477,  -477,  -477,  -128,  -477,   198,
+    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
+    -160,  -477,  -477,  -477,  -157,   225,  -477,  -477,  -477,  -477,
+    -477,  -477,  -477,  -477,  -153,  -477,  -477,  -477,  -142,  -477,
+     224,   -48,  -477,  -305,  -477,  -297,  -477,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,    59,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -130,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,    61,
-     190,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
+    -477,  -477,  -477,    55,  -477,  -477,  -477,  -477,  -477,  -477,
+    -477,  -127,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
+      83,   202,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
     -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,   -82,  -477,  -477,  -477,  -204,  -477,  -477,  -219,  -477,
-    -477,  -477,  -477,  -477,  -477,  -230,  -477,  -477,  -245,  -477,
-    -477,  -477,  -477,  -477
+    -477,  -477,   -76,  -477,  -477,  -477,  -198,  -477,  -477,  -213,
+    -477,  -477,  -477,  -477,  -477,  -477,  -224,  -477,  -477,  -240,
+    -477,  -477,  -477,  -477,  -477
   };
 
   const short int
   Dhcp4Parser::yydefgoto_[] =
   {
       -1,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    32,    33,    34,    57,   525,    72,    73,
-      35,    56,    69,    70,   505,   643,   705,   706,   106,    37,
+      21,    22,    23,    32,    33,    34,    57,   528,    72,    73,
+      35,    56,    69,    70,   505,   646,   708,   709,   106,    37,
       58,    80,    81,    82,   285,    39,    59,   107,   108,   109,
      110,   111,   112,   113,   114,   115,   292,   132,   133,    41,
       60,   134,   314,   135,   315,   508,   136,   116,   296,   117,
-     297,   577,   578,   579,   661,   762,   580,   662,   581,   663,
-     582,   664,   583,   215,   352,   585,   586,   587,   588,   589,
-     670,   590,   671,   118,   305,   609,   610,   611,   612,   613,
-     614,   615,   119,   307,   619,   620,   621,   688,    53,    66,
-     245,   246,   247,   364,   248,   365,   120,   308,   628,   629,
-     630,   631,   632,   633,   634,   635,   121,   302,   593,   594,
-     595,   675,    43,    61,   156,   157,   158,   324,   159,   320,
+     297,   580,   581,   582,   664,   765,   583,   665,   584,   666,
+     585,   667,   586,   215,   352,   588,   589,   590,   591,   592,
+     673,   593,   674,   118,   305,   612,   613,   614,   615,   616,
+     617,   618,   119,   307,   622,   623,   624,   691,    53,    66,
+     245,   246,   247,   364,   248,   365,   120,   308,   631,   632,
+     633,   634,   635,   636,   637,   638,   121,   302,   596,   597,
+     598,   678,    43,    61,   156,   157,   158,   324,   159,   320,
      160,   321,   161,   322,   162,   325,   163,   326,   164,   330,
-     165,   329,   166,   167,   122,   303,   597,   598,   599,   678,
-      49,    64,   216,   217,   218,   219,   220,   221,   222,   351,
-     223,   355,   224,   354,   225,   226,   356,   227,   123,   304,
-     601,   602,   603,   681,    51,    65,   234,   235,   236,   237,
-     238,   360,   239,   240,   241,   169,   323,   647,   648,   649,
-     708,    45,    62,   177,   178,   179,   335,   180,   336,   170,
-     331,   651,   652,   653,   711,    47,    63,   193,   194,   195,
-     124,   295,   197,   339,   198,   340,   199,   348,   200,   342,
-     201,   343,   202,   345,   203,   344,   204,   347,   205,   346,
-     206,   341,   172,   332,   655,   714,   125,   306,   617,   319,
-     424,   425,   426,   427,   428,   509,   126,   127,   310,   638,
-     639,   640,   699,   641,   700,   128,   311,    55,    67,   264,
-     265,   266,   267,   369,   268,   370,   269,   270,   372,   271,
-     272,   273,   375,   549,   274,   376,   275,   276,   277,   278,
-     380,   556,   279,   381,    83,   287,    84,   288,    85,   286,
-     561,   562,   563,   657,   779,   780,   781,   789,   790,   791,
-     792,   797,   793,   795,   807,   808,   809,   816,   817,   818,
-     823,   819,   820,   821
+     165,   329,   522,   166,   167,   122,   303,   600,   601,   602,
+     681,    49,    64,   216,   217,   218,   219,   220,   221,   222,
+     351,   223,   355,   224,   354,   225,   226,   356,   227,   123,
+     304,   604,   605,   606,   684,    51,    65,   234,   235,   236,
+     237,   238,   360,   239,   240,   241,   169,   323,   650,   651,
+     652,   711,    45,    62,   177,   178,   179,   335,   180,   336,
+     170,   331,   654,   655,   656,   714,    47,    63,   193,   194,
+     195,   124,   295,   197,   339,   198,   340,   199,   348,   200,
+     342,   201,   343,   202,   345,   203,   344,   204,   347,   205,
+     346,   206,   341,   172,   332,   658,   717,   125,   306,   620,
+     319,   424,   425,   426,   427,   428,   509,   126,   127,   310,
+     641,   642,   643,   702,   644,   703,   128,   311,    55,    67,
+     264,   265,   266,   267,   369,   268,   370,   269,   270,   372,
+     271,   272,   273,   375,   552,   274,   376,   275,   276,   277,
+     278,   380,   559,   279,   381,    83,   287,    84,   288,    85,
+     286,   564,   565,   566,   660,   782,   783,   784,   792,   793,
+     794,   795,   800,   796,   798,   810,   811,   812,   819,   820,
+     821,   826,   822,   823,   824
   };
 
   const unsigned short int
@@ -3550,79 +3577,79 @@ namespace isc { namespace dhcp {
   {
       79,   152,   231,   151,   175,   191,   214,   230,   244,   263,
      168,   176,   192,   171,   422,   196,   232,   153,   233,   154,
-      68,   155,   423,   616,    25,   137,    26,    74,    27,    98,
-      36,   547,   137,   290,   242,   243,    88,    89,   291,   173,
-     174,   312,   317,    89,   181,   182,   313,   318,   208,   228,
-     209,   210,   229,   242,   243,   333,   337,    92,    93,    94,
-     334,   338,   138,   139,   140,    24,    98,   551,   552,   553,
-     554,   366,    98,   208,   684,   141,   367,   685,   142,   143,
-     144,   145,   146,   147,   382,   636,   637,   148,   149,   383,
-      78,    86,   417,    38,   148,   150,   555,    87,    88,    89,
-     565,   686,    90,    91,   687,   566,   567,   568,   569,   570,
-     571,   572,   573,   574,   575,   782,    40,    78,   783,    92,
-      93,    94,    95,    96,   548,   208,   208,    97,    98,   506,
-     507,    75,    89,   181,   182,    78,    42,    44,    46,   812,
-      76,    77,   813,   814,   815,   312,    99,   100,   129,   130,
-     656,   207,   131,    78,    78,    28,    29,    30,    31,   101,
-      78,    98,   102,   604,   605,   606,   607,   658,   608,   103,
-     104,   810,   659,   105,   811,   280,   208,    48,   209,   210,
-     183,   211,   212,   213,   184,   185,   186,   187,   188,   189,
-      50,   190,    52,   784,    54,   785,   786,   622,   623,   624,
-     625,   626,   627,   317,   672,    71,   422,   281,   660,   673,
-     737,   282,    78,    78,   423,   284,    78,   249,   250,   251,
-     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-     262,   283,    79,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,   289,   384,   385,   672,   697,    78,
-     701,   349,   674,   698,   293,   702,   419,   382,   350,    78,
-     333,   418,   703,    78,   366,   768,   294,   337,   420,   771,
-     298,   421,   775,   152,   299,   151,   798,   359,   827,   175,
-     300,   799,   168,   828,   301,   171,   176,   309,   316,   153,
-     327,   154,   191,   155,   758,   759,   760,   761,   328,   192,
-     231,   214,   196,   353,   357,   230,   358,   361,   363,   362,
-     368,   371,   373,   374,   232,   377,   233,   378,   379,   387,
-     386,   388,   389,   390,   263,   392,   395,   393,   394,   396,
-     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
-     407,   408,   409,   410,   411,   413,   414,   415,   429,   430,
-     431,   432,   433,   489,   490,   434,   435,   436,   437,   438,
-     439,   440,   441,   443,   444,   446,   447,   448,   449,   450,
-     451,   452,   453,   454,   455,   457,   458,   460,   459,   461,
-     462,   463,   465,   468,   469,   466,   472,   471,   473,   474,
-     475,   478,   479,   476,   483,   477,   484,   486,   480,   481,
-     495,   487,   482,   488,   491,   493,   494,   492,   496,   497,
-     498,   499,   500,   512,   513,   501,   502,   503,   504,   510,
-     511,   514,   522,   515,   516,   517,   518,   519,   520,   521,
-     584,   584,   523,   543,    26,   576,   576,   592,   526,   560,
-     527,   596,   600,   618,   644,   263,   529,   665,   419,   646,
-     558,   650,   530,   418,   666,   667,   531,   668,   669,   532,
-     420,   676,   677,   421,   533,   534,   535,   679,   680,   654,
-     682,   683,   689,   690,   536,   691,   692,   693,   694,   537,
-     695,   696,   710,   713,   709,   538,   539,   712,   716,   540,
-     541,   715,   718,   719,   550,   720,   721,   727,   728,   747,
-     748,   751,   524,   750,   756,   528,   757,   769,   391,   778,
-     542,   770,   776,   544,   796,   800,   802,   545,   804,   546,
-     824,   806,   825,   826,   829,   557,   412,   559,   564,   591,
-     416,   729,   736,   739,   738,   746,   704,   707,   470,   722,
-     731,   730,   442,   732,   733,   464,   753,   752,   734,   456,
-     763,   723,   735,   724,   467,   755,   754,   726,   725,   740,
-     741,   445,   742,   743,   642,   744,   745,   764,   765,   766,
-     645,   749,   485,   767,   772,   773,   717,   774,   794,   803,
-     822,   777,   833,   801,   805,   834,   830,     0,     0,   831,
-       0,     0,     0,   832,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   584,
-       0,     0,     0,     0,   576,   152,     0,   151,   231,     0,
-     214,     0,     0,   230,   168,     0,     0,   171,     0,     0,
-     244,   153,   232,   154,   233,   155,     0,     0,     0,     0,
+      68,   155,   423,   619,    25,   137,    26,    74,    27,    98,
+     550,   208,   228,   209,   210,   229,    88,    89,   137,   173,
+     174,   554,   555,   556,   557,   519,   520,   521,   242,   243,
+     607,   608,   609,   610,    36,   611,   290,    92,    93,    94,
+      24,   291,   138,   139,   140,    86,    98,   242,   243,    38,
+     558,    87,    88,    89,    40,   141,    90,    91,   142,   143,
+     144,   145,   146,   147,   312,    89,   181,   182,   280,   313,
+     148,   149,    42,    92,    93,    94,    95,    96,   150,   281,
+     207,    97,    98,   148,    78,   815,   639,   640,   816,   817,
+     818,    89,   181,   182,    98,   208,    44,   208,   129,   130,
+      78,    78,   131,    99,   100,   208,   551,   209,   210,    46,
+     211,   212,   213,   317,    75,    48,   101,   417,   318,   102,
+      98,    50,   687,    76,    77,   688,   103,   104,   333,   337,
+     105,    52,   689,   334,   338,   690,    78,    78,    28,    29,
+      30,    31,   183,    54,   506,   507,   184,   185,   186,   187,
+     188,   189,   568,   190,    71,   282,   283,   569,   570,   571,
+     572,   573,   574,   575,   576,   577,   578,   787,   284,   788,
+     789,   366,   785,    78,   289,   786,   367,   208,   625,   626,
+     627,   628,   629,   630,   382,    78,   422,    78,   813,   383,
+     293,   814,   294,   740,   423,    78,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
+     298,    78,    79,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,   312,   384,   385,   661,   317,   659,
+     675,   349,   662,   663,   675,   676,   419,   700,    78,   677,
+     704,   418,   701,   299,   382,   705,   300,   333,   420,   706,
+     301,   421,   771,   152,   309,   151,   366,   350,   337,   175,
+     316,   774,   168,   778,   327,   171,   176,    78,   328,   153,
+     801,   154,   191,   155,   353,   802,   357,   358,   830,   192,
+     231,   214,   196,   831,   359,   230,   761,   762,   763,   764,
+     361,   362,   363,   386,   232,   368,   233,   371,   373,   374,
+     377,   378,   379,   387,   263,   388,   389,   390,   392,   393,
+     395,   396,   397,   394,   398,   399,   400,   401,   402,   403,
+     404,   405,   406,   407,   408,   410,   411,   409,   413,   414,
+     429,   415,   430,   489,   490,   431,   432,   433,   434,   435,
+     436,   437,   438,   439,   440,   441,   443,   444,   446,   447,
+     448,   449,   450,   451,   452,   453,   454,   455,   457,   458,
+     459,   460,   461,   462,   463,   465,   468,   469,   466,   472,
+     471,   473,   474,   475,   478,   476,   477,   479,   483,   484,
+     480,   486,   481,   487,   492,   482,   488,   491,   493,   494,
+     495,   496,   497,   498,   499,   500,   512,   513,   501,   502,
+     503,   504,   510,   511,   514,   516,   515,   517,   524,   525,
+     587,   587,   518,   546,    26,   579,   579,   523,   526,   529,
+     595,   530,   599,   532,   533,   263,   534,   535,   419,   536,
+     561,   537,   603,   418,   621,   647,   649,   653,   668,   538,
+     420,   669,   670,   421,   539,   657,   671,   672,   540,   541,
+     542,   543,   544,   679,   680,   563,   682,   683,   685,   686,
+     693,   692,   545,   694,   695,   696,   547,   697,   548,   549,
+     698,   699,   553,   713,   712,   560,   716,   715,   719,   721,
+     718,   722,   723,   724,   730,   731,   750,   751,   754,   527,
+     753,   759,   531,   760,   772,   707,   807,   773,   779,   781,
+     799,   803,   805,   391,   827,   710,   809,   828,   725,   829,
+     832,   562,   727,   726,   412,   416,   567,   594,   732,   739,
+     728,   742,   741,   729,   743,   470,   749,   734,   733,   442,
+     735,   736,   464,   756,   755,   744,   737,   745,   746,   747,
+     738,   467,   445,   758,   748,   766,   648,   767,   768,   769,
+     770,   775,   757,   776,   456,   777,   780,   752,   804,   808,
+     837,   833,   834,   835,   485,   720,   645,   797,   806,   825,
+     836,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   587,     0,     0,     0,     0,   579,   152,     0,
+     151,   231,     0,   214,     0,     0,   230,   168,     0,     0,
+     171,     0,     0,   244,   153,   232,   154,   233,   155,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   175,     0,     0,   191,     0,     0,     0,
+     176,     0,     0,   192,     0,     0,   196,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     175,     0,     0,   191,     0,     0,     0,   176,     0,     0,
-     192,     0,     0,   196,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   788,     0,
-       0,     0,     0,   787,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   788,     0,     0,     0,     0,
-     787
+       0,   791,     0,     0,     0,     0,   790,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   791,     0,
+       0,     0,     0,   790
   };
 
   const short int
@@ -3631,223 +3658,223 @@ namespace isc { namespace dhcp {
       58,    61,    65,    61,    62,    63,    64,    65,    66,    67,
       61,    62,    63,    61,   319,    63,    65,    61,    65,    61,
       56,    61,   319,   499,     5,     7,     7,    10,     9,    48,
-       7,    15,     7,     3,    80,    81,    18,    19,     8,    58,
-      59,     3,     3,    19,    20,    21,     8,     8,    49,    50,
-      51,    52,    53,    80,    81,     3,     3,    39,    40,    41,
-       8,     8,    44,    45,    46,     0,    48,   110,   111,   112,
-     113,     3,    48,    49,     3,    57,     8,     6,    60,    61,
-      62,    63,    64,    65,     3,    91,    92,    69,    70,     8,
-     136,    11,    68,     7,    69,    77,   139,    17,    18,    19,
-      24,     3,    22,    23,     6,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,     3,     7,   136,     6,    39,
-      40,    41,    42,    43,   108,    49,    49,    47,    48,    14,
-      15,   114,    19,    20,    21,   136,     7,     7,     7,   117,
-     123,   124,   120,   121,   122,     3,    66,    67,    12,    13,
-       8,    24,    16,   136,   136,   136,   137,   138,   139,    79,
-     136,    48,    82,    71,    72,    73,    74,     3,    76,    89,
-      90,     3,     8,    93,     6,     6,    49,     7,    51,    52,
-      67,    54,    55,    56,    71,    72,    73,    74,    75,    76,
-       7,    78,     7,   116,     7,   118,   119,    83,    84,    85,
-      86,    87,    88,     3,     3,   136,   511,     3,     8,     8,
-     686,     4,   136,   136,   511,     3,   136,    94,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,     8,   290,   125,   126,   127,   128,   129,   130,   131,
-     132,   133,   134,   135,     4,   281,   282,     3,     3,   136,
-       3,     8,     8,     8,     4,     8,   319,     3,     3,   136,
-       3,   319,     8,   136,     3,     8,     4,     3,   319,     8,
+      15,    49,    50,    51,    52,    53,    18,    19,     7,    58,
+      59,   113,   114,   115,   116,    66,    67,    68,    83,    84,
+      74,    75,    76,    77,     7,    79,     3,    39,    40,    41,
+       0,     8,    44,    45,    46,    11,    48,    83,    84,     7,
+     142,    17,    18,    19,     7,    57,    22,    23,    60,    61,
+      62,    63,    64,    65,     3,    19,    20,    21,     6,     8,
+      72,    73,     7,    39,    40,    41,    42,    43,    80,     3,
+      24,    47,    48,    72,   139,   120,    94,    95,   123,   124,
+     125,    19,    20,    21,    48,    49,     7,    49,    12,    13,
+     139,   139,    16,    69,    70,    49,   111,    51,    52,     7,
+      54,    55,    56,     3,   117,     7,    82,    71,     8,    85,
+      48,     7,     3,   126,   127,     6,    92,    93,     3,     3,
+      96,     7,     3,     8,     8,     6,   139,   139,   139,   140,
+     141,   142,    70,     7,    14,    15,    74,    75,    76,    77,
+      78,    79,    24,    81,   139,     4,     8,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,   119,     3,   121,
+     122,     3,     3,   139,     4,     6,     8,    49,    86,    87,
+      88,    89,    90,    91,     3,   139,   511,   139,     3,     8,
+       4,     6,     4,   689,   511,   139,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+       4,   139,   290,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,     3,   281,   282,     3,     3,     8,
+       3,     8,     8,     8,     3,     8,   319,     3,   139,     8,
+       3,   319,     8,     4,     3,     8,     4,     3,   319,     8,
        4,   319,     8,   333,     4,   333,     3,     3,     3,   337,
-       4,     8,   333,     8,     4,   333,   337,     4,     4,   333,
-       4,   333,   350,   333,    25,    26,    27,    28,     4,   350,
-     363,   359,   350,     4,     4,   363,     8,     4,     3,     8,
-       4,     4,     4,     4,   363,     4,   363,     4,     4,     4,
-     136,     4,     4,     4,   382,     4,     4,   139,   139,     4,
-       4,   137,   137,   137,   137,     4,     4,     4,     4,     4,
-       4,     4,   137,     4,     4,     4,     4,   139,     4,     4,
-       4,     4,     4,   389,   390,     4,     4,   137,   139,     4,
+       4,     8,   333,     8,     4,   333,   337,   139,     4,   333,
+       3,   333,   350,   333,     4,     8,     4,     8,     3,   350,
+     363,   359,   350,     8,     3,   363,    25,    26,    27,    28,
+       4,     8,     3,   139,   363,     4,   363,     4,     4,     4,
+       4,     4,     4,     4,   382,     4,     4,     4,     4,   142,
+       4,     4,     4,   142,   140,   140,   140,   140,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,   140,     4,     4,
+       4,   142,     4,   389,   390,     4,     4,     4,     4,     4,
+     140,   142,     4,     4,     4,     4,     4,     4,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,   137,     4,
-       4,   139,     4,     4,     4,   139,     4,   139,     4,   137,
-       4,     4,     4,   137,     4,   137,     4,     4,   139,   139,
-       5,     7,   139,     7,     7,     7,     7,   136,     5,     5,
-       5,     5,     5,   136,   136,     7,     7,     7,     5,     8,
-       3,   136,     7,     5,   136,   136,   136,   136,   136,     5,
-     493,   494,   136,   469,     7,   493,   494,     7,   136,   115,
-     136,     7,     7,     7,     4,   503,   136,     4,   511,     7,
-     486,     7,   136,   511,     4,     4,   136,     4,     4,   136,
-     511,     6,     3,   511,   136,   136,   136,     6,     3,    78,
-       6,     3,     6,     3,   136,     4,     4,     4,     4,   136,
-       4,     4,     3,     3,     6,   136,   136,     6,     4,   136,
-     136,     8,     4,     4,   109,     4,     4,     4,     4,     4,
-       4,     3,   444,     6,     4,   448,     5,     8,   290,     7,
-     136,     8,     8,   136,     4,     4,     4,   136,     5,   136,
-       4,     7,     4,     4,     4,   136,   312,   487,   491,   494,
-     317,   672,   684,   690,   688,   697,   136,   136,   366,   137,
-     677,   675,   333,   678,   680,   359,   710,   708,   681,   350,
-     136,   139,   683,   137,   363,   713,   711,   137,   139,   137,
-     137,   337,   137,   137,   503,   137,   137,   136,   136,   136,
-     511,   701,   382,   136,   136,   136,   658,   136,   782,   798,
-     810,   136,   827,   137,   136,   136,   139,    -1,    -1,   137,
-      -1,    -1,    -1,   137,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   672,
-      -1,    -1,    -1,    -1,   672,   675,    -1,   675,   681,    -1,
-     678,    -1,    -1,   681,   675,    -1,    -1,   675,    -1,    -1,
-     688,   675,   681,   675,   681,   675,    -1,    -1,    -1,    -1,
+     140,     4,     4,     4,   142,     4,     4,     4,   142,     4,
+     142,     4,   140,     4,     4,   140,   140,     4,     4,     4,
+     142,     4,   142,     7,   139,   142,     7,     7,     7,     7,
+       5,     5,     5,     5,     5,     5,   139,   139,     7,     7,
+       7,     5,     8,     3,   139,   139,     5,   139,     5,     7,
+     493,   494,   139,   469,     7,   493,   494,   139,   139,   139,
+       7,   139,     7,   139,   139,   503,   139,   139,   511,   139,
+     486,   139,     7,   511,     7,     4,     7,     7,     4,   139,
+     511,     4,     4,   511,   139,    81,     4,     4,   139,   139,
+     139,   139,   139,     6,     3,   118,     6,     3,     6,     3,
+       3,     6,   139,     4,     4,     4,   139,     4,   139,   139,
+       4,     4,   112,     3,     6,   139,     3,     6,     4,     4,
+       8,     4,     4,     4,     4,     4,     4,     4,     3,   444,
+       6,     4,   448,     5,     8,   139,     5,     8,     8,     7,
+       4,     4,     4,   290,     4,   139,     7,     4,   140,     4,
+       4,   487,   140,   142,   312,   317,   491,   494,   675,   687,
+     142,   693,   691,   140,   140,   366,   700,   680,   678,   333,
+     681,   683,   359,   713,   711,   140,   684,   140,   140,   140,
+     686,   363,   337,   716,   140,   139,   511,   139,   139,   139,
+     139,   139,   714,   139,   350,   139,   139,   704,   140,   139,
+     139,   142,   140,   140,   382,   661,   503,   785,   801,   813,
+     830,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     708,    -1,    -1,   711,    -1,    -1,    -1,   708,    -1,    -1,
-     711,    -1,    -1,   711,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   675,    -1,    -1,    -1,    -1,   675,   678,    -1,
+     678,   684,    -1,   681,    -1,    -1,   684,   678,    -1,    -1,
+     678,    -1,    -1,   691,   678,   684,   678,   684,   678,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   711,    -1,    -1,   714,    -1,    -1,    -1,
+     711,    -1,    -1,   714,    -1,    -1,   714,    -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,   781,    -1,
-      -1,    -1,    -1,   781,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   798,    -1,    -1,    -1,    -1,
-     798
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   784,    -1,    -1,    -1,    -1,   784,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   801,    -1,
+      -1,    -1,    -1,   801
   };
 
   const unsigned short int
   Dhcp4Parser::yystos_[] =
   {
-       0,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-     134,   135,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,     0,     5,     7,     9,   136,   137,
-     138,   139,   153,   154,   155,   160,     7,   169,     7,   175,
-       7,   189,     7,   262,     7,   331,     7,   345,     7,   290,
-       7,   314,     7,   238,     7,   397,   161,   156,   170,   176,
-     190,   263,   332,   346,   291,   315,   239,   398,   153,   162,
-     163,   136,   158,   159,    10,   114,   123,   124,   136,   168,
-     171,   172,   173,   424,   426,   428,    11,    17,    18,    19,
-      22,    23,    39,    40,    41,    42,    43,    47,    48,    66,
-      67,    79,    82,    89,    90,    93,   168,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   197,   199,   223,   232,
-     246,   256,   284,   308,   350,   376,   386,   387,   395,    12,
-      13,    16,   187,   188,   191,   193,   196,     7,    44,    45,
-      46,    57,    60,    61,    62,    63,    64,    65,    69,    70,
-      77,   168,   179,   180,   181,   184,   264,   265,   266,   268,
-     270,   272,   274,   276,   278,   280,   282,   283,   308,   325,
-     339,   350,   372,    58,    59,   168,   308,   333,   334,   335,
-     337,    20,    21,    67,    71,    72,    73,    74,    75,    76,
-      78,   168,   308,   347,   348,   349,   350,   352,   354,   356,
-     358,   360,   362,   364,   366,   368,   370,    24,    49,    51,
-      52,    54,    55,    56,   168,   213,   292,   293,   294,   295,
-     296,   297,   298,   300,   302,   304,   305,   307,    50,    53,
-     168,   213,   296,   302,   316,   317,   318,   319,   320,   322,
-     323,   324,    80,    81,   168,   240,   241,   242,   244,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   168,   399,   400,   401,   402,   404,   406,
-     407,   409,   410,   411,   414,   416,   417,   418,   419,   422,
-       6,     3,     4,     8,     3,   174,   429,   425,   427,     4,
-       3,     8,   186,     4,     4,   351,   198,   200,     4,     4,
-       4,     4,   257,   285,   309,   224,   377,   233,   247,     4,
-     388,   396,     3,     8,   192,   194,     4,     3,     8,   379,
-     269,   271,   273,   326,   267,   275,   277,     4,     4,   281,
-     279,   340,   373,     3,     8,   336,   338,     3,     8,   353,
-     355,   371,   359,   361,   365,   363,   369,   367,   357,     8,
-       3,   299,   214,     4,   303,   301,   306,     4,     8,     3,
-     321,     4,     8,     3,   243,   245,     3,     8,     4,   403,
-     405,     4,   408,     4,     4,   412,   415,     4,     4,     4,
-     420,   423,     3,     8,   153,   153,   136,     4,     4,     4,
-       4,   172,     4,   139,   139,     4,     4,     4,   137,   137,
-     137,   137,     4,     4,     4,     4,     4,     4,     4,   137,
-       4,     4,   178,     4,     4,   139,   188,    68,   168,   213,
-     308,   350,   352,   354,   380,   381,   382,   383,   384,     4,
-       4,     4,     4,     4,     4,     4,   137,   139,     4,     4,
-       4,     4,   265,     4,     4,   334,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,   349,     4,     4,   137,
-       4,     4,     4,   139,   294,     4,   139,   318,     4,     4,
-     241,   139,     4,     4,   137,     4,   137,   137,     4,     4,
-     139,   139,   139,     4,     4,   400,     4,     7,     7,   153,
-     153,     7,   136,     7,     7,     5,     5,     5,     5,     5,
-       5,     7,     7,     7,     5,   164,    14,    15,   195,   385,
-       8,     3,   136,   136,   136,     5,   136,   136,   136,   136,
-     136,     5,     7,   136,   155,   157,   136,   136,   164,   136,
-     136,   136,   136,   136,   136,   136,   136,   136,   136,   136,
-     136,   136,   136,   153,   136,   136,   136,    15,   108,   413,
-     109,   110,   111,   112,   113,   139,   421,   136,   153,   177,
-     115,   430,   431,   432,   187,    24,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,   168,   201,   202,   203,
-     206,   208,   210,   212,   213,   215,   216,   217,   218,   219,
-     221,   201,     7,   258,   259,   260,     7,   286,   287,   288,
-       7,   310,   311,   312,    71,    72,    73,    74,    76,   225,
-     226,   227,   228,   229,   230,   231,   278,   378,     7,   234,
-     235,   236,    83,    84,    85,    86,    87,    88,   248,   249,
-     250,   251,   252,   253,   254,   255,    91,    92,   389,   390,
-     391,   393,   399,   165,     4,   382,     7,   327,   328,   329,
-       7,   341,   342,   343,    78,   374,     8,   433,     3,     8,
-       8,   204,   207,   209,   211,     4,     4,     4,     4,     4,
-     220,   222,     3,     8,     8,   261,     6,     3,   289,     6,
-       3,   313,     6,     3,     3,     6,     3,     6,   237,     6,
-       3,     4,     4,     4,     4,     4,     4,     3,     8,   392,
-     394,     3,     8,     8,   136,   166,   167,   136,   330,     6,
-       3,   344,     6,     3,   375,     8,     4,   431,     4,     4,
-       4,     4,   137,   139,   137,   139,   137,     4,     4,   202,
-     264,   260,   292,   288,   316,   312,   226,   278,   240,   236,
-     137,   137,   137,   137,   137,   137,   249,     4,     4,   390,
-       6,     3,   333,   329,   347,   343,     4,     5,    25,    26,
-      27,    28,   205,   136,   136,   136,   136,   136,     8,     8,
-       8,     8,   136,   136,   136,     8,     8,   136,     7,   434,
-     435,   436,     3,     6,   116,   118,   119,   168,   213,   437,
-     438,   439,   440,   442,   435,   443,     4,   441,     3,     8,
-       4,   137,     4,   438,     5,   136,     7,   444,   445,   446,
-       3,     6,   117,   120,   121,   122,   447,   448,   449,   451,
-     452,   453,   445,   450,     4,     4,     4,     3,     8,     4,
-     139,   137,   137,   448,   136
+       0,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   144,   145,   146,   147,   148,   149,   150,   151,
+     152,   153,   154,   155,     0,     5,     7,     9,   139,   140,
+     141,   142,   156,   157,   158,   163,     7,   172,     7,   178,
+       7,   192,     7,   265,     7,   335,     7,   349,     7,   294,
+       7,   318,     7,   241,     7,   401,   164,   159,   173,   179,
+     193,   266,   336,   350,   295,   319,   242,   402,   156,   165,
+     166,   139,   161,   162,    10,   117,   126,   127,   139,   171,
+     174,   175,   176,   428,   430,   432,    11,    17,    18,    19,
+      22,    23,    39,    40,    41,    42,    43,    47,    48,    69,
+      70,    82,    85,    92,    93,    96,   171,   180,   181,   182,
+     183,   184,   185,   186,   187,   188,   200,   202,   226,   235,
+     249,   259,   288,   312,   354,   380,   390,   391,   399,    12,
+      13,    16,   190,   191,   194,   196,   199,     7,    44,    45,
+      46,    57,    60,    61,    62,    63,    64,    65,    72,    73,
+      80,   171,   182,   183,   184,   187,   267,   268,   269,   271,
+     273,   275,   277,   279,   281,   283,   286,   287,   312,   329,
+     343,   354,   376,    58,    59,   171,   312,   337,   338,   339,
+     341,    20,    21,    70,    74,    75,    76,    77,    78,    79,
+      81,   171,   312,   351,   352,   353,   354,   356,   358,   360,
+     362,   364,   366,   368,   370,   372,   374,    24,    49,    51,
+      52,    54,    55,    56,   171,   216,   296,   297,   298,   299,
+     300,   301,   302,   304,   306,   308,   309,   311,    50,    53,
+     171,   216,   300,   306,   320,   321,   322,   323,   324,   326,
+     327,   328,    83,    84,   171,   243,   244,   245,   247,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   171,   403,   404,   405,   406,   408,   410,
+     411,   413,   414,   415,   418,   420,   421,   422,   423,   426,
+       6,     3,     4,     8,     3,   177,   433,   429,   431,     4,
+       3,     8,   189,     4,     4,   355,   201,   203,     4,     4,
+       4,     4,   260,   289,   313,   227,   381,   236,   250,     4,
+     392,   400,     3,     8,   195,   197,     4,     3,     8,   383,
+     272,   274,   276,   330,   270,   278,   280,     4,     4,   284,
+     282,   344,   377,     3,     8,   340,   342,     3,     8,   357,
+     359,   375,   363,   365,   369,   367,   373,   371,   361,     8,
+       3,   303,   217,     4,   307,   305,   310,     4,     8,     3,
+     325,     4,     8,     3,   246,   248,     3,     8,     4,   407,
+     409,     4,   412,     4,     4,   416,   419,     4,     4,     4,
+     424,   427,     3,     8,   156,   156,   139,     4,     4,     4,
+       4,   175,     4,   142,   142,     4,     4,     4,   140,   140,
+     140,   140,     4,     4,     4,     4,     4,     4,     4,   140,
+       4,     4,   181,     4,     4,   142,   191,    71,   171,   216,
+     312,   354,   356,   358,   384,   385,   386,   387,   388,     4,
+       4,     4,     4,     4,     4,     4,   140,   142,     4,     4,
+       4,     4,   268,     4,     4,   338,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,   353,     4,     4,   140,
+       4,     4,     4,   142,   298,     4,   142,   322,     4,     4,
+     244,   142,     4,     4,   140,     4,   140,   140,     4,     4,
+     142,   142,   142,     4,     4,   404,     4,     7,     7,   156,
+     156,     7,   139,     7,     7,     5,     5,     5,     5,     5,
+       5,     7,     7,     7,     5,   167,    14,    15,   198,   389,
+       8,     3,   139,   139,   139,     5,   139,   139,   139,    66,
+      67,    68,   285,   139,     5,     7,   139,   158,   160,   139,
+     139,   167,   139,   139,   139,   139,   139,   139,   139,   139,
+     139,   139,   139,   139,   139,   139,   156,   139,   139,   139,
+      15,   111,   417,   112,   113,   114,   115,   116,   142,   425,
+     139,   156,   180,   118,   434,   435,   436,   190,    24,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,   171,
+     204,   205,   206,   209,   211,   213,   215,   216,   218,   219,
+     220,   221,   222,   224,   204,     7,   261,   262,   263,     7,
+     290,   291,   292,     7,   314,   315,   316,    74,    75,    76,
+      77,    79,   228,   229,   230,   231,   232,   233,   234,   281,
+     382,     7,   237,   238,   239,    86,    87,    88,    89,    90,
+      91,   251,   252,   253,   254,   255,   256,   257,   258,    94,
+      95,   393,   394,   395,   397,   403,   168,     4,   386,     7,
+     331,   332,   333,     7,   345,   346,   347,    81,   378,     8,
+     437,     3,     8,     8,   207,   210,   212,   214,     4,     4,
+       4,     4,     4,   223,   225,     3,     8,     8,   264,     6,
+       3,   293,     6,     3,   317,     6,     3,     3,     6,     3,
+       6,   240,     6,     3,     4,     4,     4,     4,     4,     4,
+       3,     8,   396,   398,     3,     8,     8,   139,   169,   170,
+     139,   334,     6,     3,   348,     6,     3,   379,     8,     4,
+     435,     4,     4,     4,     4,   140,   142,   140,   142,   140,
+       4,     4,   205,   267,   263,   296,   292,   320,   316,   229,
+     281,   243,   239,   140,   140,   140,   140,   140,   140,   252,
+       4,     4,   394,     6,     3,   337,   333,   351,   347,     4,
+       5,    25,    26,    27,    28,   208,   139,   139,   139,   139,
+     139,     8,     8,     8,     8,   139,   139,   139,     8,     8,
+     139,     7,   438,   439,   440,     3,     6,   119,   121,   122,
+     171,   216,   441,   442,   443,   444,   446,   439,   447,     4,
+     445,     3,     8,     4,   140,     4,   442,     5,   139,     7,
+     448,   449,   450,     3,     6,   120,   123,   124,   125,   451,
+     452,   453,   455,   456,   457,   449,   454,     4,     4,     4,
+       3,     8,     4,   142,   140,   140,   452,   139
   };
 
   const unsigned short int
   Dhcp4Parser::yyr1_[] =
   {
-       0,   140,   142,   141,   143,   141,   144,   141,   145,   141,
-     146,   141,   147,   141,   148,   141,   149,   141,   150,   141,
-     151,   141,   152,   141,   153,   153,   153,   153,   153,   153,
-     153,   154,   156,   155,   157,   158,   158,   159,   159,   161,
-     160,   162,   162,   163,   163,   165,   164,   166,   166,   167,
-     167,   168,   170,   169,   171,   171,   172,   172,   172,   172,
-     172,   174,   173,   176,   175,   177,   177,   178,   178,   178,
-     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
-     178,   178,   178,   178,   178,   178,   178,   178,   179,   180,
-     181,   182,   183,   184,   186,   185,   187,   187,   188,   188,
-     188,   190,   189,   192,   191,   194,   193,   195,   195,   196,
-     198,   197,   200,   199,   201,   201,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   204,
-     203,   205,   205,   205,   205,   207,   206,   209,   208,   211,
-     210,   212,   214,   213,   215,   216,   217,   218,   220,   219,
-     222,   221,   224,   223,   225,   225,   226,   226,   226,   226,
-     226,   227,   228,   229,   230,   231,   233,   232,   234,   234,
-     235,   235,   237,   236,   239,   238,   240,   240,   240,   241,
-     241,   243,   242,   245,   244,   247,   246,   248,   248,   249,
-     249,   249,   249,   249,   249,   250,   251,   252,   253,   254,
-     255,   257,   256,   258,   258,   259,   259,   261,   260,   263,
-     262,   264,   264,   265,   265,   265,   265,   265,   265,   265,
-     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
-     265,   265,   265,   267,   266,   269,   268,   271,   270,   273,
-     272,   275,   274,   277,   276,   279,   278,   281,   280,   282,
-     283,   285,   284,   286,   286,   287,   287,   289,   288,   291,
-     290,   292,   292,   293,   293,   294,   294,   294,   294,   294,
-     294,   294,   294,   295,   296,   297,   299,   298,   301,   300,
-     303,   302,   304,   306,   305,   307,   309,   308,   310,   310,
-     311,   311,   313,   312,   315,   314,   316,   316,   317,   317,
-     318,   318,   318,   318,   318,   318,   319,   321,   320,   322,
-     323,   324,   326,   325,   327,   327,   328,   328,   330,   329,
-     332,   331,   333,   333,   334,   334,   334,   334,   336,   335,
-     338,   337,   340,   339,   341,   341,   342,   342,   344,   343,
-     346,   345,   347,   347,   348,   348,   349,   349,   349,   349,
-     349,   349,   349,   349,   349,   349,   349,   349,   349,   351,
-     350,   353,   352,   355,   354,   357,   356,   359,   358,   361,
-     360,   363,   362,   365,   364,   367,   366,   369,   368,   371,
-     370,   373,   372,   375,   374,   377,   376,   378,   378,   379,
-     278,   380,   380,   381,   381,   382,   382,   382,   382,   382,
-     382,   382,   383,   385,   384,   386,   388,   387,   389,   389,
-     390,   390,   392,   391,   394,   393,   396,   395,   398,   397,
-     399,   399,   400,   400,   400,   400,   400,   400,   400,   400,
-     400,   400,   400,   400,   400,   400,   400,   401,   403,   402,
-     405,   404,   406,   408,   407,   409,   410,   412,   411,   413,
-     413,   415,   414,   416,   417,   418,   420,   419,   421,   421,
-     421,   421,   421,   423,   422,   425,   424,   427,   426,   429,
-     428,   430,   430,   431,   433,   432,   434,   434,   436,   435,
-     437,   437,   438,   438,   438,   438,   438,   439,   441,   440,
-     443,   442,   444,   444,   446,   445,   447,   447,   448,   448,
-     448,   448,   450,   449,   451,   452,   453
+       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,   156,   156,   156,   156,   156,
+     156,   157,   159,   158,   160,   161,   161,   162,   162,   164,
+     163,   165,   165,   166,   166,   168,   167,   169,   169,   170,
+     170,   171,   173,   172,   174,   174,   175,   175,   175,   175,
+     175,   177,   176,   179,   178,   180,   180,   181,   181,   181,
+     181,   181,   181,   181,   181,   181,   181,   181,   181,   181,
+     181,   181,   181,   181,   181,   181,   181,   181,   182,   183,
+     184,   185,   186,   187,   189,   188,   190,   190,   191,   191,
+     191,   193,   192,   195,   194,   197,   196,   198,   198,   199,
+     201,   200,   203,   202,   204,   204,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   207,
+     206,   208,   208,   208,   208,   210,   209,   212,   211,   214,
+     213,   215,   217,   216,   218,   219,   220,   221,   223,   222,
+     225,   224,   227,   226,   228,   228,   229,   229,   229,   229,
+     229,   230,   231,   232,   233,   234,   236,   235,   237,   237,
+     238,   238,   240,   239,   242,   241,   243,   243,   243,   244,
+     244,   246,   245,   248,   247,   250,   249,   251,   251,   252,
+     252,   252,   252,   252,   252,   253,   254,   255,   256,   257,
+     258,   260,   259,   261,   261,   262,   262,   264,   263,   266,
+     265,   267,   267,   268,   268,   268,   268,   268,   268,   268,
+     268,   268,   268,   268,   268,   268,   268,   268,   268,   268,
+     268,   268,   268,   270,   269,   272,   271,   274,   273,   276,
+     275,   278,   277,   280,   279,   282,   281,   284,   283,   285,
+     285,   285,   286,   287,   289,   288,   290,   290,   291,   291,
+     293,   292,   295,   294,   296,   296,   297,   297,   298,   298,
+     298,   298,   298,   298,   298,   298,   299,   300,   301,   303,
+     302,   305,   304,   307,   306,   308,   310,   309,   311,   313,
+     312,   314,   314,   315,   315,   317,   316,   319,   318,   320,
+     320,   321,   321,   322,   322,   322,   322,   322,   322,   323,
+     325,   324,   326,   327,   328,   330,   329,   331,   331,   332,
+     332,   334,   333,   336,   335,   337,   337,   338,   338,   338,
+     338,   340,   339,   342,   341,   344,   343,   345,   345,   346,
+     346,   348,   347,   350,   349,   351,   351,   352,   352,   353,
+     353,   353,   353,   353,   353,   353,   353,   353,   353,   353,
+     353,   353,   355,   354,   357,   356,   359,   358,   361,   360,
+     363,   362,   365,   364,   367,   366,   369,   368,   371,   370,
+     373,   372,   375,   374,   377,   376,   379,   378,   381,   380,
+     382,   382,   383,   281,   384,   384,   385,   385,   386,   386,
+     386,   386,   386,   386,   386,   387,   389,   388,   390,   392,
+     391,   393,   393,   394,   394,   396,   395,   398,   397,   400,
+     399,   402,   401,   403,   403,   404,   404,   404,   404,   404,
+     404,   404,   404,   404,   404,   404,   404,   404,   404,   404,
+     405,   407,   406,   409,   408,   410,   412,   411,   413,   414,
+     416,   415,   417,   417,   419,   418,   420,   421,   422,   424,
+     423,   425,   425,   425,   425,   425,   427,   426,   429,   428,
+     431,   430,   433,   432,   434,   434,   435,   437,   436,   438,
+     438,   440,   439,   441,   441,   442,   442,   442,   442,   442,
+     443,   445,   444,   447,   446,   448,   448,   450,   449,   451,
+     451,   452,   452,   452,   452,   454,   453,   455,   456,   457
   };
 
   const unsigned char
@@ -3877,33 +3904,33 @@ namespace isc { namespace dhcp {
        4,     1,     3,     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,     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,     1,     0,
-       4,     0,     4,     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,     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,     1,     1,
-       1,     1,     0,     4,     3,     3,     3
+       4,     0,     4,     0,     4,     0,     4,     0,     4,     1,
+       1,     1,     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,     1,     0,     4,     0,     4,     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,
+       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,     1,     1,     1,     1,     0,     4,     3,     3,     3
   };
 
 
@@ -3930,6 +3957,7 @@ namespace isc { namespace dhcp {
   "\"record-types\"", "\"encapsulate\"", "\"array\"", "\"pools\"",
   "\"pool\"", "\"user-context\"", "\"subnet\"", "\"interface\"",
   "\"interface-id\"", "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"",
+  "\"disabled\"", "\"out-of-pool\"", "\"all\"",
   "\"host-reservation-identifiers\"", "\"client-classes\"", "\"test\"",
   "\"client-class\"", "\"reservations\"", "\"duid\"", "\"hw-address\"",
   "\"circuit-id\"", "\"client-id\"", "\"hostname\"", "\"flex-id\"",
@@ -3984,12 +4012,12 @@ namespace isc { namespace dhcp {
   "sub_subnet4", "$@40", "subnet4_params", "subnet4_param", "subnet",
   "$@41", "subnet_4o6_interface", "$@42", "subnet_4o6_interface_id",
   "$@43", "subnet_4o6_subnet", "$@44", "interface", "$@45", "interface_id",
-  "$@46", "client_class", "$@47", "reservation_mode", "$@48", "id",
-  "rapid_commit", "option_def_list", "$@49", "option_def_list_content",
-  "not_empty_option_def_list", "option_def_entry", "$@50",
-  "sub_option_def", "$@51", "option_def_params",
-  "not_empty_option_def_params", "option_def_param", "option_def_name",
-  "code", "option_def_code", "option_def_type", "$@52",
+  "$@46", "client_class", "$@47", "reservation_mode", "$@48", "hr_mode",
+  "id", "rapid_commit", "option_def_list", "$@49",
+  "option_def_list_content", "not_empty_option_def_list",
+  "option_def_entry", "$@50", "sub_option_def", "$@51",
+  "option_def_params", "not_empty_option_def_params", "option_def_param",
+  "option_def_name", "code", "option_def_code", "option_def_type", "$@52",
   "option_def_record_types", "$@53", "space", "$@54", "option_def_space",
   "option_def_encapsulate", "$@55", "option_def_array", "option_data_list",
   "$@56", "option_data_list_content", "not_empty_option_data_list",
@@ -4034,57 +4062,57 @@ namespace isc { namespace dhcp {
   const unsigned short int
   Dhcp4Parser::yyrline_[] =
   {
-       0,   220,   220,   220,   221,   221,   222,   222,   223,   223,
-     224,   224,   225,   225,   226,   226,   227,   227,   228,   228,
-     229,   229,   230,   230,   238,   239,   240,   241,   242,   243,
-     244,   247,   252,   252,   263,   266,   267,   270,   274,   281,
-     281,   288,   289,   292,   296,   303,   303,   310,   311,   314,
-     318,   329,   339,   339,   351,   352,   356,   357,   358,   359,
-     360,   363,   363,   380,   380,   388,   389,   394,   395,   396,
-     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
-     407,   408,   409,   410,   411,   412,   413,   414,   417,   422,
-     427,   432,   437,   442,   448,   448,   458,   459,   462,   463,
-     464,   467,   467,   475,   475,   485,   485,   492,   493,   496,
-     502,   502,   512,   512,   522,   523,   526,   527,   528,   529,
-     530,   531,   532,   533,   534,   535,   536,   537,   538,   541,
-     541,   548,   549,   550,   551,   554,   554,   562,   562,   570,
-     570,   578,   583,   583,   591,   596,   601,   606,   611,   611,
-     619,   619,   628,   628,   638,   639,   642,   643,   644,   645,
-     646,   649,   654,   659,   664,   669,   674,   674,   684,   685,
-     688,   689,   692,   692,   700,   700,   708,   709,   710,   713,
-     714,   717,   717,   725,   725,   733,   733,   743,   744,   747,
-     748,   749,   750,   751,   752,   755,   760,   765,   770,   775,
-     780,   788,   788,   801,   802,   805,   806,   813,   813,   836,
-     836,   845,   846,   850,   851,   852,   853,   854,   855,   856,
-     857,   858,   859,   860,   861,   862,   863,   864,   865,   866,
-     867,   868,   869,   872,   872,   880,   880,   888,   888,   896,
-     896,   904,   904,   912,   912,   920,   920,   928,   928,   936,
-     941,   950,   950,   962,   963,   966,   967,   972,   972,   983,
-     983,   993,   994,   997,   998,  1001,  1002,  1003,  1004,  1005,
-    1006,  1007,  1008,  1011,  1013,  1018,  1020,  1020,  1028,  1028,
-    1036,  1036,  1044,  1046,  1046,  1054,  1063,  1063,  1075,  1076,
-    1081,  1082,  1087,  1087,  1098,  1098,  1109,  1110,  1115,  1116,
-    1121,  1122,  1123,  1124,  1125,  1126,  1129,  1131,  1131,  1139,
-    1141,  1143,  1151,  1151,  1163,  1164,  1167,  1168,  1171,  1171,
-    1179,  1179,  1187,  1188,  1191,  1192,  1193,  1194,  1197,  1197,
-    1205,  1205,  1215,  1215,  1225,  1226,  1229,  1230,  1233,  1233,
-    1241,  1241,  1249,  1250,  1253,  1254,  1258,  1259,  1260,  1261,
-    1262,  1263,  1264,  1265,  1266,  1267,  1268,  1269,  1270,  1273,
-    1273,  1281,  1281,  1289,  1289,  1297,  1297,  1305,  1305,  1313,
-    1313,  1321,  1321,  1329,  1329,  1337,  1337,  1345,  1345,  1353,
-    1353,  1366,  1366,  1376,  1376,  1387,  1387,  1397,  1398,  1401,
-    1401,  1409,  1410,  1413,  1414,  1417,  1418,  1419,  1420,  1421,
-    1422,  1423,  1426,  1428,  1428,  1440,  1447,  1447,  1457,  1458,
-    1461,  1462,  1465,  1465,  1473,  1473,  1483,  1483,  1493,  1493,
-    1501,  1502,  1505,  1506,  1507,  1508,  1509,  1510,  1511,  1512,
-    1513,  1514,  1515,  1516,  1517,  1518,  1519,  1522,  1527,  1527,
-    1535,  1535,  1543,  1548,  1548,  1556,  1561,  1566,  1566,  1574,
-    1575,  1578,  1578,  1586,  1591,  1596,  1601,  1601,  1609,  1612,
-    1615,  1618,  1621,  1627,  1627,  1637,  1637,  1644,  1644,  1656,
-    1656,  1669,  1670,  1674,  1678,  1678,  1690,  1691,  1695,  1695,
-    1703,  1704,  1707,  1708,  1709,  1710,  1711,  1714,  1719,  1719,
-    1727,  1727,  1737,  1738,  1741,  1741,  1749,  1750,  1753,  1754,
-    1755,  1756,  1759,  1759,  1767,  1772,  1777
+       0,   224,   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,   421,   426,
+     431,   436,   441,   446,   452,   452,   462,   463,   466,   467,
+     468,   471,   471,   479,   479,   489,   489,   496,   497,   500,
+     506,   506,   516,   516,   526,   527,   530,   531,   532,   533,
+     534,   535,   536,   537,   538,   539,   540,   541,   542,   545,
+     545,   552,   553,   554,   555,   558,   558,   566,   566,   574,
+     574,   582,   587,   587,   595,   600,   605,   610,   615,   615,
+     623,   623,   632,   632,   642,   643,   646,   647,   648,   649,
+     650,   653,   658,   663,   668,   673,   678,   678,   688,   689,
+     692,   693,   696,   696,   704,   704,   712,   713,   714,   717,
+     718,   721,   721,   729,   729,   737,   737,   747,   748,   751,
+     752,   753,   754,   755,   756,   759,   764,   769,   774,   779,
+     784,   792,   792,   805,   806,   809,   810,   817,   817,   840,
+     840,   849,   850,   854,   855,   856,   857,   858,   859,   860,
+     861,   862,   863,   864,   865,   866,   867,   868,   869,   870,
+     871,   872,   873,   876,   876,   884,   884,   892,   892,   900,
+     900,   908,   908,   916,   916,   924,   924,   932,   932,   939,
+     940,   941,   944,   949,   958,   958,   970,   971,   974,   975,
+     980,   980,   991,   991,  1001,  1002,  1005,  1006,  1009,  1010,
+    1011,  1012,  1013,  1014,  1015,  1016,  1019,  1021,  1026,  1028,
+    1028,  1036,  1036,  1044,  1044,  1052,  1054,  1054,  1062,  1071,
+    1071,  1083,  1084,  1089,  1090,  1095,  1095,  1106,  1106,  1117,
+    1118,  1123,  1124,  1129,  1130,  1131,  1132,  1133,  1134,  1137,
+    1139,  1139,  1147,  1149,  1151,  1159,  1159,  1171,  1172,  1175,
+    1176,  1179,  1179,  1187,  1187,  1195,  1196,  1199,  1200,  1201,
+    1202,  1205,  1205,  1213,  1213,  1223,  1223,  1233,  1234,  1237,
+    1238,  1241,  1241,  1249,  1249,  1257,  1258,  1261,  1262,  1266,
+    1267,  1268,  1269,  1270,  1271,  1272,  1273,  1274,  1275,  1276,
+    1277,  1278,  1281,  1281,  1289,  1289,  1297,  1297,  1305,  1305,
+    1313,  1313,  1321,  1321,  1329,  1329,  1337,  1337,  1345,  1345,
+    1353,  1353,  1361,  1361,  1374,  1374,  1384,  1384,  1395,  1395,
+    1405,  1406,  1409,  1409,  1417,  1418,  1421,  1422,  1425,  1426,
+    1427,  1428,  1429,  1430,  1431,  1434,  1436,  1436,  1448,  1455,
+    1455,  1465,  1466,  1469,  1470,  1473,  1473,  1481,  1481,  1491,
+    1491,  1501,  1501,  1509,  1510,  1513,  1514,  1515,  1516,  1517,
+    1518,  1519,  1520,  1521,  1522,  1523,  1524,  1525,  1526,  1527,
+    1530,  1535,  1535,  1543,  1543,  1551,  1556,  1556,  1564,  1569,
+    1574,  1574,  1582,  1583,  1586,  1586,  1594,  1599,  1604,  1609,
+    1609,  1617,  1620,  1623,  1626,  1629,  1635,  1635,  1645,  1645,
+    1652,  1652,  1664,  1664,  1677,  1678,  1682,  1686,  1686,  1698,
+    1699,  1703,  1703,  1711,  1712,  1715,  1716,  1717,  1718,  1719,
+    1722,  1727,  1727,  1735,  1735,  1745,  1746,  1749,  1749,  1757,
+    1758,  1761,  1762,  1763,  1764,  1767,  1767,  1775,  1780,  1785
   };
 
   // Print the state stack on the debug stream.
@@ -4119,8 +4147,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4123 "dhcp4_parser.cc" // lalr1.cc:1167
-#line 1782 "dhcp4_parser.yy" // lalr1.cc:1168
+#line 4151 "dhcp4_parser.cc" // lalr1.cc:1167
+#line 1790 "dhcp4_parser.yy" // lalr1.cc:1168
 
 
 void
index 62c5cfbb31ad0a5f9753492afe2bd1d595a63380..7385e789920b8c4898617e3633c4c7ff26b034fc 100644 (file)
@@ -308,6 +308,7 @@ namespace isc { namespace dhcp {
       // map_value
       // socket_type
       // db_type
+      // hr_mode
       // ncr_protocol_value
       // replace_client_name_value
       char dummy1[sizeof(ElementPtr)];
@@ -409,80 +410,83 @@ namespace isc { namespace dhcp {
         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_FLEX_ID = 331,
-        TOKEN_RELAY = 332,
-        TOKEN_IP_ADDRESS = 333,
-        TOKEN_HOOKS_LIBRARIES = 334,
-        TOKEN_LIBRARY = 335,
-        TOKEN_PARAMETERS = 336,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 337,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 338,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 339,
-        TOKEN_HOLD_RECLAIMED_TIME = 340,
-        TOKEN_MAX_RECLAIM_LEASES = 341,
-        TOKEN_MAX_RECLAIM_TIME = 342,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 343,
-        TOKEN_DHCP4O6_PORT = 344,
-        TOKEN_CONTROL_SOCKET = 345,
-        TOKEN_SOCKET_TYPE = 346,
-        TOKEN_SOCKET_NAME = 347,
-        TOKEN_DHCP_DDNS = 348,
-        TOKEN_ENABLE_UPDATES = 349,
-        TOKEN_QUALIFYING_SUFFIX = 350,
-        TOKEN_SERVER_IP = 351,
-        TOKEN_SERVER_PORT = 352,
-        TOKEN_SENDER_IP = 353,
-        TOKEN_SENDER_PORT = 354,
-        TOKEN_MAX_QUEUE_SIZE = 355,
-        TOKEN_NCR_PROTOCOL = 356,
-        TOKEN_NCR_FORMAT = 357,
-        TOKEN_ALWAYS_INCLUDE_FQDN = 358,
-        TOKEN_OVERRIDE_NO_UPDATE = 359,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 360,
-        TOKEN_REPLACE_CLIENT_NAME = 361,
-        TOKEN_GENERATED_PREFIX = 362,
-        TOKEN_TCP = 363,
-        TOKEN_JSON = 364,
-        TOKEN_WHEN_PRESENT = 365,
-        TOKEN_NEVER = 366,
-        TOKEN_ALWAYS = 367,
-        TOKEN_WHEN_NOT_PRESENT = 368,
-        TOKEN_LOGGING = 369,
-        TOKEN_LOGGERS = 370,
-        TOKEN_OUTPUT_OPTIONS = 371,
-        TOKEN_OUTPUT = 372,
-        TOKEN_DEBUGLEVEL = 373,
-        TOKEN_SEVERITY = 374,
-        TOKEN_FLUSH = 375,
-        TOKEN_MAXSIZE = 376,
-        TOKEN_MAXVER = 377,
-        TOKEN_DHCP6 = 378,
-        TOKEN_DHCPDDNS = 379,
-        TOKEN_TOPLEVEL_JSON = 380,
-        TOKEN_TOPLEVEL_DHCP4 = 381,
-        TOKEN_SUB_DHCP4 = 382,
-        TOKEN_SUB_INTERFACES4 = 383,
-        TOKEN_SUB_SUBNET4 = 384,
-        TOKEN_SUB_POOL4 = 385,
-        TOKEN_SUB_RESERVATION = 386,
-        TOKEN_SUB_OPTION_DEF = 387,
-        TOKEN_SUB_OPTION_DATA = 388,
-        TOKEN_SUB_HOOKS_LIBRARY = 389,
-        TOKEN_SUB_DHCP_DDNS = 390,
-        TOKEN_STRING = 391,
-        TOKEN_INTEGER = 392,
-        TOKEN_FLOAT = 393,
-        TOKEN_BOOLEAN = 394
+        TOKEN_DISABLED = 321,
+        TOKEN_OUT_OF_POOL = 322,
+        TOKEN_ALL = 323,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 324,
+        TOKEN_CLIENT_CLASSES = 325,
+        TOKEN_TEST = 326,
+        TOKEN_CLIENT_CLASS = 327,
+        TOKEN_RESERVATIONS = 328,
+        TOKEN_DUID = 329,
+        TOKEN_HW_ADDRESS = 330,
+        TOKEN_CIRCUIT_ID = 331,
+        TOKEN_CLIENT_ID = 332,
+        TOKEN_HOSTNAME = 333,
+        TOKEN_FLEX_ID = 334,
+        TOKEN_RELAY = 335,
+        TOKEN_IP_ADDRESS = 336,
+        TOKEN_HOOKS_LIBRARIES = 337,
+        TOKEN_LIBRARY = 338,
+        TOKEN_PARAMETERS = 339,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 340,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 341,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 342,
+        TOKEN_HOLD_RECLAIMED_TIME = 343,
+        TOKEN_MAX_RECLAIM_LEASES = 344,
+        TOKEN_MAX_RECLAIM_TIME = 345,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 346,
+        TOKEN_DHCP4O6_PORT = 347,
+        TOKEN_CONTROL_SOCKET = 348,
+        TOKEN_SOCKET_TYPE = 349,
+        TOKEN_SOCKET_NAME = 350,
+        TOKEN_DHCP_DDNS = 351,
+        TOKEN_ENABLE_UPDATES = 352,
+        TOKEN_QUALIFYING_SUFFIX = 353,
+        TOKEN_SERVER_IP = 354,
+        TOKEN_SERVER_PORT = 355,
+        TOKEN_SENDER_IP = 356,
+        TOKEN_SENDER_PORT = 357,
+        TOKEN_MAX_QUEUE_SIZE = 358,
+        TOKEN_NCR_PROTOCOL = 359,
+        TOKEN_NCR_FORMAT = 360,
+        TOKEN_ALWAYS_INCLUDE_FQDN = 361,
+        TOKEN_OVERRIDE_NO_UPDATE = 362,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 363,
+        TOKEN_REPLACE_CLIENT_NAME = 364,
+        TOKEN_GENERATED_PREFIX = 365,
+        TOKEN_TCP = 366,
+        TOKEN_JSON = 367,
+        TOKEN_WHEN_PRESENT = 368,
+        TOKEN_NEVER = 369,
+        TOKEN_ALWAYS = 370,
+        TOKEN_WHEN_NOT_PRESENT = 371,
+        TOKEN_LOGGING = 372,
+        TOKEN_LOGGERS = 373,
+        TOKEN_OUTPUT_OPTIONS = 374,
+        TOKEN_OUTPUT = 375,
+        TOKEN_DEBUGLEVEL = 376,
+        TOKEN_SEVERITY = 377,
+        TOKEN_FLUSH = 378,
+        TOKEN_MAXSIZE = 379,
+        TOKEN_MAXVER = 380,
+        TOKEN_DHCP6 = 381,
+        TOKEN_DHCPDDNS = 382,
+        TOKEN_TOPLEVEL_JSON = 383,
+        TOKEN_TOPLEVEL_DHCP4 = 384,
+        TOKEN_SUB_DHCP4 = 385,
+        TOKEN_SUB_INTERFACES4 = 386,
+        TOKEN_SUB_SUBNET4 = 387,
+        TOKEN_SUB_POOL4 = 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
       };
     };
 
@@ -853,6 +857,18 @@ namespace isc { namespace dhcp {
     symbol_type
     make_RESERVATION_MODE (const location_type& l);
 
+    static inline
+    symbol_type
+    make_DISABLED (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OUT_OF_POOL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ALL (const location_type& l);
+
     static inline
     symbol_type
     make_HOST_RESERVATION_IDENTIFIERS (const location_type& l);
@@ -1354,12 +1370,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 740,     ///< Last index in yytable_.
-      yynnts_ = 314,  ///< Number of nonterminal symbols.
+      yylast_ = 743,     ///< Last index in yytable_.
+      yynnts_ = 315,  ///< Number of nonterminal symbols.
       yyfinal_ = 24, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 140  ///< Number of tokens.
+      yyntokens_ = 143  ///< Number of tokens.
     };
 
 
@@ -1415,9 +1431,9 @@ namespace isc { namespace dhcp {
      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
+     135,   136,   137,   138,   139,   140,   141,   142
     };
-    const unsigned int user_token_number_max_ = 394;
+    const unsigned int user_token_number_max_ = 397;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1450,28 +1466,29 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 153: // value
-      case 157: // map_value
-      case 195: // socket_type
-      case 205: // db_type
-      case 413: // ncr_protocol_value
-      case 421: // replace_client_name_value
+      case 156: // value
+      case 160: // map_value
+      case 198: // socket_type
+      case 208: // db_type
+      case 285: // hr_mode
+      case 417: // ncr_protocol_value
+      case 425: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 139: // "boolean"
+      case 142: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 138: // "floating point"
+      case 141: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 137: // "integer"
+      case 140: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 136: // "constant string"
+      case 139: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1492,28 +1509,29 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 153: // value
-      case 157: // map_value
-      case 195: // socket_type
-      case 205: // db_type
-      case 413: // ncr_protocol_value
-      case 421: // replace_client_name_value
+      case 156: // value
+      case 160: // map_value
+      case 198: // socket_type
+      case 208: // db_type
+      case 285: // hr_mode
+      case 417: // ncr_protocol_value
+      case 425: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 139: // "boolean"
+      case 142: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 138: // "floating point"
+      case 141: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 137: // "integer"
+      case 140: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 136: // "constant string"
+      case 139: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1593,28 +1611,29 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 153: // value
-      case 157: // map_value
-      case 195: // socket_type
-      case 205: // db_type
-      case 413: // ncr_protocol_value
-      case 421: // replace_client_name_value
+      case 156: // value
+      case 160: // map_value
+      case 198: // socket_type
+      case 208: // db_type
+      case 285: // hr_mode
+      case 417: // ncr_protocol_value
+      case 425: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 139: // "boolean"
+      case 142: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 138: // "floating point"
+      case 141: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 137: // "integer"
+      case 140: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 136: // "constant string"
+      case 139: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1641,28 +1660,29 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 153: // value
-      case 157: // map_value
-      case 195: // socket_type
-      case 205: // db_type
-      case 413: // ncr_protocol_value
-      case 421: // replace_client_name_value
+      case 156: // value
+      case 160: // map_value
+      case 198: // socket_type
+      case 208: // db_type
+      case 285: // hr_mode
+      case 417: // ncr_protocol_value
+      case 425: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 139: // "boolean"
+      case 142: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 138: // "floating point"
+      case 141: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 137: // "integer"
+      case 140: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 136: // "constant string"
+      case 139: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1734,7 +1754,8 @@ namespace isc { namespace dhcp {
      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,   390,   391,   392,   393,   394
+     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
+     395,   396,   397
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -2123,6 +2144,24 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_RESERVATION_MODE, l);
   }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DISABLED (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DISABLED, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OUT_OF_POOL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUT_OF_POOL, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ALL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ALL, l);
+  }
+
   Dhcp4Parser::symbol_type
   Dhcp4Parser::make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
   {
@@ -2570,7 +2609,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2574 "dhcp4_parser.h" // lalr1.cc:377
+#line 2613 "dhcp4_parser.h" // lalr1.cc:377
 
 
 
index 4c13b410c78f520790e061fc50e0da5d8eb658bc..0f237d835a85d29822faaa776691e45eb2161f9a 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201701262348
+// Generated 201707061111
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index 02fee026f5724fe2060e1734b23966470f9e53cd..54bfe36b5d6204008221ffb6d3b27713f4a5124f 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201701262348
+// Generated 201707061111
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index ceeae4d2ec7eb09821aa152e0843200449fb1f68..96d90f8a37bd38e13b2abb78d9863cc6ddf47dc8 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201701262348
+// Generated 201707061111
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++
index ad513f0994bdfcf38dec35ebf9c045cc327b587e..dc3e99042abca7ce5f7c653286e0738c5cd81c6e 100644 (file)
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] 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 154
-#define YY_END_OF_BUFFER 155
+#define YY_NUM_RULES 158
+#define YY_END_OF_BUFFER 159
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,141 +700,144 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1210] =
+static const flex_int16_t yy_accept[1232] =
     {   0,
-      147,  147,    0,    0,    0,    0,    0,    0,    0,    0,
-      155,  153,   10,   11,  153,    1,  147,  144,  147,  147,
-      153,  146,  145,  153,  153,  153,  153,  153,  140,  141,
-      153,  153,  153,  142,  143,    5,    5,    5,  153,  153,
-      153,   10,   11,    0,    0,  136,    0,    0,    0,    0,
+      151,  151,    0,    0,    0,    0,    0,    0,    0,    0,
+      159,  157,   10,   11,  157,    1,  151,  148,  151,  151,
+      157,  150,  149,  157,  157,  157,  157,  157,  144,  145,
+      157,  157,  157,  146,  147,    5,    5,    5,  157,  157,
+      157,   10,   11,    0,    0,  140,    0,    0,    0,    0,
         0,    0,    0,    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,  147,  147,
-        0,  146,  147,    3,    2,    6,    0,  147,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,  137,
+        0,    0,    0,    0,    0,    0,    0,    1,  151,  151,
+        0,  150,  151,    3,    2,    6,    0,  151,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,  141,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  139,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  143,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    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,  116,
-        0,    0,  117,    0,    0,    0,    0,    0,    0,    0,
-        0,  138,    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,  120,    0,    0,  121,    0,    0,    0,    0,    0,
+        0,    0,    0,  142,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   78,
         0,    0,    0,    0,    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,  152,  150,
-        0,  149,  148,    0,    0,    0,    0,    0,    0,  115,
-        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,  156,  154,    0,  153,  152,    0,    0,
+        0,    0,    0,    0,  119,    0,    0,   27,    0,   26,
+        0,    0,   84,    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,   82,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  151,  148,    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,  100,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  155,  152,    0,    0,    0,    0,    0,
+        0,    0,   28,    0,    0,   30,    0,    0,    0,    0,
+        0,   85,    0,    0,    0,    0,   65,    0,    0,    0,
 
+        0,    0,    0,  104,    0,    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,    0,    0,   64,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   73,    0,   50,    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,  100,
+      124,   42,    0,   47,    0,    0,    0,    0,    0,  138,
+       35,    0,   32,    0,   31,    0,    0,    0,  112,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   96,  120,
-       42,    0,   47,    0,    0,    0,    0,    0,  134,   35,
-        0,   32,    0,   31,    0,    0,    0,  108,    0,    0,
+
+        0,    0,    0,    0,    0,    0,   93,    0,    0,    0,
+        0,    0,    0,    0,  123,    0,    0,    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,  119,    0,    0,    0,    0,    0,    0,    0,
-        0,    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,  109,
-        0,    0,    0,    0,    0,    0,    0,    0,  104,    0,
-        0,    0,    0,    7,   33,    0,    0,    0,    0,    0,
+       44,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   66,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  113,    0,    0,    0,    0,    0,    0,    0,
+        0,  108,    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,   91,    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,    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,  103,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  113,   86,
-        0,    0,    0,   90,   43,    0,    0,    0,    0,    0,
-        0,    0,    0,   51,    0,    0,    0,    0,    0,    0,
+       95,    0,    0,    0,    0,    0,   92,    0,    0,    0,
+        0,    0,    0,    0,    0,   68,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   75,    0,    0,    0,    0,    0,   89,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  107,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  117,   90,    0,    0,    0,   94,
+       43,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,   61,    0,    0,    0,
-      135,    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,   61,    0,    0,    0,  139,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  102,    0,    0,    0,    0,    0,
-       54,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   48,   67,    0,    0,    0,   99,    0,
-        0,    0,   41,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   93,    0,    0,    0,    0,
+        0,   81,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  106,    0,    0,    0,    0,    0,   54,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  133,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   48,   67,    0,    0,    0,  103,    0,    0,
+        0,   41,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   97,    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,  137,    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,    0,   38,
-        0,    0,    0,    0,    0,    0,    0,   16,    0,  114,
+        0,    0,    0,    0,    0,    0,    0,   16,    0,  118,
        14,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  105,   92,    0,    0,    0,    0,
+        0,    0,    0,    0,  109,   96,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      101,  118,    0,   37,    0,  110,    0,    0,    0,    0,
-        0,    0,   20,    0,    0,   62,    0,    0,    0,  112,
-       45,    0,   69,    0,    0,    0,    0,    0,    0,    0,
+      105,  122,    0,   37,    0,  114,    0,    0,    0,    0,
 
+        0,    0,   20,    0,    0,   62,    0,    0,    0,    0,
+      116,   45,    0,   69,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      107,    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,  132,  131,    0,    0,
-        0,    0,   29,    0,   95,    0,    0,    0,    0,    0,
-        0,  129,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   77,    0,   98,    0,   52,    0,    0,    0,
-       19,    0,    0,    0,    0,    0,   79,   59,    0,  106,
-
-        0,    0,    0,   97,    0,   74,    0,    0,    0,    0,
-        0,    0,    0,    0,   72,    0,  121,    0,    0,    0,
+        0,  111,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   86,    0,    0,    0,
+       63,   83,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   58,    0,    0,    0,   17,   15,  136,  135,
+        0,    0,    0,    0,   29,    0,   99,    0,    0,    0,
+        0,    0,    0,  133,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,   77,    0,  102,    0,   52,    0,
+        0,    0,   19,    0,    0,    0,    0,    0,   79,   59,
+        0,  110,    0,    0,    0,  101,    0,   74,    0,    0,
+        0,    0,    0,    0,    0,    0,   72,    0,  125,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   94,    0,   55,  130,    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,  111,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   34,    0,    0,
-
-        0,    0,    0,   25,    0,    0,    0,    0,  127,    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,  126,    0,   22,   56,    0,    0,    0,    0,
-       21,    0,   71,    0,    0,  125,    0,    0,    0,    0,
-       24,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   98,    0,   55,  134,    0,
+       12,    0,    0,    0,    0,    0,    0,    0,   40,    0,
+       39,   18,    0,    0,   91,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   57,    0,    0,   53,    0,   70,
+
+        0,    0,    0,    0,    0,  115,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   34,
+        0,    0,    0,    0,    0,   25,    0,    0,    0,    0,
+      131,    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,  130,    0,   22,   56,    0,    0,
+        0,    0,   21,    0,   71,    0,    0,  129,    0,    0,
+        0,    0,   24,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   23,    0,   83,    0,    0,    0,    0,    0,
-      123,  128,   60,    0,    0,    0,  122,    0,    0,    0,
 
-        0,    0,    0,    0,   84,    0,    0,  124,    0
+        0,    0,    0,    0,   23,    0,   87,    0,    0,    0,
+        0,    0,  127,  132,   60,    0,    0,    0,  126,    0,
+        0,    0,    0,    0,    0,    0,   88,    0,    0,  128,
+        0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -881,301 +884,305 @@ static const YY_CHAR yy_meta[72] =
         3
     } ;
 
-static const flex_int16_t yy_base[1222] =
+static const flex_int16_t yy_base[1244] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1572, 1573,   32, 1568,  141,    0,  201, 1573,  206,   88,
-       11,  213, 1573, 1550,  114,   25,    2,    6, 1573, 1573,
-       73,   11,   17, 1573, 1573, 1573,  104, 1556, 1511,    0,
-     1548,  107, 1563,  217,  241, 1573,  185, 1514, 1534,   93,
-       58,  190,   91,  211,  200,   14,  267,  213,  175,  188,
-       64,  220, 1515,  187,   75, 1514,  261,  215,  289,  256,
-      278, 1497,  207,  284,  311,  293, 1516,    0,  337,  352,
-      360,  366,  372, 1573,    0, 1573,  331,  378,  227,  231,
-      320,  294,  341,  325, 1573, 1513, 1552, 1573,  237, 1573,
-
-      377,  335, 1511, 1550,  366,  253,  323, 1505,  362,  295,
-      366,  306,  293, 1548,    0,  428,  365, 1492, 1500,  351,
-     1496, 1485, 1486,  360, 1502, 1495,  365,  358,  359, 1489,
-      374, 1477, 1533,  407, 1480, 1531, 1473, 1496, 1493, 1493,
-     1487,  366, 1480, 1473, 1478, 1472, 1469, 1468, 1482,  363,
-     1518, 1467,  398, 1479, 1482, 1466,  424,  400, 1478, 1479,
-     1477, 1459, 1464, 1460, 1452, 1469, 1461,    0,  385,  408,
-      391,  428,  416,  439, 1460, 1573,    0,  445, 1455, 1573,
-      433,  428, 1573, 1507, 1462,  453, 1505,  455, 1504,  452,
-     1503, 1573,  496,  463, 1464, 1459, 1458,  431, 1499, 1493,
-
-     1459, 1438, 1446, 1452, 1440, 1451, 1452, 1452, 1447, 1439,
-     1441, 1425, 1429, 1442, 1442, 1434, 1424, 1427, 1441, 1573,
-     1427, 1435, 1438, 1419, 1418, 1468, 1417, 1427, 1465,  435,
-     1426, 1414, 1425, 1461, 1419, 1411, 1408, 1424, 1405, 1407,
-     1403, 1409, 1400, 1399, 1412, 1405, 1407, 1411, 1410, 1404,
-       80, 1411, 1406, 1398, 1404, 1404, 1385, 1401, 1394, 1401,
-     1389, 1382, 1396, 1395, 1398, 1380, 1388,  466, 1573, 1573,
-      467, 1573, 1573, 1375,    0,  457,  489,  468, 1432, 1573,
-     1385,  465, 1573, 1430, 1573, 1424,  532,  460, 1366, 1376,
-     1426, 1383,  462, 1573, 1381, 1423, 1378, 1375, 1376,  516,
-
-     1419, 1369, 1364, 1361, 1357, 1359, 1408, 1367, 1356, 1405,
-     1353,  526, 1366, 1366, 1349, 1350, 1363, 1350, 1360, 1355,
-     1362, 1357, 1342,  469, 1351, 1354, 1349, 1345, 1393,  475,
-     1340, 1333, 1335, 1339, 1328, 1335, 1340,   62, 1385, 1340,
-      487, 1337, 1341, 1339, 1328, 1328, 1340, 1322, 1314, 1315,
-     1336, 1318, 1330, 1329, 1315, 1327, 1326, 1325, 1366, 1365,
-     1364, 1308,  527, 1321, 1573, 1573, 1320,    0,  474, 1360,
-     1359, 1317, 1357, 1573, 1305, 1355, 1573,  530,  576,  531,
-     1354, 1296, 1573, 1312, 1311, 1298, 1297, 1573, 1299, 1296,
-     1308, 1304, 1292, 1573, 1301, 1286, 1288, 1299, 1297, 1292,
-
-      553, 1299, 1281, 1330, 1573, 1279, 1295, 1327, 1331, 1289,
-     1283, 1285, 1286, 1288, 1320, 1273, 1268, 1267, 1269, 1262,
-     1277, 1255, 1262, 1267, 1315, 1573, 1262, 1258, 1261, 1254,
-     1264, 1267, 1256, 1255, 1250, 1573, 1305, 1573, 1249, 1248,
-     1241, 1258, 1295, 1242, 1247, 1256, 1250, 1254,  555, 1289,
-     1253, 1233, 1236, 1235, 1243, 1231, 1287, 1229, 1573, 1573,
-     1573, 1234, 1573, 1244, 1278, 1240,    0, 1281, 1573, 1573,
-     1229, 1573, 1235, 1573,  536,  535,  563, 1573, 1273, 1220,
-     1219, 1226, 1219, 1231, 1230, 1214, 1229, 1259, 1263, 1209,
-     1211, 1223, 1223, 1222, 1573, 1207, 1204, 1218, 1210, 1216,
-
-     1207, 1215, 1573, 1200, 1211, 1215, 1197, 1211, 1209, 1192,
-     1186, 1191, 1188, 1203, 1204, 1201, 1242, 1199, 1573, 1185,
-     1187, 1233,  543, 1196, 1179, 1180, 1185, 1176, 1573, 1190,
-     1176,  564, 1168, 1189, 1186, 1178, 1221, 1175, 1219, 1573,
-     1167, 1165, 1179, 1182, 1214, 1213, 1160, 1211, 1573,  557,
-     1173, 1162, 1164, 1573, 1573, 1156, 1211,  547,  547, 1164,
-     1169, 1203, 1202, 1201, 1155, 1145, 1198, 1160, 1150, 1195,
-     1141, 1149, 1151, 1155, 1190, 1194, 1151, 1150, 1151, 1144,
-     1133, 1146, 1149, 1144, 1139, 1144, 1141, 1140, 1143, 1138,
-     1179, 1178, 1122, 1118, 1126, 1174, 1573, 1173, 1122, 1114,
-
-     1129, 1573, 1117, 1126, 1125, 1125, 1109, 1164, 1107, 1120,
-     1573, 1112, 1104, 1113, 1106, 1117, 1094, 1098, 1149, 1096,
-     1094, 1105, 1145, 1092,  552,  554, 1086,  546, 1573, 1147,
-     1105, 1094, 1098, 1143, 1573, 1137,  571, 1090, 1091, 1082,
-     1085, 1081, 1098, 1093, 1081, 1092, 1076, 1078, 1077, 1091,
-     1072, 1122, 1077, 1573, 1085, 1083, 1074, 1083, 1079, 1120,
-     1062, 1062, 1075, 1074, 1059, 1114, 1056, 1057, 1573, 1573,
-     1071, 1068, 1071, 1573, 1573, 1070, 1055,  570, 1053, 1100,
-     1049, 1103, 1102, 1573, 1047, 1059, 1057, 1098, 1046, 1046,
-     1038, 1094, 1047, 1035, 1029, 1037, 1039, 1048, 1041, 1033,
-
-     1033,  560, 1032, 1083, 1044, 1019, 1573, 1075, 1022, 1035,
-     1573,  576,  590, 1037, 1038, 1029, 1022, 1021, 1015, 1022,
-     1015, 1064, 1068,    1,   79,  183,  233,  301,  362,  393,
-      491,  506,  490,  491, 1573,  527,  522,  524,  620,  554,
-     1573,  573,  562,  580,  618,  578,  569,  588,  573,  588,
-      576,  594,  579, 1573, 1573,  587,  632,  587, 1573,  595,
-      590,  641, 1573,  592,  597,  591,  593,  605,  599,  597,
-      650,  596,  652,  653,  599, 1573,  605,  603,  602,  616,
-      617,  633,  638,  612,  607,  614,  619,  626,  667,  668,
-      617,  621, 1573,  616,  634,  631,  669,  620,  639,  640,
-
-      626,  634,  643,  623,  644,  684,  685, 1573,  640,  687,
-      690,  652,  655,  638,  639,  646,  697,  646,  661,  700,
-      655,  653,  651,  704,  705,  657,  707,  703,  663, 1573,
-      668,  661,  670,  664,  659,  669,  665, 1573,  660, 1573,
-     1573,  661,  677,  678,  679,  661,  666,  705,  696,  668,
-      671,  686,  678,  682, 1573, 1573,  692,  691,  677,  678,
-      736,  691,  696,  683,  694,  686,  692,  688,  706,  707,
-     1573, 1573,  705, 1573,  708, 1573,  693,  712,  702,  752,
-      708,  750, 1573,  707,  757, 1573,  706,  713,  755, 1573,
-     1573,  715, 1573,  706,  706,  709,  723,  710,  721,  768,
-
-      727,  765,  771,  772,  773,  774,  735,  719,  731,  750,
-      779,  739,  781,  730,  726,  742,  747,  735,  787,  746,
-     1573,  748,  747,  749,  742,  751,  752,  749,  739,  741,
-      798,  747,  800,  745,  802, 1573,  740,  755,  805, 1573,
-      756,  766,  751,  767,  753,  813,  814,  760,  816,  775,
-     1573,  767,  769,  820, 1573, 1573, 1573, 1573,  773,  824,
-      775,  807, 1573,  785, 1573,  772,  771,  774,  774,  775,
-      833, 1573,  778,  835,  790,  781,  796,  796,  799,  799,
-      796,  801, 1573,  793, 1573,  803, 1573,  804,  805,  802,
-     1573,  794,  800,  799,  811,  811, 1573, 1573,  850, 1573,
-
-      815,  800,  806, 1573,  821, 1573,  818,  837,  857,  863,
-      807,  865,  866,  821, 1573,  868, 1573,  808,  865,  830,
-      826,  868,  818,  823,  876,  834,  878,  879,  842,  831,
-      882,  826,  843,  828,  843,  827,  884,  885,  850,  846,
-      893,  865,  852, 1573,  896, 1573, 1573,  845, 1573,  898,
-      846,  895,  840,  845,  904,  854, 1573,  860, 1573, 1573,
-      851,  866, 1573,  904,  872,  865,  866,  875,  862,  864,
-      874,  867, 1573,  918,  865, 1573,  869, 1573,  872,  868,
-      867,  925,  880, 1573,  922,  884,  887,  930,  873,  875,
-      883,  873,  889,  883,  899,  938,  934, 1573,  899,  936,
-
-      900,  891,  898, 1573,  895,  900,  947,  892, 1573,  896,
-      908,  909,  952,  896,  897,  905, 1573,  916,  906,  905,
-      908,  920,  911,  920,  922, 1573,  964,  924,  966,  967,
-     1573,  963,  923,  928,  909,  972,  931,  974,  933,  934,
-      977,  936, 1573,  941, 1573, 1573,  923,  929,  982,  943,
-     1573,  929, 1573,  929,  931, 1573,  936,  931,  943,  939,
-     1573,  942,  946,  937,  989,  938,  954,  947,  942,  957,
-      948,  955,  942,  957, 1004,  963, 1006,  951,  967,  958,
-      972,  968, 1573, 1012, 1573, 1013, 1014,  971,  970,  971,
-     1573, 1573, 1573, 1018,  962,  978, 1573, 1016,  967,  966,
-
-      968,  979, 1026,  977, 1573,  986, 1029, 1573, 1573, 1035,
-     1040, 1045, 1050, 1055, 1060, 1065, 1068, 1042, 1047, 1049,
-     1062
+     1594, 1595,   32, 1590,  141,    0,  201, 1595,  206,   88,
+       11,  213, 1595, 1572,  114,   25,    2,    6, 1595, 1595,
+       73,   11,   17, 1595, 1595, 1595,  104, 1578, 1533,    0,
+     1570,  107, 1585,  217,  241, 1595,  185, 1536, 1556,   93,
+       58,  190,   91,  211,  200,   14,  267,  213,  175,  269,
+       64,  220, 1537,  187,   75, 1536,  274,  188,  238,  270,
+      292, 1519,  195,  279,  318,  301, 1538,    0,  330,  357,
+      345,  369,  373, 1595,    0, 1595,  295,  360,  223,  226,
+      278,  336,  338,  313, 1595, 1535, 1574, 1595,  277, 1595,
+
+      384,  314, 1533, 1572,  363,  337,  393, 1527,  359,  368,
+      366,  372,  378, 1570,    0,  435,  368, 1514, 1522,  300,
+     1518, 1507, 1508,  364, 1524, 1507, 1516,  369,  200,  372,
+     1510,  380, 1498, 1554,  395, 1501, 1552, 1494, 1517, 1514,
+     1514, 1508,  370, 1501, 1494, 1499, 1493, 1504, 1489, 1488,
+     1502,  346, 1538, 1487,  404, 1499, 1502, 1486,  441,  406,
+     1498, 1499, 1497, 1479, 1484, 1480, 1472, 1489, 1481,    0,
+      377,  385,  421,  410,  435,  428, 1480, 1595,    0,  433,
+     1475, 1595,  439,  438, 1595, 1527, 1482,  430, 1525,  445,
+     1524,  445, 1523, 1595,  490, 1522,  453, 1483, 1478, 1477,
+
+      431, 1518, 1512, 1478, 1457, 1465, 1471, 1459, 1473, 1469,
+     1470, 1470, 1465, 1457, 1459, 1443, 1447, 1460, 1460, 1452,
+     1442, 1445, 1459, 1595, 1445, 1453, 1456, 1437, 1436, 1486,
+     1435, 1445, 1483,  478, 1444, 1432, 1443, 1479, 1483, 1436,
+        9, 1426, 1442, 1423, 1425, 1421, 1427, 1418, 1417, 1430,
+     1423, 1425, 1429, 1428, 1422,   80, 1429, 1424, 1416, 1422,
+     1422, 1403, 1419, 1412, 1419, 1407, 1400, 1414, 1413, 1416,
+     1398, 1406,  474, 1595, 1595,  482, 1595, 1595, 1393,    0,
+      452,  493,  485, 1450, 1595, 1403,  485, 1595, 1448, 1595,
+     1442,  533, 1595,  453, 1384, 1394, 1444, 1401,  480, 1595,
+
+     1399, 1441, 1396, 1393, 1394,  508, 1398, 1436, 1386, 1381,
+     1378, 1374, 1376, 1425, 1384, 1373, 1422, 1370,  539, 1383,
+     1383, 1366, 1367, 1380, 1367, 1377, 1372, 1379, 1374, 1359,
+      465, 1368, 1371, 1366, 1362, 1410,  363, 1595, 1357, 1356,
+     1349, 1351, 1355, 1344, 1351, 1356,  521, 1401, 1356,  480,
+     1353, 1357, 1355, 1344, 1344, 1356, 1338, 1330, 1331, 1352,
+     1334, 1346, 1345, 1331, 1343, 1342, 1341, 1382, 1381, 1380,
+     1324,  554, 1337, 1595, 1595, 1336,    0,  508, 1376, 1375,
+     1333, 1373, 1595, 1321, 1371, 1595,  531,  588,  510, 1370,
+     1312, 1595, 1328, 1327, 1314, 1313, 1595, 1315, 1312, 1324,
+
+     1320, 1308, 1310, 1595, 1316, 1301, 1303, 1314, 1312, 1307,
+      556, 1314, 1296, 1345, 1595, 1294, 1310, 1342, 1346, 1304,
+     1298, 1300, 1301, 1303, 1335, 1288, 1283, 1282, 1284, 1277,
+     1292, 1270, 1277, 1282, 1330, 1595, 1277, 1273, 1276, 1283,
+     1268, 1278, 1281, 1270, 1269, 1264, 1595, 1319, 1595, 1263,
+     1262, 1255, 1272, 1309, 1256, 1261, 1270, 1264, 1268,  558,
+     1303, 1267, 1247, 1250, 1249, 1257, 1245, 1301, 1243, 1595,
+     1595, 1595, 1248, 1595, 1258, 1292, 1254,    0, 1295, 1595,
+     1595, 1243, 1595, 1249, 1595,  535,  538,  562, 1595, 1287,
+     1234, 1233, 1240, 1233, 1245, 1244, 1228, 1243, 1273, 1240,
+
+     1276, 1222, 1224, 1236, 1236, 1235, 1595, 1220, 1217, 1231,
+     1223, 1229, 1220, 1228, 1595, 1213, 1224, 1228, 1210, 1224,
+     1222, 1205, 1199, 1204, 1201, 1216, 1217, 1214, 1255, 1212,
+     1595, 1198, 1200, 1246, 1245,  546, 1208, 1191, 1192, 1197,
+     1188, 1595, 1202, 1188,  580, 1180, 1201, 1198, 1190, 1233,
+     1187, 1231, 1595, 1179, 1177, 1191, 1194, 1226, 1225, 1172,
+     1223, 1595,  568, 1185, 1174, 1176, 1595, 1595, 1168, 1223,
+      552,  528, 1176, 1181, 1215, 1214, 1213, 1167, 1157, 1210,
+     1172, 1162, 1207, 1170, 1152, 1160, 1162, 1166, 1201, 1205,
+     1162, 1161, 1162, 1155, 1144, 1157, 1160, 1155, 1150, 1155,
+
+     1152, 1151, 1154, 1149, 1190, 1189, 1133, 1129, 1137, 1185,
+     1595, 1184, 1133, 1125, 1140, 1127, 1595, 1127, 1136, 1135,
+     1135, 1119, 1174, 1117, 1130, 1595, 1122, 1114, 1123, 1116,
+     1127, 1104, 1108, 1159, 1106, 1104, 1115, 1155, 1102,  533,
+      546, 1096,  537, 1595, 1157, 1115, 1104, 1108, 1153, 1595,
+     1147,  561, 1100, 1101, 1092, 1095, 1091, 1108, 1103, 1091,
+     1102, 1086, 1088, 1140, 1086, 1100, 1081, 1131, 1086, 1595,
+     1094, 1092, 1083, 1092, 1088, 1129, 1071, 1071, 1084, 1083,
+     1068, 1123, 1065, 1066, 1595, 1595, 1080, 1077, 1080, 1595,
+     1595, 1079, 1064,  572, 1063, 1061, 1108, 1057, 1111, 1110,
+
+     1595, 1055, 1067, 1065, 1106, 1054, 1054, 1046, 1102, 1055,
+     1043, 1037, 1045, 1047, 1056, 1049, 1041, 1041,  559, 1040,
+     1091, 1052,   56, 1595,  115,  188,  211, 1595,  565,  582,
+      269,  318,  477,  473,  493,  512,  553,  556,  608,  615,
+      564, 1595,  578,  563,  579,  570,  583,  583,  628,  596,
+      580,  581, 1595,  599,  582,  584,  640,  585, 1595,  604,
+      584,  602,  641,  601,  591,  609,  593,  608,  600,  596,
+      614,  599, 1595, 1595,  607,  652,  607, 1595,  615,  610,
+      661, 1595,  612,  617,  611,  613,  625,  619,  617,  670,
+      616,  672,  673,  619, 1595,  625,  623,  622,  636,  637,
+
+      653,  658,  632,  627,  634,  639,  646,  687,  688,  637,
+      641, 1595,  636,  654,  651,  689,  640,  659,  660,  646,
+      654,  663,  643,  664,  704,  705, 1595,  660,  707,  710,
+      672,  675,  658,  659,  666,  717,  666,  681,  720,  672,
+      676,  674,  672,  725,  726,  678,  728,  724,  684, 1595,
+      689,  682,  691,  685,  680,  690,  686, 1595,  681, 1595,
+     1595,  682,  698,  699,  700,  682,  687,  726,  717,  689,
+      692,  707,  699,  703, 1595, 1595,  714,  712,  698,  699,
+      757,  712,  717,  704,  715,  707,  713,  709,  727,  728,
+     1595, 1595,  726, 1595,  729, 1595,  714,  733,  723,  773,
+
+      729,  771, 1595,  728,  778, 1595,  779,  728,  735,  777,
+     1595, 1595,  737, 1595,  728,  728,  731,  745,  732,  743,
+      790,  749,  787,  793,  794,  795,  796,  757,  741,  753,
+      772,  801,  761,  803,  752,  748,  764,  769,  757,  809,
+      768, 1595,  770,  769,  771,  764,  773,  774,  771,  761,
+      763,  820,  769,  822,  767,  824, 1595,  762,  777,  827,
+     1595, 1595,  778,  788,  773,  789,  775,  835,  836,  782,
+      838,  797, 1595,  789,  791,  842, 1595, 1595, 1595, 1595,
+      795,  846,  797,  829, 1595,  807, 1595,  794,  793,  796,
+      796,  797,  855, 1595,  800,  857,  812,  803,  818,  818,
+
+      821,  821,  818,  823, 1595,  815, 1595,  825, 1595,  826,
+      827,  824, 1595,  816,  822,  821,  833,  833, 1595, 1595,
+      872, 1595,  837,  822,  828, 1595,  843, 1595,  840,  859,
+      879,  885,  829,  887,  888,  843, 1595,  890, 1595,  830,
+      887,  852,  848,  890,  840,  845,  898,  856,  900,  901,
+      864,  853,  904,  848,  865,  850,  865,  849,  906,  907,
+      872,  868,  915,  887,  874, 1595,  918, 1595, 1595,  867,
+     1595,  920,  868,  917,  862,  867,  926,  876, 1595,  882,
+     1595, 1595,  873,  888, 1595,  926,  894,  887,  888,  897,
+      884,  886,  896,  889, 1595,  940,  887, 1595,  891, 1595,
+
+      894,  890,  889,  947,  902, 1595,  944,  906,  909,  952,
+      895,  897,  905,  895,  911,  905,  921,  960,  956, 1595,
+      921,  958,  922,  913,  920, 1595,  917,  922,  969,  914,
+     1595,  918,  930,  931,  974,  918,  919,  927, 1595,  938,
+      928,  927,  930,  942,  933,  942,  944, 1595,  986,  946,
+      988,  989, 1595,  985,  945,  950,  931,  994,  953,  996,
+      955,  956,  999,  958, 1595,  963, 1595, 1595,  945,  951,
+     1004,  965, 1595,  951, 1595,  951,  953, 1595,  958,  953,
+      965,  961, 1595,  964,  968,  959, 1011,  960,  976,  969,
+      964,  979,  970,  977,  964,  979, 1026,  985, 1028,  973,
+
+      989,  980,  994,  990, 1595, 1034, 1595, 1035, 1036,  993,
+      992,  993, 1595, 1595, 1595, 1040,  984, 1000, 1595, 1038,
+      989,  988,  990, 1001, 1048,  999, 1595, 1008, 1051, 1595,
+     1595, 1057, 1062, 1067, 1072, 1077, 1082, 1087, 1090, 1064,
+     1069, 1071, 1084
     } ;
 
-static const flex_int16_t yy_def[1222] =
+static const flex_int16_t yy_def[1244] =
     {   0,
-     1210, 1210, 1211, 1211, 1210, 1210, 1210, 1210, 1210, 1210,
-     1209, 1209, 1209, 1209, 1209, 1212, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1213,
-     1209, 1209, 1209, 1214,   15, 1209,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1215,   45,   45,   45,
+     1232, 1232, 1233, 1233, 1232, 1232, 1232, 1232, 1232, 1232,
+     1231, 1231, 1231, 1231, 1231, 1234, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1235,
+     1231, 1231, 1231, 1236,   15, 1231,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1237,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1212, 1209, 1209,
-     1209, 1209, 1209, 1209, 1216, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1213, 1209, 1214, 1209,
+       45,   45,   45,   45,   45,   45,   45, 1234, 1231, 1231,
+     1231, 1231, 1231, 1231, 1238, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1235, 1231, 1236, 1231,
 
-     1209,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1217,   45, 1215,   45,   45,   45,   45,
+     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1239,   45, 1237,   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, 1216, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1218,   45,   45, 1209,
-       45,   45, 1209,   45,   45,   45,   45,   45,   45,   45,
-     1217, 1209, 1215,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1238,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1240,   45,
+       45, 1231,   45,   45, 1231,   45,   45,   45,   45,   45,
+       45,   45, 1239, 1231, 1237,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1209,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1231,   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, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1219,   45,   45,   45,   45, 1209,
-       45,   45, 1209,   45, 1209,   45, 1215,   45,   45,   45,
-       45,   45,   45, 1209,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1241,
+       45,   45,   45,   45, 1231,   45,   45, 1231,   45, 1231,
+       45, 1237, 1231,   45,   45,   45,   45,   45,   45, 1231,
 
        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, 1231,   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, 1209, 1209, 1209, 1220,   45,   45,
-       45,   45,   45, 1209,   45,   45, 1209,   45, 1215,   45,
-       45,   45, 1209,   45,   45,   45,   45, 1209,   45,   45,
-       45,   45,   45, 1209,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1231, 1231, 1231, 1242,   45,   45,   45,
+       45,   45, 1231,   45,   45, 1231,   45, 1237,   45,   45,
+       45, 1231,   45,   45,   45,   45, 1231,   45,   45,   45,
 
-       45,   45,   45,   45, 1209,   45,   45,   45,   45,   45,
+       45,   45,   45, 1231,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1231,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1231,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1231,   45, 1231,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1209,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1209,   45, 1209,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1231,
+     1231, 1231,   45, 1231,   45,   45, 1231, 1243,   45, 1231,
+     1231,   45, 1231,   45, 1231,   45,   45,   45, 1231,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1209, 1209,
-     1209,   45, 1209,   45,   45, 1209, 1221,   45, 1209, 1209,
-       45, 1209,   45, 1209,   45,   45,   45, 1209,   45,   45,
+
+       45,   45,   45,   45,   45,   45, 1231,   45,   45,   45,
+       45,   45,   45,   45, 1231,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1209,   45,   45,   45,   45,   45,
-
-       45,   45, 1209,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1209,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1209,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1209,
-       45,   45,   45,   45,   45,   45,   45,   45, 1209,   45,
-       45,   45,   45, 1209, 1209,   45,   45,   45,   45,   45,
+     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1231,   45,   45,   45,   45,   45,   45,   45,
+       45, 1231,   45,   45,   45,   45, 1231, 1231,   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, 1209,   45,   45,   45,
 
-       45, 1209,   45,   45,   45,   45,   45,   45,   45,   45,
-     1209,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1209,   45,
-       45,   45,   45,   45, 1209,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1209,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1209, 1209,
-       45,   45,   45, 1209, 1209,   45,   45,   45,   45,   45,
-       45,   45,   45, 1209,   45,   45,   45,   45,   45,   45,
+     1231,   45,   45,   45,   45,   45, 1231,   45,   45,   45,
+       45,   45,   45,   45,   45, 1231,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45, 1209,   45,   45,   45,
-     1209,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1231,   45,   45,   45,   45,   45, 1231,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1209,   45,   45,   45,   45,   45,
-     1209,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1209, 1209,   45,   45,   45, 1209,   45,
-       45,   45, 1209,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1209,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1231,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1209,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1231, 1231,   45,   45,   45, 1231,
+     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45, 1209,   45,   45,
+     1231,   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, 1209,
-       45,   45,   45,   45,   45,   45,   45, 1209,   45, 1209,
-     1209,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1209, 1209,   45,   45,   45,   45,
+       45,   45,   45, 1231,   45,   45,   45, 1231,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1209, 1209,   45, 1209,   45, 1209,   45,   45,   45,   45,
-       45,   45, 1209,   45,   45, 1209,   45,   45,   45, 1209,
-     1209,   45, 1209,   45,   45,   45,   45,   45,   45,   45,
+       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1231,   45,   45,   45,   45,   45, 1231,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1231, 1231,   45,   45,   45, 1231,   45,   45,
+       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1231,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1231,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1231,
+       45,   45,   45,   45,   45,   45,   45, 1231,   45, 1231,
+     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1231, 1231,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1231, 1231,   45, 1231,   45, 1231,   45,   45,   45,   45,
+
+       45,   45, 1231,   45,   45, 1231,   45,   45,   45,   45,
+     1231, 1231,   45, 1231,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1209,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1209,   45,   45,   45, 1209,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1209,   45,   45,   45, 1209, 1209, 1209, 1209,   45,   45,
-       45,   45, 1209,   45, 1209,   45,   45,   45,   45,   45,
-       45, 1209,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1209,   45, 1209,   45, 1209,   45,   45,   45,
-     1209,   45,   45,   45,   45,   45, 1209, 1209,   45, 1209,
-
-       45,   45,   45, 1209,   45, 1209,   45,   45,   45,   45,
-       45,   45,   45,   45, 1209,   45, 1209,   45,   45,   45,
+       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1231,   45,   45,   45,
+     1231, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1231,   45,   45,   45, 1231, 1231, 1231, 1231,
+       45,   45,   45,   45, 1231,   45, 1231,   45,   45,   45,
+       45,   45,   45, 1231,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45, 1231,   45, 1231,   45, 1231,   45,
+       45,   45, 1231,   45,   45,   45,   45,   45, 1231, 1231,
+       45, 1231,   45,   45,   45, 1231,   45, 1231,   45,   45,
+       45,   45,   45,   45,   45,   45, 1231,   45, 1231,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1209,   45, 1209, 1209,   45, 1209,   45,
-       45,   45,   45,   45,   45,   45, 1209,   45, 1209, 1209,
-       45,   45, 1209,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1209,   45,   45, 1209,   45, 1209,   45,   45,
-       45,   45,   45, 1209,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1209,   45,   45,
-
-       45,   45,   45, 1209,   45,   45,   45,   45, 1209,   45,
-       45,   45,   45,   45,   45,   45, 1209,   45,   45,   45,
-       45,   45,   45,   45,   45, 1209,   45,   45,   45,   45,
-     1209,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1209,   45, 1209, 1209,   45,   45,   45,   45,
-     1209,   45, 1209,   45,   45, 1209,   45,   45,   45,   45,
-     1209,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1231,   45, 1231, 1231,   45,
+     1231,   45,   45,   45,   45,   45,   45,   45, 1231,   45,
+     1231, 1231,   45,   45, 1231,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1231,   45,   45, 1231,   45, 1231,
+
+       45,   45,   45,   45,   45, 1231,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1231,
+       45,   45,   45,   45,   45, 1231,   45,   45,   45,   45,
+     1231,   45,   45,   45,   45,   45,   45,   45, 1231,   45,
+       45,   45,   45,   45,   45,   45,   45, 1231,   45,   45,
+       45,   45, 1231,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1231,   45, 1231, 1231,   45,   45,
+       45,   45, 1231,   45, 1231,   45,   45, 1231,   45,   45,
+       45,   45, 1231,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1209,   45, 1209,   45,   45,   45,   45,   45,
-     1209, 1209, 1209,   45,   45,   45, 1209,   45,   45,   45,
 
-       45,   45,   45,   45, 1209,   45,   45, 1209,    0, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209
+       45,   45,   45,   45, 1231,   45, 1231,   45,   45,   45,
+       45,   45, 1231, 1231, 1231,   45,   45,   45, 1231,   45,
+       45,   45,   45,   45,   45,   45, 1231,   45,   45, 1231,
+        0, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231
     } ;
 
-static const flex_int16_t yy_nxt[1645] =
+static const flex_int16_t yy_nxt[1667] =
     {   0,
-     1209,   13,   14,   13, 1209,   15,   16, 1209,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   84, 1209,
-       37,   14,   37,   85,   25,   26,   38, 1209, 1209,   27,
+     1231,   13,   14,   13, 1231,   15,   16, 1231,   17,   18,
+       19,   20,   21,   22,   22,   22,   23,   24,   84,  340,
+       37,   14,   37,   85,   25,   26,   38, 1231, 1231,   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,  794,   13,
-       14,   13,   33,   40,  113,   90,   91,  436,   89,   34,
+       13,   14,   13,   13,   14,   13,   32,   40, 1231,   13,
+       14,   13,   33,   40,  113,   90,   91,  341,   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,  437,   87,  795,   32,   88,   88,   88,
-      128,  135,   33,  136,  347,   81,  105,  348,  109,   34,
+      128,  135,   87,  797,   87,  798,   32,   88,   88,   88,
+      129,  136,   33,  137,  356,   81,  105,  357,  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,
@@ -1186,85 +1193,85 @@ static const flex_int16_t yy_nxt[1645] =
        72,   73,   74,   75,   76,   77,   56,   45,   45,   45,
        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,  796,  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,
-      797,  169,  144,  182,   45,  170,   45,   45,   45,   45,
+       81,  143,  120,  110,  121,  144,  122,   81,  158,  102,
+      105,  102,  159,  111,  132,  214,  112,  108,   81,  133,
+      799,  171,  134,   81,  172,  145,  110,  101,  215,  800,
+       81,   45,  109,  105,   45,   45,   45,  117,   45,   45,
+       45,  111,  115,  118,  130,   45,   45,  171,   45,   45,
+      172,  146,  100,  147,   45,  109,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45,  138,  139,
-      182,   45,  140,  109,  147,   45,  112,  190,  141,  148,
-      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,  798,
-      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,  212,  198,  207,  799,
-      208,  229,  220,   81,  204,  270,  211,   99,  268,   81,
-      181,   99,  213,  238,  239,   99,  186,  209,  215,  188,
-      194,  216,  230,   99,  248,  217,  269,   99,  270,   99,
-      177,  193,  193,  193,  269,  324,  268,  800,  193,  193,
-      193,  193,  193,  193,  221,  242,  256,  279,  243,  244,
-      257,  268,  269,  270,  258,  276,  278,  249,  250,  251,
-      272,  193,  193,  193,  193,  193,  193,  282,  252,  284,
-      253,  286,  254,  276,  279,  255,  273,  292,  276,  271,
-      365,  365,  373,  293,  278,  369,  325,  376,  369,  326,
-
-      282,  801,  284,  370,  371,  385,  288,  468,  286,  287,
-      287,  287,  372,  365,  366,  373,  287,  287,  287,  287,
-      287,  287,  386,  427,  369,  376,  392,  380,  420,  421,
-      393,  405,  463,  428,  440,  468,  406,  464,  441,  287,
-      287,  287,  287,  287,  287,  379,  379,  379,  602,  802,
-      803,  804,  379,  379,  379,  379,  379,  379,  495,  475,
-      540,  476,  629,  496,  468,  541,  558,  559,  555,  611,
-      805,  637,  630,  560,  612,  379,  379,  379,  379,  379,
-      379,  636,  407,  806,  807,  603,  475,  408,  476,   45,
-       45,   45,  477,  558,  637,  559,   45,   45,   45,   45,
-
-       45,   45,  705,  700,  713,  702,  773,  782,  706,  636,
-      701,  613,  703,  749,  783,  811,  812,  750,  774,   45,
-       45,   45,   45,   45,   45,  808,  813,  814,  815,  816,
-      809,  817,  713,  818,  782,  819,  820,  783,  821,  822,
-      824,  825,  826,  827,  828,  829,  830,  831,  832,  833,
-      823,  834,  835,  836,  837,  838,  839,  840,  841,  842,
-      843,  844,  845,  846,  847,  848,  850,  849,  851,  852,
-      853,  854,  855,  856,  857,  858,  859,  860,  861,  862,
-      863,  810,  864,  865,  866,  867,  868,  869,  870,  871,
-      872,  873,  874,  848,  849,  876,  878,  875,  879,  880,
-
-      881,  882,  883,  884,  885,  886,  887,  888,  889,  890,
-      891,  892,  893,  894,  895,  896,  897,  898,  899,  900,
+       45,   45,   45,   45,   45,   45,   45,   45,   88,   88,
+       88,   45,  123,  173,  803,   45,  124,  101,  148,  125,
+      126,  139,  140,   45,  112,  141,  160,   45,  149,   45,
+      116,  142,  127,  150,  151,  152,  161,  162,  153,  154,
+      110,  173,  163,   83,   83,   83,  200,  112,  173,  155,
+      111,  180,  156,   87,   81,   87,  201,  167,   88,   88,
+       88,  804,  168,  110,  171,  164,  172,  184,   79,  165,
+       80,   80,   80,   88,   88,   88,  176,   81,  111,  180,
+       79,   81,   82,   82,   82,  166,   83,   83,   83,   99,
+      174,  183,  175,   81,  184,  188,   99,   81,  185,  189,
+
+      224,  190,  192,  191,   81,  180,  243,  244,  205,  206,
+      273,  437,  211,  274,  212,  233,   81,  183,  207,  216,
+       81,  438,  196,  188,   99,  192,  189,  186,   99,  190,
+      191,  213,   99,  197,  219,  217,  234,  220,  273,  274,
+       99,  221,  225,  273,   99,  275,   99,  179,  195,  195,
+      195,  253,  275,  281,  287,  195,  195,  195,  195,  195,
+      195,  247,  261,  274,  248,  249,  262,  284,  275,  289,
+      263,  276,  283,  281,  291,  278,  281,  287,  195,  195,
+      195,  195,  195,  195,  254,  255,  256,  298,  331,  277,
+      378,  378,  289,  299,  284,  257,  294,  258,  374,  259,
+
+      283,  291,  260,  292,  292,  292,  374,  379,  380,  382,
+      292,  292,  292,  292,  292,  292,  381,  385,  401,  378,
+      389,  374,  402,  394,  430,  431,  447,  451,  805,  375,
+      806,  452,  382,  292,  292,  292,  292,  292,  292,  332,
+      395,  479,  333,  479,  415,  385,  388,  388,  388,  416,
+      807,  617,  652,  388,  388,  388,  388,  388,  388,  474,
+      486,  507,  487,  553,  475,  571,  508,  568,  554,  479,
+      572,  488,  573,  644,  808,  652,  388,  388,  388,  388,
+      388,  388,  448,  645,  717,  626,  651,  486,  618,  487,
+      627,  718,  571,  722,  730,  417,  801,  719,  572,  723,
+
+      418,   45,   45,   45,  720,  792,  802,  809,   45,   45,
+       45,   45,   45,   45,  651,  767,  810,  793,  811,  768,
+      812,  813,  730,  801,  814,  815,  816,  628,  817,  802,
+      818,   45,   45,   45,   45,   45,   45,  819,  820,  821,
+      822,  823,  824,  825,  826,  827,  830,  831,  832,  833,
+      828,  834,  835,  836,  837,  838,  839,  840,  841,  842,
+      844,  845,  846,  847,  848,  849,  850,  851,  852,  853,
+      843,  854,  855,  856,  857,  858,  859,  860,  861,  862,
+      863,  864,  865,  866,  867,  868,  870,  869,  871,  872,
+      873,  874,  875,  876,  877,  878,  879,  880,  881,  882,
+
+      883,  829,  884,  885,  886,  887,  888,  889,  890,  891,
+      892,  893,  894,  868,  869,  896,  898,  895,  899,  900,
       901,  902,  903,  904,  905,  906,  907,  908,  909,  910,
-      911,  912,  913,  914,  915,  916,  917,  877,  918,  919,
-      920,  921,  922,  923,  924,  925,  926,  927,  928,  929,
-      930,  931,  910,  932,  933,  934,  935,  936,  911,  937,
-      938,  939,  940,  941,  942,  943,  944,  945,  946,  947,
-      948,  949,  950,  951,  952,  953,  955,  956,  957,  958,
-      959,  960,  961,  962,  963,  964,  965,  967,  968,  969,
-      970,  971,  972,  973,  974,  975,  976,  977,  978,  979,
-
-      980,  981,  982,  983,  984,  985,  986,  987,  988,  989,
-      991,  962,  992,  993,  994,  995,  996,  990,  997,  998,
-      999, 1000, 1001, 1002, 1003, 1004,  954, 1005,  966, 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, 1008, 1031, 1032, 1033, 1034, 1035,
-     1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
-     1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
+      911,  912,  913,  914,  915,  916,  917,  918,  919,  920,
+      921,  922,  923,  924,  925,  926,  927,  928,  929,  930,
+      931,  932,  933,  934,  935,  936,  937,  897,  938,  939,
+      940,  941,  942,  943,  944,  945,  946,  947,  948,  949,
+      950,  951,  952,  931,  953,  954,  955,  956,  957,  932,
+      958,  959,  960,  961,  962,  963,  964,  965,  966,  967,
+      968,  969,  970,  971,  972,  973,  974,  975,  977,  978,
+
+      979,  980,  981,  982,  983,  984,  985,  986,  987,  989,
+      990,  991,  992,  993,  994,  995,  996,  997,  998,  999,
+     1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
+     1010, 1011, 1013,  984, 1014, 1015, 1016, 1017, 1018, 1012,
+     1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026,  976, 1027,
+      988, 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, 1030, 1053, 1054, 1055,
      1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065,
-     1066, 1067, 1068, 1042, 1069, 1070, 1071, 1072, 1073, 1074,
+     1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075,
 
-     1075, 1076, 1077, 1078, 1080, 1081, 1082, 1083, 1079, 1084,
-     1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
-     1095, 1096, 1097, 1098, 1099, 1100, 1101, 1074, 1102, 1103,
-     1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113,
-     1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
+     1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085,
+     1086, 1087, 1088, 1089, 1090, 1064, 1091, 1092, 1093, 1094,
+     1095, 1096, 1097, 1098, 1099, 1100, 1102, 1103, 1104, 1105,
+     1101, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
+     1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1096,
      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,
@@ -1274,93 +1281,95 @@ static const flex_int16_t yy_nxt[1645] =
      1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
      1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193,
      1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203,
-     1204, 1205, 1206, 1207, 1208,   12,   12,   12,   12,   12,
-       36,   36,   36,   36,   36,   78,  275,   78,   78,   78,
-       97,  368,   97,  467,   97,   99,   99,   99,   99,   99,
-      114,  114,  114,  114,  114,  168,   99,  168,  168,  168,
-      191,  191,  191,  793,  792,  791,  790,  789,  788,  787,
-      786,  785,  784,  781,  780,  779,  778,  777,  776,  775,
-      772,  771,  770,  769,  768,  767,  766,  765,  764,  763,
-
-      762,  761,  760,  759,  758,  757,  756,  755,  754,  753,
-      752,  751,  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,  719,  718,  717,  716,  715,  714,  712,  711,  710,
-      709,  708,  707,  704,  699,  698,  697,  696,  695,  694,
-      693,  692,  691,  690,  689,  688,  687,  686,  685,  684,
-      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,  635,  634,  633,  632,
-      631,  628,  627,  626,  625,  624,  623,  622,  621,  620,
-      619,  618,  617,  616,  615,  614,  610,  609,  608,  607,
-      606,  605,  604,  601,  600,  599,  598,  597,  596,  595,
-      594,  593,  592,  591,  590,  589,  588,  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,  557,  556,  555,  554,  553,  552,
-      551,  550,  549,  548,  547,  546,  545,  544,  543,  542,
-
-      539,  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,  494,  493,  492,  491,  490,  489,  488,
-      487,  486,  485,  484,  483,  482,  481,  480,  479,  478,
-      474,  473,  472,  471,  470,  469,  466,  465,  462,  461,
-      460,  459,  458,  457,  456,  455,  454,  453,  452,  451,
-      450,  449,  448,  447,  446,  445,  444,  443,  442,  439,
-      438,  435,  434,  433,  432,  431,  430,  429,  426,  425,
-
-      424,  423,  422,  419,  418,  417,  416,  415,  414,  413,
-      412,  411,  410,  409,  404,  403,  402,  401,  400,  399,
-      398,  397,  396,  395,  394,  391,  390,  389,  388,  387,
-      384,  383,  382,  381,  378,  377,  375,  374,  367,  364,
-      363,  362,  361,  360,  359,  358,  357,  356,  355,  354,
-      353,  352,  351,  350,  349,  346,  345,  344,  343,  342,
-      341,  340,  339,  338,  337,  336,  335,  334,  333,  332,
-      331,  330,  329,  328,  327,  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,  291,  290,  289,  192,  285,
-      283,  281,  280,  277,  274,  267,  266,  265,  264,  263,
-      262,  261,  260,  259,  247,  246,  245,  241,  240,  237,
-      236,  235,  234,  233,  232,  231,  228,  227,  226,  225,
-      224,  223,  222,  219,  218,  214,  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, 1209,   11, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209
+     1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213,
+     1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223,
+     1224, 1225, 1226, 1227, 1228, 1229, 1230,   12,   12,   12,
+       12,   12,   36,   36,   36,   36,   36,   78,  280,   78,
+       78,   78,   97,  377,   97,  478,   97,   99,   99,   99,
+       99,   99,  114,  114,  114,  114,  114,  170,   99,  170,
+      170,  170,  193,  193,  193,  796,  795,  794,  791,  790,
+
+      789,  788,  787,  786,  785,  784,  783,  782,  781,  780,
+      779,  778,  777,  776,  775,  774,  773,  772,  771,  770,
+      769,  766,  765,  764,  763,  762,  761,  760,  759,  758,
+      757,  756,  755,  754,  753,  752,  751,  750,  749,  748,
+      747,  746,  745,  744,  743,  742,  741,  740,  739,  738,
+      737,  736,  735,  734,  733,  732,  731,  729,  728,  727,
+      726,  725,  724,  721,  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,
+
+      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,  650,  649,
+      648,  647,  646,  643,  642,  641,  640,  639,  638,  637,
+      636,  635,  634,  633,  632,  631,  630,  629,  625,  624,
+      623,  622,  621,  620,  619,  616,  615,  614,  613,  612,
+      611,  610,  609,  608,  607,  606,  605,  604,  603,  602,
+      601,  600,  599,  598,  597,  596,  595,  594,  593,  592,
+      591,  590,  589,  588,  587,  586,  585,  584,  583,  582,
+      581,  580,  579,  578,  577,  576,  575,  574,  570,  569,
+
+      568,  567,  566,  565,  564,  563,  562,  561,  560,  559,
+      558,  557,  556,  555,  552,  551,  550,  549,  548,  547,
+      546,  545,  544,  543,  542,  541,  540,  539,  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,  506,  505,
+      504,  503,  502,  501,  500,  499,  498,  497,  496,  495,
+      494,  493,  492,  491,  490,  489,  485,  484,  483,  482,
+      481,  480,  477,  476,  473,  472,  471,  470,  469,  468,
+      467,  466,  465,  464,  463,  462,  461,  460,  459,  458,
+
+      457,  456,  455,  454,  453,  450,  449,  446,  445,  444,
+      443,  442,  441,  440,  439,  436,  435,  434,  433,  432,
+      429,  428,  427,  426,  425,  424,  423,  422,  421,  420,
+      419,  414,  413,  412,  411,  410,  409,  408,  407,  406,
+      405,  404,  403,  400,  399,  398,  397,  396,  393,  392,
+      391,  390,  387,  386,  384,  383,  376,  373,  372,  371,
+      370,  369,  368,  367,  366,  365,  364,  363,  362,  361,
+      360,  359,  358,  355,  354,  353,  352,  351,  350,  349,
+      348,  347,  346,  345,  344,  343,  342,  339,  338,  337,
+      336,  335,  334,  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,  297,  296,  295,  293,  194,  290,
+      288,  286,  285,  282,  279,  272,  271,  270,  269,  268,
+      267,  266,  265,  264,  252,  251,  250,  246,  245,  242,
+      241,  240,  239,  238,  237,  236,  235,  232,  231,  230,
+      229,  228,  227,  226,  223,  222,  218,  210,  209,  208,
+      204,  203,  202,  199,  198,  194,  187,  182,  181,  178,
+      177,  169,  157,  138,  131,  104,  103,   43,   98,   96,
+       95,   86,   43, 1231,   11, 1231, 1231, 1231, 1231, 1231,
+
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231
     } ;
 
-static const flex_int16_t yy_chk[1645] =
+static const flex_int16_t yy_chk[1667] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,   21,    0,
+        1,    1,    1,    1,    1,    1,    1,    1,   21,  241,
         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,  724,    8,
-        8,    8,    1,    8,   56,   27,   28,  338,   26,    1,
+        6,    6,    6,    7,    7,    7,    1,    7,    0,    8,
+        8,    8,    1,    8,   56,   27,   28,  241,   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,  338,   25,  725,    2,   25,   25,   25,
-       61,   65,    2,   65,  251,   20,   50,  251,   53,    2,
+       61,   65,   25,  723,   25,  725,    2,   25,   25,   25,
+       61,   65,    2,   65,  256,   20,   50,  256,   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,
@@ -1371,162 +1380,164 @@ static const flex_int16_t yy_chk[1645] =
        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,  726,   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,
-      727,   89,   68,  106,   45,   90,   45,   45,   45,   45,
+       19,   68,   59,   54,   59,   68,   59,   22,   73,   47,
+       62,   58,   73,   54,   64,  129,   55,   52,   17,   64,
+      726,   89,   64,   19,   90,   68,   54,   44,  129,  727,
+       22,   45,   69,   62,   45,   45,   45,   58,   45,   45,
+       45,   54,   57,   58,   62,   45,   45,   89,   45,   57,
+       90,   69,   99,   69,   45,   69,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   57,   67,   67,
-      106,   57,   67,   69,   70,   57,   76,  113,   67,   70,
-       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,  728,
-       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,  129,  120,  127,  729,
-      127,  142,  134,   82,  124,  171,  128,  101,  169,   83,
-      105,  101,  129,  150,  150,  101,  109,  127,  131,  111,
-      117,  131,  142,  101,  157,  131,  170,  101,  171,  101,
-      101,  116,  116,  116,  173,  230,  169,  730,  116,  116,
-      116,  116,  116,  116,  134,  153,  158,  182,  153,  153,
-      158,  172,  170,  174,  158,  178,  181,  157,  157,  157,
-      173,  116,  116,  116,  116,  116,  116,  186,  157,  188,
-      157,  190,  157,  194,  182,  157,  174,  198,  178,  172,
-      268,  271,  278,  198,  181,  276,  230,  282,  288,  230,
-
-      186,  731,  188,  277,  277,  293,  194,  369,  190,  193,
-      193,  193,  277,  268,  271,  278,  193,  193,  193,  193,
-      193,  193,  293,  330,  276,  282,  300,  288,  324,  324,
-      300,  312,  363,  330,  341,  369,  312,  363,  341,  193,
-      193,  193,  193,  193,  193,  287,  287,  287,  523,  732,
-      733,  734,  287,  287,  287,  287,  287,  287,  401,  378,
-      449,  378,  550,  401,  380,  449,  475,  476,  477,  532,
-      736,  559,  550,  477,  532,  287,  287,  287,  287,  287,
-      287,  558,  312,  737,  738,  523,  378,  312,  378,  379,
-      379,  379,  380,  475,  559,  476,  379,  379,  379,  379,
-
-      379,  379,  628,  625,  637,  626,  702,  712,  628,  558,
-      625,  532,  626,  678,  713,  740,  742,  678,  702,  379,
-      379,  379,  379,  379,  379,  739,  743,  744,  745,  746,
-      739,  747,  637,  748,  712,  749,  750,  713,  751,  752,
-      753,  756,  757,  758,  760,  761,  762,  764,  765,  766,
-      752,  767,  768,  769,  770,  771,  772,  773,  774,  775,
-      777,  778,  779,  780,  781,  782,  784,  783,  785,  786,
-      787,  788,  789,  790,  791,  792,  794,  795,  796,  797,
-      798,  739,  799,  800,  801,  802,  803,  804,  805,  806,
-      807,  809,  810,  782,  783,  811,  812,  810,  813,  814,
-
-      815,  816,  817,  818,  819,  820,  821,  822,  823,  824,
-      825,  826,  827,  828,  829,  831,  832,  833,  834,  835,
-      836,  837,  839,  842,  843,  844,  845,  846,  847,  848,
-      849,  850,  851,  852,  853,  854,  857,  811,  858,  859,
-      860,  861,  862,  863,  864,  865,  866,  867,  868,  869,
-      870,  873,  848,  875,  877,  878,  879,  880,  849,  881,
-      882,  884,  885,  887,  888,  889,  892,  894,  895,  896,
-      897,  898,  899,  900,  901,  902,  903,  904,  905,  906,
-      907,  908,  909,  910,  911,  912,  913,  914,  915,  916,
-      917,  918,  919,  920,  922,  923,  924,  925,  926,  927,
-
-      928,  929,  930,  931,  932,  933,  934,  935,  937,  938,
-      939,  910,  941,  942,  943,  944,  945,  938,  946,  947,
-      948,  949,  950,  952,  953,  954,  902,  959,  913,  960,
-      961,  962,  964,  966,  967,  968,  969,  970,  971,  973,
-      974,  975,  976,  977,  978,  979,  980,  981,  982,  984,
-      986,  988,  989,  990,  962,  992,  993,  994,  995,  996,
-      999, 1001, 1002, 1003, 1005, 1007, 1008, 1009, 1010, 1011,
-     1012, 1013, 1014, 1016, 1018, 1019, 1020, 1021, 1022, 1023,
-     1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033,
-     1034, 1035, 1036, 1008, 1037, 1038, 1039, 1040, 1041, 1042,
-
-     1043, 1045, 1048, 1050, 1051, 1052, 1053, 1054, 1050, 1055,
-     1056, 1058, 1061, 1062, 1064, 1065, 1066, 1067, 1068, 1069,
-     1070, 1071, 1072, 1074, 1075, 1077, 1079, 1042, 1080, 1081,
-     1082, 1083, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
-     1093, 1094, 1095, 1096, 1097, 1099, 1100, 1101, 1102, 1103,
-     1105, 1106, 1107, 1108, 1110, 1111, 1112, 1113, 1114, 1115,
-     1116, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1127,
-     1128, 1129, 1130, 1132, 1133, 1134, 1135, 1136, 1137, 1138,
-     1139, 1140, 1141, 1142, 1144, 1147, 1148, 1149, 1150, 1152,
-     1154, 1155, 1157, 1158, 1159, 1160, 1162, 1163, 1164, 1165,
-
-     1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175,
-     1176, 1177, 1178, 1179, 1180, 1181, 1182, 1184, 1186, 1187,
-     1188, 1189, 1190, 1194, 1195, 1196, 1198, 1199, 1200, 1201,
-     1202, 1203, 1204, 1206, 1207, 1210, 1210, 1210, 1210, 1210,
-     1211, 1211, 1211, 1211, 1211, 1212, 1218, 1212, 1212, 1212,
-     1213, 1219, 1213, 1220, 1213, 1214, 1214, 1214, 1214, 1214,
-     1215, 1215, 1215, 1215, 1215, 1216, 1221, 1216, 1216, 1216,
-     1217, 1217, 1217,  723,  722,  721,  720,  719,  718,  717,
-      716,  715,  714,  710,  709,  708,  706,  705,  704,  703,
-      701,  700,  699,  698,  697,  696,  695,  694,  693,  692,
-
-      691,  690,  689,  688,  687,  686,  685,  683,  682,  681,
-      680,  679,  677,  676,  673,  672,  671,  668,  667,  666,
-      665,  664,  663,  662,  661,  660,  659,  658,  657,  656,
-      655,  653,  652,  651,  650,  649,  648,  647,  646,  645,
-      644,  643,  642,  641,  640,  639,  638,  636,  634,  633,
-      632,  631,  630,  627,  624,  623,  622,  621,  620,  619,
-      618,  617,  616,  615,  614,  613,  612,  610,  609,  608,
-      607,  606,  605,  604,  603,  601,  600,  599,  598,  596,
-      595,  594,  593,  592,  591,  590,  589,  588,  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,  557,  556,  553,  552,
-      551,  548,  547,  546,  545,  544,  543,  542,  541,  539,
-      538,  537,  536,  535,  534,  533,  531,  530,  528,  527,
-      526,  525,  524,  522,  521,  520,  518,  517,  516,  515,
-      514,  513,  512,  511,  510,  509,  508,  507,  506,  505,
-      504,  502,  501,  500,  499,  498,  497,  496,  494,  493,
-      492,  491,  490,  489,  488,  487,  486,  485,  484,  483,
-      482,  481,  480,  479,  473,  471,  468,  466,  465,  464,
-      462,  458,  457,  456,  455,  454,  453,  452,  451,  450,
-
-      448,  447,  446,  445,  444,  443,  442,  441,  440,  439,
-      437,  435,  434,  433,  432,  431,  430,  429,  428,  427,
-      425,  424,  423,  422,  421,  420,  419,  418,  417,  416,
-      415,  414,  413,  412,  411,  410,  409,  408,  407,  406,
-      404,  403,  402,  400,  399,  398,  397,  396,  395,  393,
-      392,  391,  390,  389,  387,  386,  385,  384,  382,  381,
-      376,  375,  373,  372,  371,  370,  367,  364,  362,  361,
-      360,  359,  358,  357,  356,  355,  354,  353,  352,  351,
-      350,  349,  348,  347,  346,  345,  344,  343,  342,  340,
-      339,  337,  336,  335,  334,  333,  332,  331,  329,  328,
-
-      327,  326,  325,  323,  322,  321,  320,  319,  318,  317,
-      316,  315,  314,  313,  311,  310,  309,  308,  307,  306,
-      305,  304,  303,  302,  301,  299,  298,  297,  296,  295,
-      292,  291,  290,  289,  286,  284,  281,  279,  274,  267,
-      266,  265,  264,  263,  262,  261,  260,  259,  258,  257,
-      256,  255,  254,  253,  252,  250,  249,  248,  247,  246,
-      245,  244,  243,  242,  241,  240,  239,  238,  237,  236,
-      235,  234,  233,  232,  231,  229,  228,  227,  226,  225,
-      224,  223,  222,  221,  219,  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,  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, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209
+       45,   45,   45,   45,   45,   45,   45,   57,   87,   87,
+       87,   57,   60,   91,  731,   57,   60,   99,   70,   60,
+       60,   67,   67,   57,   76,   67,   74,   57,   70,   57,
+       57,   67,   60,   70,   70,   71,   74,   74,   71,   71,
+       75,   91,   74,   79,   79,   79,  120,   76,   94,   71,
+       75,  102,   71,   81,   79,   81,  120,   76,   81,   81,
+       81,  732,   76,   75,   92,   75,   93,  106,   80,   75,
+       80,   80,   80,   88,   88,   88,   94,   79,   75,  102,
+       82,   80,   82,   82,   82,   75,   83,   83,   83,  101,
+       92,  105,   93,   82,  106,  109,  101,   83,  107,  110,
+
+      135,  111,  113,  112,   80,  117,  152,  152,  124,  124,
+      171,  337,  128,  172,  128,  143,   82,  105,  124,  130,
+       83,  337,  117,  109,  101,  113,  110,  107,  101,  111,
+      112,  128,  101,  117,  132,  130,  143,  132,  171,  172,
+      101,  132,  135,  174,  101,  173,  101,  101,  116,  116,
+      116,  159,  176,  180,  188,  116,  116,  116,  116,  116,
+      116,  155,  160,  175,  155,  155,  160,  184,  173,  190,
+      160,  174,  183,  197,  192,  176,  180,  188,  116,  116,
+      116,  116,  116,  116,  159,  159,  159,  201,  234,  175,
+      281,  294,  190,  201,  184,  159,  197,  159,  273,  159,
+
+      183,  192,  159,  195,  195,  195,  276,  282,  282,  283,
+      195,  195,  195,  195,  195,  195,  282,  287,  306,  281,
+      294,  273,  306,  299,  331,  331,  347,  350,  733,  276,
+      734,  350,  283,  195,  195,  195,  195,  195,  195,  234,
+      299,  378,  234,  389,  319,  287,  292,  292,  292,  319,
+      735,  536,  572,  292,  292,  292,  292,  292,  292,  372,
+      387,  411,  387,  460,  372,  486,  411,  488,  460,  378,
+      487,  389,  488,  563,  736,  572,  292,  292,  292,  292,
+      292,  292,  347,  563,  640,  545,  571,  387,  536,  387,
+      545,  640,  486,  643,  652,  319,  729,  641,  487,  643,
+
+      319,  388,  388,  388,  641,  719,  730,  737,  388,  388,
+      388,  388,  388,  388,  571,  694,  738,  719,  739,  694,
+      740,  741,  652,  729,  743,  744,  745,  545,  746,  730,
+      747,  388,  388,  388,  388,  388,  388,  748,  749,  750,
+      751,  752,  754,  755,  756,  757,  758,  760,  761,  762,
+      757,  763,  764,  765,  766,  767,  768,  769,  770,  771,
+      772,  775,  776,  777,  779,  780,  781,  783,  784,  785,
+      771,  786,  787,  788,  789,  790,  791,  792,  793,  794,
+      796,  797,  798,  799,  800,  801,  803,  802,  804,  805,
+      806,  807,  808,  809,  810,  811,  813,  814,  815,  816,
+
+      817,  757,  818,  819,  820,  821,  822,  823,  824,  825,
+      826,  828,  829,  801,  802,  830,  831,  829,  832,  833,
+      834,  835,  836,  837,  838,  839,  840,  841,  842,  843,
+      844,  845,  846,  847,  848,  849,  851,  852,  853,  854,
+      855,  856,  857,  859,  862,  863,  864,  865,  866,  867,
+      868,  869,  870,  871,  872,  873,  874,  830,  877,  878,
+      879,  880,  881,  882,  883,  884,  885,  886,  887,  888,
+      889,  890,  893,  868,  895,  897,  898,  899,  900,  869,
+      901,  902,  904,  905,  907,  908,  909,  910,  913,  915,
+      916,  917,  918,  919,  920,  921,  922,  923,  924,  925,
+
+      926,  927,  928,  929,  930,  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,
+      958,  959,  960,  931,  963,  964,  965,  966,  967,  959,
+      968,  969,  970,  971,  972,  974,  975,  976,  923,  981,
+      934,  982,  983,  984,  986,  988,  989,  990,  991,  992,
+      993,  995,  996,  997,  998,  999, 1000, 1001, 1002, 1003,
+     1004, 1006, 1008, 1010, 1011, 1012,  984, 1014, 1015, 1016,
+     1017, 1018, 1021, 1023, 1024, 1025, 1027, 1029, 1030, 1031,
+     1032, 1033, 1034, 1035, 1036, 1038, 1040, 1041, 1042, 1043,
+
+     1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
+     1054, 1055, 1056, 1057, 1058, 1030, 1059, 1060, 1061, 1062,
+     1063, 1064, 1065, 1067, 1070, 1072, 1073, 1074, 1075, 1076,
+     1072, 1077, 1078, 1080, 1083, 1084, 1086, 1087, 1088, 1089,
+     1090, 1091, 1092, 1093, 1094, 1096, 1097, 1099, 1101, 1064,
+     1102, 1103, 1104, 1105, 1107, 1108, 1109, 1110, 1111, 1112,
+     1113, 1114, 1115, 1116, 1117, 1118, 1119, 1121, 1122, 1123,
+     1124, 1125, 1127, 1128, 1129, 1130, 1132, 1133, 1134, 1135,
+     1136, 1137, 1138, 1140, 1141, 1142, 1143, 1144, 1145, 1146,
+     1147, 1149, 1150, 1151, 1152, 1154, 1155, 1156, 1157, 1158,
+
+     1159, 1160, 1161, 1162, 1163, 1164, 1166, 1169, 1170, 1171,
+     1172, 1174, 1176, 1177, 1179, 1180, 1181, 1182, 1184, 1185,
+     1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195,
+     1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1206,
+     1208, 1209, 1210, 1211, 1212, 1216, 1217, 1218, 1220, 1221,
+     1222, 1223, 1224, 1225, 1226, 1228, 1229, 1232, 1232, 1232,
+     1232, 1232, 1233, 1233, 1233, 1233, 1233, 1234, 1240, 1234,
+     1234, 1234, 1235, 1241, 1235, 1242, 1235, 1236, 1236, 1236,
+     1236, 1236, 1237, 1237, 1237, 1237, 1237, 1238, 1243, 1238,
+     1238, 1238, 1239, 1239, 1239,  722,  721,  720,  718,  717,
+
+      716,  715,  714,  713,  712,  711,  710,  709,  708,  707,
+      706,  705,  704,  703,  702,  700,  699,  698,  697,  696,
+      695,  693,  692,  689,  688,  687,  684,  683,  682,  681,
+      680,  679,  678,  677,  676,  675,  674,  673,  672,  671,
+      669,  668,  667,  666,  665,  664,  663,  662,  661,  660,
+      659,  658,  657,  656,  655,  654,  653,  651,  649,  648,
+      647,  646,  645,  642,  639,  638,  637,  636,  635,  634,
+      633,  632,  631,  630,  629,  628,  627,  625,  624,  623,
+      622,  621,  620,  619,  618,  616,  615,  614,  613,  612,
+      610,  609,  608,  607,  606,  605,  604,  603,  602,  601,
+
+      600,  599,  598,  597,  596,  595,  594,  593,  592,  591,
+      590,  589,  588,  587,  586,  585,  584,  583,  582,  581,
+      580,  579,  578,  577,  576,  575,  574,  573,  570,  569,
+      566,  565,  564,  561,  560,  559,  558,  557,  556,  555,
+      554,  552,  551,  550,  549,  548,  547,  546,  544,  543,
+      541,  540,  539,  538,  537,  535,  534,  533,  532,  530,
+      529,  528,  527,  526,  525,  524,  523,  522,  521,  520,
+      519,  518,  517,  516,  514,  513,  512,  511,  510,  509,
+      508,  506,  505,  504,  503,  502,  501,  500,  499,  498,
+      497,  496,  495,  494,  493,  492,  491,  490,  484,  482,
+
+      479,  477,  476,  475,  473,  469,  468,  467,  466,  465,
+      464,  463,  462,  461,  459,  458,  457,  456,  455,  454,
+      453,  452,  451,  450,  448,  446,  445,  444,  443,  442,
+      441,  440,  439,  438,  437,  435,  434,  433,  432,  431,
+      430,  429,  428,  427,  426,  425,  424,  423,  422,  421,
+      420,  419,  418,  417,  416,  414,  413,  412,  410,  409,
+      408,  407,  406,  405,  403,  402,  401,  400,  399,  398,
+      396,  395,  394,  393,  391,  390,  385,  384,  382,  381,
+      380,  379,  376,  373,  371,  370,  369,  368,  367,  366,
+      365,  364,  363,  362,  361,  360,  359,  358,  357,  356,
+
+      355,  354,  353,  352,  351,  349,  348,  346,  345,  344,
+      343,  342,  341,  340,  339,  336,  335,  334,  333,  332,
+      330,  329,  328,  327,  326,  325,  324,  323,  322,  321,
+      320,  318,  317,  316,  315,  314,  313,  312,  311,  310,
+      309,  308,  307,  305,  304,  303,  302,  301,  298,  297,
+      296,  295,  291,  289,  286,  284,  279,  272,  271,  270,
+      269,  268,  267,  266,  265,  264,  263,  262,  261,  260,
+      259,  258,  257,  255,  254,  253,  252,  251,  250,  249,
+      248,  247,  246,  245,  244,  243,  242,  240,  239,  238,
+      237,  236,  235,  233,  232,  231,  230,  229,  228,  227,
+
+      226,  225,  223,  222,  221,  220,  219,  218,  217,  216,
+      215,  214,  213,  212,  211,  210,  209,  208,  207,  206,
+      205,  204,  203,  202,  200,  199,  198,  196,  193,  191,
+      189,  187,  186,  181,  177,  169,  168,  167,  166,  165,
+      164,  163,  162,  161,  158,  157,  156,  154,  153,  151,
+      150,  149,  148,  147,  146,  145,  144,  142,  141,  140,
+      139,  138,  137,  136,  134,  133,  131,  127,  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, 1231, 1231, 1231, 1231, 1231, 1231,
+
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1535,7 +1546,7 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[154] =
+static const flex_int16_t yy_rule_linenum[158] =
     {   0,
       135,  137,  139,  144,  145,  150,  151,  152,  164,  167,
       172,  179,  188,  197,  206,  215,  224,  233,  242,  251,
@@ -1545,15 +1556,15 @@ static const flex_int16_t yy_rule_linenum[154] =
       546,  557,  567,  577,  587,  597,  607,  617,  627,  637,
       646,  655,  664,  679,  694,  703,  712,  721,  730,  739,
       748,  757,  766,  775,  785,  794,  803,  812,  821,  830,
-      839,  849,  858,  867,  876,  885,  894,  903,  912,  921,
-      930,  940,  949,  958,  968,  978,  988,  997, 1006, 1015,
+      839,  848,  857,  866,  875,  885,  894,  903,  912,  921,
+      930,  939,  948,  957,  966,  976,  985,  994, 1004, 1014,
 
-     1026, 1036, 1045, 1055, 1065, 1074, 1083, 1092, 1101, 1110,
-     1119, 1129, 1138, 1147, 1156, 1165, 1174, 1183, 1192, 1201,
+     1024, 1033, 1042, 1051, 1062, 1072, 1081, 1091, 1101, 1110,
+     1119, 1128, 1137, 1146, 1155, 1165, 1174, 1183, 1192, 1201,
      1210, 1219, 1228, 1237, 1246, 1255, 1264, 1273, 1282, 1291,
-     1300, 1309, 1318, 1327, 1336, 1345, 1443, 1448, 1453, 1458,
-     1459, 1460, 1461, 1462, 1463, 1465, 1483, 1496, 1501, 1505,
-     1507, 1509, 1511
+     1300, 1309, 1318, 1327, 1336, 1345, 1354, 1363, 1372, 1381,
+     1479, 1484, 1489, 1494, 1495, 1496, 1497, 1498, 1499, 1501,
+     1519, 1532, 1537, 1541, 1543, 1545, 1547
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1600,7 +1611,7 @@ unsigned int comment_start_line = 0;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1603 "dhcp6_lexer.cc"
+#line 1614 "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
@@ -1626,8 +1637,8 @@ unsigned int comment_start_line = 0;
    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 1629 "dhcp6_lexer.cc"
-#line 1630 "dhcp6_lexer.cc"
+#line 1640 "dhcp6_lexer.cc"
+#line 1641 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1951,7 +1962,7 @@ YY_DECL
     }
 
 
-#line 1954 "dhcp6_lexer.cc"
+#line 1965 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1980,13 +1991,13 @@ yy_match:
                        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 >= 1210 )
+                               if ( yy_current_state >= 1232 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1209 );
+               while ( yy_current_state != 1231 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2005,13 +2016,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 154 )
+                       else if ( yy_act < 158 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 154 )
+                       else if ( yy_act == 158 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 155 )
+                       else if ( yy_act == 159 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2985,6 +2996,54 @@ YY_RULE_SETUP
 case 81:
 YY_RULE_SETUP
 #line 839 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::RESERVATION_MODE:
+        return isc::dhcp::Dhcp6Parser::make_DISABLED(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("disabled", driver.loc_);
+    }
+}
+       YY_BREAK
+case 82:
+YY_RULE_SETUP
+#line 848 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::RESERVATION_MODE:
+        return isc::dhcp::Dhcp6Parser::make_DISABLED(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("off", driver.loc_);
+    }
+}
+       YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 857 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::RESERVATION_MODE:
+        return isc::dhcp::Dhcp6Parser::make_OUT_OF_POOL(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("out-of-pool", driver.loc_);
+    }
+}
+       YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 866 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::RESERVATION_MODE:
+        return isc::dhcp::Dhcp6Parser::make_ALL(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("all", driver.loc_);
+    }
+}
+       YY_BREAK
+case 85:
+YY_RULE_SETUP
+#line 875 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -2995,9 +3054,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 86:
 YY_RULE_SETUP
-#line 849 "dhcp6_lexer.ll"
+#line 885 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3007,9 +3066,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 87:
 YY_RULE_SETUP
-#line 858 "dhcp6_lexer.ll"
+#line 894 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3019,9 +3078,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 88:
 YY_RULE_SETUP
-#line 867 "dhcp6_lexer.ll"
+#line 903 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3031,9 +3090,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 89:
 YY_RULE_SETUP
-#line 876 "dhcp6_lexer.ll"
+#line 912 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3043,9 +3102,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 90:
 YY_RULE_SETUP
-#line 885 "dhcp6_lexer.ll"
+#line 921 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGING:
@@ -3055,9 +3114,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 91:
 YY_RULE_SETUP
-#line 894 "dhcp6_lexer.ll"
+#line 930 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3067,9 +3126,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 92:
 YY_RULE_SETUP
-#line 903 "dhcp6_lexer.ll"
+#line 939 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3079,9 +3138,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 93:
 YY_RULE_SETUP
-#line 912 "dhcp6_lexer.ll"
+#line 948 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3091,9 +3150,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 94:
 YY_RULE_SETUP
-#line 921 "dhcp6_lexer.ll"
+#line 957 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3103,9 +3162,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 95:
 YY_RULE_SETUP
-#line 930 "dhcp6_lexer.ll"
+#line 966 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3115,9 +3174,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 96:
 YY_RULE_SETUP
-#line 940 "dhcp6_lexer.ll"
+#line 976 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3127,9 +3186,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 97:
 YY_RULE_SETUP
-#line 949 "dhcp6_lexer.ll"
+#line 985 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3139,9 +3198,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 98:
 YY_RULE_SETUP
-#line 958 "dhcp6_lexer.ll"
+#line 994 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3152,9 +3211,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 99:
 YY_RULE_SETUP
-#line 968 "dhcp6_lexer.ll"
+#line 1004 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3165,9 +3224,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 100:
 YY_RULE_SETUP
-#line 978 "dhcp6_lexer.ll"
+#line 1014 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3178,9 +3237,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 101:
 YY_RULE_SETUP
-#line 988 "dhcp6_lexer.ll"
+#line 1024 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3190,9 +3249,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 102:
 YY_RULE_SETUP
-#line 997 "dhcp6_lexer.ll"
+#line 1033 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3202,9 +3261,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 103:
 YY_RULE_SETUP
-#line 1006 "dhcp6_lexer.ll"
+#line 1042 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3214,9 +3273,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 104:
 YY_RULE_SETUP
-#line 1015 "dhcp6_lexer.ll"
+#line 1051 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -3228,9 +3287,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 105:
 YY_RULE_SETUP
-#line 1026 "dhcp6_lexer.ll"
+#line 1062 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3241,9 +3300,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 106:
 YY_RULE_SETUP
-#line 1036 "dhcp6_lexer.ll"
+#line 1072 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3253,9 +3312,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 107:
 YY_RULE_SETUP
-#line 1045 "dhcp6_lexer.ll"
+#line 1081 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3266,9 +3325,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 108:
 YY_RULE_SETUP
-#line 1055 "dhcp6_lexer.ll"
+#line 1091 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3279,9 +3338,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 109:
 YY_RULE_SETUP
-#line 1065 "dhcp6_lexer.ll"
+#line 1101 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3291,9 +3350,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 110:
 YY_RULE_SETUP
-#line 1074 "dhcp6_lexer.ll"
+#line 1110 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3303,9 +3362,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 111:
 YY_RULE_SETUP
-#line 1083 "dhcp6_lexer.ll"
+#line 1119 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3315,9 +3374,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 112:
 YY_RULE_SETUP
-#line 1092 "dhcp6_lexer.ll"
+#line 1128 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3327,9 +3386,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 113:
 YY_RULE_SETUP
-#line 1101 "dhcp6_lexer.ll"
+#line 1137 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3339,9 +3398,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 114:
 YY_RULE_SETUP
-#line 1110 "dhcp6_lexer.ll"
+#line 1146 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -3351,9 +3410,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 115:
 YY_RULE_SETUP
-#line 1119 "dhcp6_lexer.ll"
+#line 1155 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3363,9 +3422,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 116:
 YY_RULE_SETUP
-#line 1129 "dhcp6_lexer.ll"
+#line 1165 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3375,9 +3434,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 117:
 YY_RULE_SETUP
-#line 1138 "dhcp6_lexer.ll"
+#line 1174 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3387,9 +3446,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 118:
 YY_RULE_SETUP
-#line 1147 "dhcp6_lexer.ll"
+#line 1183 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3399,9 +3458,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 119:
 YY_RULE_SETUP
-#line 1156 "dhcp6_lexer.ll"
+#line 1192 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3411,9 +3470,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 120:
 YY_RULE_SETUP
-#line 1165 "dhcp6_lexer.ll"
+#line 1201 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3423,9 +3482,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 121:
 YY_RULE_SETUP
-#line 1174 "dhcp6_lexer.ll"
+#line 1210 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3435,9 +3494,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 122:
 YY_RULE_SETUP
-#line 1183 "dhcp6_lexer.ll"
+#line 1219 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3447,9 +3506,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 123:
 YY_RULE_SETUP
-#line 1192 "dhcp6_lexer.ll"
+#line 1228 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3459,9 +3518,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 124:
 YY_RULE_SETUP
-#line 1201 "dhcp6_lexer.ll"
+#line 1237 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3471,9 +3530,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 125:
 YY_RULE_SETUP
-#line 1210 "dhcp6_lexer.ll"
+#line 1246 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3483,9 +3542,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 126:
 YY_RULE_SETUP
-#line 1219 "dhcp6_lexer.ll"
+#line 1255 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3495,9 +3554,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 127:
 YY_RULE_SETUP
-#line 1228 "dhcp6_lexer.ll"
+#line 1264 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3507,9 +3566,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 128:
 YY_RULE_SETUP
-#line 1237 "dhcp6_lexer.ll"
+#line 1273 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3519,9 +3578,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 129:
 YY_RULE_SETUP
-#line 1246 "dhcp6_lexer.ll"
+#line 1282 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3531,9 +3590,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 130:
 YY_RULE_SETUP
-#line 1255 "dhcp6_lexer.ll"
+#line 1291 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3543,9 +3602,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 131:
 YY_RULE_SETUP
-#line 1264 "dhcp6_lexer.ll"
+#line 1300 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3555,9 +3614,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 132:
 YY_RULE_SETUP
-#line 1273 "dhcp6_lexer.ll"
+#line 1309 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3567,9 +3626,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 133:
 YY_RULE_SETUP
-#line 1282 "dhcp6_lexer.ll"
+#line 1318 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3579,9 +3638,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 134:
 YY_RULE_SETUP
-#line 1291 "dhcp6_lexer.ll"
+#line 1327 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3591,9 +3650,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 135:
 YY_RULE_SETUP
-#line 1300 "dhcp6_lexer.ll"
+#line 1336 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -3603,9 +3662,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 136:
 YY_RULE_SETUP
-#line 1309 "dhcp6_lexer.ll"
+#line 1345 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -3615,9 +3674,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 137:
 YY_RULE_SETUP
-#line 1318 "dhcp6_lexer.ll"
+#line 1354 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3627,9 +3686,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 138:
 YY_RULE_SETUP
-#line 1327 "dhcp6_lexer.ll"
+#line 1363 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3639,9 +3698,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 139:
 YY_RULE_SETUP
-#line 1336 "dhcp6_lexer.ll"
+#line 1372 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3651,9 +3710,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 140:
 YY_RULE_SETUP
-#line 1345 "dhcp6_lexer.ll"
+#line 1381 "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.
@@ -3752,65 +3811,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 137:
-/* rule 137 can match eol */
+case 141:
+/* rule 141 can match eol */
 YY_RULE_SETUP
-#line 1443 "dhcp6_lexer.ll"
+#line 1479 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 138:
-/* rule 138 can match eol */
+case 142:
+/* rule 142 can match eol */
 YY_RULE_SETUP
-#line 1448 "dhcp6_lexer.ll"
+#line 1484 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 139:
+case 143:
 YY_RULE_SETUP
-#line 1453 "dhcp6_lexer.ll"
+#line 1489 "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 140:
+case 144:
 YY_RULE_SETUP
-#line 1458 "dhcp6_lexer.ll"
+#line 1494 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 141:
+case 145:
 YY_RULE_SETUP
-#line 1459 "dhcp6_lexer.ll"
+#line 1495 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 142:
+case 146:
 YY_RULE_SETUP
-#line 1460 "dhcp6_lexer.ll"
+#line 1496 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 143:
+case 147:
 YY_RULE_SETUP
-#line 1461 "dhcp6_lexer.ll"
+#line 1497 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 144:
+case 148:
 YY_RULE_SETUP
-#line 1462 "dhcp6_lexer.ll"
+#line 1498 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 145:
+case 149:
 YY_RULE_SETUP
-#line 1463 "dhcp6_lexer.ll"
+#line 1499 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 146:
+case 150:
 YY_RULE_SETUP
-#line 1465 "dhcp6_lexer.ll"
+#line 1501 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -3829,9 +3888,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 147:
+case 151:
 YY_RULE_SETUP
-#line 1483 "dhcp6_lexer.ll"
+#line 1519 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -3845,43 +3904,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 148:
+case 152:
 YY_RULE_SETUP
-#line 1496 "dhcp6_lexer.ll"
+#line 1532 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 149:
+case 153:
 YY_RULE_SETUP
-#line 1501 "dhcp6_lexer.ll"
+#line 1537 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 150:
+case 154:
 YY_RULE_SETUP
-#line 1505 "dhcp6_lexer.ll"
+#line 1541 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 151:
+case 155:
 YY_RULE_SETUP
-#line 1507 "dhcp6_lexer.ll"
+#line 1543 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 152:
+case 156:
 YY_RULE_SETUP
-#line 1509 "dhcp6_lexer.ll"
+#line 1545 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 153:
+case 157:
 YY_RULE_SETUP
-#line 1511 "dhcp6_lexer.ll"
+#line 1547 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1513 "dhcp6_lexer.ll"
+#line 1549 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -3905,12 +3964,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 154:
+case 158:
 YY_RULE_SETUP
-#line 1536 "dhcp6_lexer.ll"
+#line 1572 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 3913 "dhcp6_lexer.cc"
+#line 3972 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4229,7 +4288,7 @@ static int yy_get_next_buffer (void)
                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 >= 1210 )
+                       if ( yy_current_state >= 1232 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4262,11 +4321,11 @@ static int yy_get_next_buffer (void)
        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 >= 1210 )
+               if ( yy_current_state >= 1232 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1209);
+       yy_is_jam = (yy_current_state == 1231);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5015,7 +5074,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1536 "dhcp6_lexer.ll"
+#line 1572 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index dd6691084b52ba5c91ebc14d6cff0aaa0bc6b6ee..c24f86f3b63e026fe8549195375ada7fb09ee833 100644 (file)
@@ -253,28 +253,29 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 162: // value
-      case 166: // map_value
-      case 210: // db_type
-      case 405: // duid_type
-      case 438: // ncr_protocol_value
-      case 446: // replace_client_name_value
+      case 165: // value
+      case 169: // map_value
+      case 213: // db_type
+      case 289: // hr_mode
+      case 409: // duid_type
+      case 442: // ncr_protocol_value
+      case 450: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 147: // "boolean"
+      case 150: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 146: // "floating point"
+      case 149: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 145: // "integer"
+      case 148: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 144: // "constant string"
+      case 147: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -293,28 +294,29 @@ namespace isc { namespace dhcp {
     state = that.state;
       switch (that.type_get ())
     {
-      case 162: // value
-      case 166: // map_value
-      case 210: // db_type
-      case 405: // duid_type
-      case 438: // ncr_protocol_value
-      case 446: // replace_client_name_value
+      case 165: // value
+      case 169: // map_value
+      case 213: // db_type
+      case 289: // hr_mode
+      case 409: // duid_type
+      case 442: // ncr_protocol_value
+      case 450: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 147: // "boolean"
+      case 150: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 146: // "floating point"
+      case 149: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 145: // "integer"
+      case 148: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 144: // "constant string"
+      case 147: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -354,74 +356,81 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 144: // "constant string"
+            case 147: // "constant string"
 
-#line 219 "dhcp6_parser.yy" // lalr1.cc:636
+#line 223 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
-#line 362 "dhcp6_parser.cc" // lalr1.cc:636
+#line 364 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 145: // "integer"
+      case 148: // "integer"
 
-#line 219 "dhcp6_parser.yy" // lalr1.cc:636
+#line 223 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
-#line 369 "dhcp6_parser.cc" // lalr1.cc:636
+#line 371 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 146: // "floating point"
+      case 149: // "floating point"
 
-#line 219 "dhcp6_parser.yy" // lalr1.cc:636
+#line 223 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
-#line 376 "dhcp6_parser.cc" // lalr1.cc:636
+#line 378 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 147: // "boolean"
+      case 150: // "boolean"
 
-#line 219 "dhcp6_parser.yy" // lalr1.cc:636
+#line 223 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
-#line 383 "dhcp6_parser.cc" // lalr1.cc:636
+#line 385 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 162: // value
+      case 165: // value
 
-#line 219 "dhcp6_parser.yy" // lalr1.cc:636
+#line 223 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 390 "dhcp6_parser.cc" // lalr1.cc:636
+#line 392 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 166: // map_value
+      case 169: // map_value
 
-#line 219 "dhcp6_parser.yy" // lalr1.cc:636
+#line 223 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 397 "dhcp6_parser.cc" // lalr1.cc:636
+#line 399 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 210: // db_type
+      case 213: // db_type
 
-#line 219 "dhcp6_parser.yy" // lalr1.cc:636
+#line 223 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 404 "dhcp6_parser.cc" // lalr1.cc:636
+#line 406 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 405: // duid_type
+      case 289: // hr_mode
 
-#line 219 "dhcp6_parser.yy" // lalr1.cc:636
+#line 223 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 411 "dhcp6_parser.cc" // lalr1.cc:636
+#line 413 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 438: // ncr_protocol_value
+      case 409: // duid_type
 
-#line 219 "dhcp6_parser.yy" // lalr1.cc:636
+#line 223 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 418 "dhcp6_parser.cc" // lalr1.cc:636
+#line 420 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 446: // replace_client_name_value
+      case 442: // ncr_protocol_value
 
-#line 219 "dhcp6_parser.yy" // lalr1.cc:636
+#line 223 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 425 "dhcp6_parser.cc" // lalr1.cc:636
+#line 427 "dhcp6_parser.cc" // lalr1.cc:636
+        break;
+
+      case 450: // replace_client_name_value
+
+#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 434 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
 
@@ -621,28 +630,29 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 162: // value
-      case 166: // map_value
-      case 210: // db_type
-      case 405: // duid_type
-      case 438: // ncr_protocol_value
-      case 446: // replace_client_name_value
+      case 165: // value
+      case 169: // map_value
+      case 213: // db_type
+      case 289: // hr_mode
+      case 409: // duid_type
+      case 442: // ncr_protocol_value
+      case 450: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 147: // "boolean"
+      case 150: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 146: // "floating point"
+      case 149: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 145: // "integer"
+      case 148: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 144: // "constant string"
+      case 147: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -664,278 +674,278 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 228 "dhcp6_parser.yy" // lalr1.cc:859
+#line 232 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 670 "dhcp6_parser.cc" // lalr1.cc:859
+#line 680 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 229 "dhcp6_parser.yy" // lalr1.cc:859
+#line 233 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
-#line 676 "dhcp6_parser.cc" // lalr1.cc:859
+#line 686 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 230 "dhcp6_parser.yy" // lalr1.cc:859
+#line 234 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
-#line 682 "dhcp6_parser.cc" // lalr1.cc:859
+#line 692 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 231 "dhcp6_parser.yy" // lalr1.cc:859
+#line 235 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 688 "dhcp6_parser.cc" // lalr1.cc:859
+#line 698 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 232 "dhcp6_parser.yy" // lalr1.cc:859
+#line 236 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET6; }
-#line 694 "dhcp6_parser.cc" // lalr1.cc:859
+#line 704 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 233 "dhcp6_parser.yy" // lalr1.cc:859
+#line 237 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
-#line 700 "dhcp6_parser.cc" // lalr1.cc:859
+#line 710 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 234 "dhcp6_parser.yy" // lalr1.cc:859
+#line 238 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.PD_POOLS; }
-#line 706 "dhcp6_parser.cc" // lalr1.cc:859
+#line 716 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 235 "dhcp6_parser.yy" // lalr1.cc:859
+#line 239 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
-#line 712 "dhcp6_parser.cc" // lalr1.cc:859
+#line 722 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 236 "dhcp6_parser.yy" // lalr1.cc:859
+#line 240 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
-#line 718 "dhcp6_parser.cc" // lalr1.cc:859
+#line 728 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 237 "dhcp6_parser.yy" // lalr1.cc:859
+#line 241 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
-#line 724 "dhcp6_parser.cc" // lalr1.cc:859
+#line 734 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 238 "dhcp6_parser.yy" // lalr1.cc:859
+#line 242 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 730 "dhcp6_parser.cc" // lalr1.cc:859
+#line 740 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 239 "dhcp6_parser.yy" // lalr1.cc:859
+#line 243 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
-#line 736 "dhcp6_parser.cc" // lalr1.cc:859
+#line 746 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 247 "dhcp6_parser.yy" // lalr1.cc:859
+#line 251 "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
+#line 752 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 248 "dhcp6_parser.yy" // lalr1.cc:859
+#line 252 "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
+#line 758 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 249 "dhcp6_parser.yy" // lalr1.cc:859
+#line 253 "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
+#line 764 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 250 "dhcp6_parser.yy" // lalr1.cc:859
+#line 254 "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
+#line 770 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 251 "dhcp6_parser.yy" // lalr1.cc:859
+#line 255 "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
+#line 776 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 252 "dhcp6_parser.yy" // lalr1.cc:859
+#line 256 "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
+#line 782 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 32:
-#line 253 "dhcp6_parser.yy" // lalr1.cc:859
+#line 257 "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
+#line 788 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 33:
-#line 256 "dhcp6_parser.yy" // lalr1.cc:859
+#line 260 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
 }
-#line 787 "dhcp6_parser.cc" // lalr1.cc:859
+#line 797 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 34:
-#line 261 "dhcp6_parser.yy" // lalr1.cc:859
+#line 265 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 798 "dhcp6_parser.cc" // lalr1.cc:859
+#line 808 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 35:
-#line 266 "dhcp6_parser.yy" // lalr1.cc:859
+#line 270 "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
     // for it.
 }
-#line 808 "dhcp6_parser.cc" // lalr1.cc:859
+#line 818 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 36:
-#line 272 "dhcp6_parser.yy" // lalr1.cc:859
+#line 276 "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
+#line 824 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 39:
-#line 279 "dhcp6_parser.yy" // lalr1.cc:859
+#line 283 "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 > ());
                   }
-#line 823 "dhcp6_parser.cc" // lalr1.cc:859
+#line 833 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 40:
-#line 283 "dhcp6_parser.yy" // lalr1.cc:859
+#line 287 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 833 "dhcp6_parser.cc" // lalr1.cc:859
+#line 843 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 41:
-#line 290 "dhcp6_parser.yy" // lalr1.cc:859
+#line 294 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
 }
-#line 842 "dhcp6_parser.cc" // lalr1.cc:859
+#line 852 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 42:
-#line 293 "dhcp6_parser.yy" // lalr1.cc:859
+#line 297 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
-#line 850 "dhcp6_parser.cc" // lalr1.cc:859
+#line 860 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 45:
-#line 301 "dhcp6_parser.yy" // lalr1.cc:859
+#line 305 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 859 "dhcp6_parser.cc" // lalr1.cc:859
+#line 869 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 46:
-#line 305 "dhcp6_parser.yy" // lalr1.cc:859
+#line 309 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 868 "dhcp6_parser.cc" // lalr1.cc:859
+#line 878 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 47:
-#line 312 "dhcp6_parser.yy" // lalr1.cc:859
+#line 316 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
-#line 876 "dhcp6_parser.cc" // lalr1.cc:859
+#line 886 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 48:
-#line 314 "dhcp6_parser.yy" // lalr1.cc:859
+#line 318 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
 }
-#line 885 "dhcp6_parser.cc" // lalr1.cc:859
+#line 895 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 51:
-#line 323 "dhcp6_parser.yy" // lalr1.cc:859
+#line 327 "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);
                           }
-#line 894 "dhcp6_parser.cc" // lalr1.cc:859
+#line 904 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 52:
-#line 327 "dhcp6_parser.yy" // lalr1.cc:859
+#line 331 "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);
                           }
-#line 903 "dhcp6_parser.cc" // lalr1.cc:859
+#line 913 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 53:
-#line 338 "dhcp6_parser.yy" // lalr1.cc:859
+#line 342 "dhcp6_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
     error(yystack_[1].location,
           "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
 }
-#line 914 "dhcp6_parser.cc" // lalr1.cc:859
+#line 924 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 54:
-#line 348 "dhcp6_parser.yy" // lalr1.cc:859
+#line 352 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 925 "dhcp6_parser.cc" // lalr1.cc:859
+#line 935 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 55:
-#line 353 "dhcp6_parser.yy" // lalr1.cc:859
+#line 357 "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
     // for it.
 }
-#line 935 "dhcp6_parser.cc" // lalr1.cc:859
+#line 945 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 63:
-#line 372 "dhcp6_parser.yy" // lalr1.cc:859
+#line 376 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -944,11 +954,11 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP6);
 }
-#line 948 "dhcp6_parser.cc" // lalr1.cc:859
+#line 958 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 64:
-#line 379 "dhcp6_parser.yy" // lalr1.cc:859
+#line 383 "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
@@ -956,666 +966,666 @@ namespace isc { namespace dhcp {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 960 "dhcp6_parser.cc" // lalr1.cc:859
+#line 970 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 65:
-#line 389 "dhcp6_parser.yy" // lalr1.cc:859
+#line 393 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 970 "dhcp6_parser.cc" // lalr1.cc:859
+#line 980 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 66:
-#line 393 "dhcp6_parser.yy" // lalr1.cc:859
+#line 397 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 978 "dhcp6_parser.cc" // lalr1.cc:859
+#line 988 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 91:
-#line 427 "dhcp6_parser.yy" // lalr1.cc:859
+#line 431 "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);
 }
-#line 987 "dhcp6_parser.cc" // lalr1.cc:859
+#line 997 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 92:
-#line 432 "dhcp6_parser.yy" // lalr1.cc:859
+#line 436 "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);
 }
-#line 996 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1006 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 93:
-#line 437 "dhcp6_parser.yy" // lalr1.cc:859
+#line 441 "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);
 }
-#line 1005 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1015 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 94:
-#line 442 "dhcp6_parser.yy" // lalr1.cc:859
+#line 446 "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);
 }
-#line 1014 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1024 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 95:
-#line 447 "dhcp6_parser.yy" // lalr1.cc:859
+#line 451 "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);
 }
-#line 1023 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1033 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 96:
-#line 452 "dhcp6_parser.yy" // lalr1.cc:859
+#line 456 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.INTERFACES_CONFIG);
 }
-#line 1034 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1044 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 97:
-#line 457 "dhcp6_parser.yy" // lalr1.cc:859
+#line 461 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1043 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1053 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 98:
-#line 462 "dhcp6_parser.yy" // lalr1.cc:859
+#line 466 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1053 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1063 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 99:
-#line 466 "dhcp6_parser.yy" // lalr1.cc:859
+#line 470 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1061 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1071 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 104:
-#line 478 "dhcp6_parser.yy" // lalr1.cc:859
+#line 482 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1072 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1082 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 105:
-#line 483 "dhcp6_parser.yy" // lalr1.cc:859
+#line 487 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1081 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1091 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 106:
-#line 488 "dhcp6_parser.yy" // lalr1.cc:859
+#line 492 "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
+#line 1100 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 107:
-#line 494 "dhcp6_parser.yy" // lalr1.cc:859
+#line 498 "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 1101 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1111 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 108:
-#line 499 "dhcp6_parser.yy" // lalr1.cc:859
+#line 503 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1110 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1120 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 109:
-#line 504 "dhcp6_parser.yy" // lalr1.cc:859
+#line 508 "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 1121 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1131 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 110:
-#line 509 "dhcp6_parser.yy" // lalr1.cc:859
+#line 513 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1130 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1140 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 126:
-#line 533 "dhcp6_parser.yy" // lalr1.cc:859
+#line 537 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1138 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1148 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 127:
-#line 535 "dhcp6_parser.yy" // lalr1.cc:859
+#line 539 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1147 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1157 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 128:
-#line 540 "dhcp6_parser.yy" // lalr1.cc:859
+#line 544 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1153 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1163 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 129:
-#line 541 "dhcp6_parser.yy" // lalr1.cc:859
+#line 545 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1159 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1169 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 130:
-#line 542 "dhcp6_parser.yy" // lalr1.cc:859
+#line 546 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1165 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1175 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 131:
-#line 543 "dhcp6_parser.yy" // lalr1.cc:859
+#line 547 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1171 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1181 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 132:
-#line 546 "dhcp6_parser.yy" // lalr1.cc:859
+#line 550 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1179 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1189 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 133:
-#line 548 "dhcp6_parser.yy" // lalr1.cc:859
+#line 552 "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 1189 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1199 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 134:
-#line 554 "dhcp6_parser.yy" // lalr1.cc:859
+#line 558 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1197 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1207 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 135:
-#line 556 "dhcp6_parser.yy" // lalr1.cc:859
+#line 560 "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 1207 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1217 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 136:
-#line 562 "dhcp6_parser.yy" // lalr1.cc:859
+#line 566 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1215 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1225 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 137:
-#line 564 "dhcp6_parser.yy" // lalr1.cc:859
+#line 568 "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 1225 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1235 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 138:
-#line 570 "dhcp6_parser.yy" // lalr1.cc:859
+#line 574 "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 1234 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1244 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 139:
-#line 575 "dhcp6_parser.yy" // lalr1.cc:859
+#line 579 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1242 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1252 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 140:
-#line 577 "dhcp6_parser.yy" // lalr1.cc:859
+#line 581 "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 1252 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1262 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 141:
-#line 583 "dhcp6_parser.yy" // lalr1.cc:859
+#line 587 "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 1261 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1271 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 142:
-#line 588 "dhcp6_parser.yy" // lalr1.cc:859
+#line 592 "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 1270 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1280 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 143:
-#line 593 "dhcp6_parser.yy" // lalr1.cc:859
+#line 597 "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 1279 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1289 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 144:
-#line 598 "dhcp6_parser.yy" // lalr1.cc:859
+#line 602 "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 1288 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1298 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 145:
-#line 603 "dhcp6_parser.yy" // lalr1.cc:859
+#line 607 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1296 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1306 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 146:
-#line 605 "dhcp6_parser.yy" // lalr1.cc:859
+#line 609 "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 1306 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1316 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 147:
-#line 611 "dhcp6_parser.yy" // lalr1.cc:859
+#line 615 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1314 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1324 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 148:
-#line 613 "dhcp6_parser.yy" // lalr1.cc:859
+#line 617 "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 1324 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1334 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 149:
-#line 620 "dhcp6_parser.yy" // lalr1.cc:859
+#line 624 "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 1335 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1345 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 150:
-#line 625 "dhcp6_parser.yy" // lalr1.cc:859
+#line 629 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1344 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1354 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 155:
-#line 638 "dhcp6_parser.yy" // lalr1.cc:859
+#line 642 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1353 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1363 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 156:
-#line 643 "dhcp6_parser.yy" // lalr1.cc:859
+#line 647 "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 1362 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1372 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 157:
-#line 648 "dhcp6_parser.yy" // lalr1.cc:859
+#line 652 "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 1373 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1383 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 158:
-#line 653 "dhcp6_parser.yy" // lalr1.cc:859
+#line 657 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1382 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1392 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 164:
-#line 667 "dhcp6_parser.yy" // lalr1.cc:859
+#line 671 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1391 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1401 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 165:
-#line 672 "dhcp6_parser.yy" // lalr1.cc:859
+#line 676 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1400 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1410 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 166:
-#line 679 "dhcp6_parser.yy" // lalr1.cc:859
+#line 683 "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 1411 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1421 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 167:
-#line 684 "dhcp6_parser.yy" // lalr1.cc:859
+#line 688 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1420 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1430 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 168:
-#line 689 "dhcp6_parser.yy" // lalr1.cc:859
+#line 693 "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 1431 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1441 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 169:
-#line 694 "dhcp6_parser.yy" // lalr1.cc:859
+#line 698 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1440 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1450 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 174:
-#line 707 "dhcp6_parser.yy" // lalr1.cc:859
+#line 711 "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 1450 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1460 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 175:
-#line 711 "dhcp6_parser.yy" // lalr1.cc:859
+#line 715 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1458 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1468 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 176:
-#line 715 "dhcp6_parser.yy" // lalr1.cc:859
+#line 719 "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 1468 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1478 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 177:
-#line 719 "dhcp6_parser.yy" // lalr1.cc:859
+#line 723 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1476 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1486 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 183:
-#line 732 "dhcp6_parser.yy" // lalr1.cc:859
+#line 736 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1484 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1494 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 184:
-#line 734 "dhcp6_parser.yy" // lalr1.cc:859
+#line 738 "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 1494 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1504 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 185:
-#line 740 "dhcp6_parser.yy" // lalr1.cc:859
+#line 744 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1502 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1512 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 186:
-#line 742 "dhcp6_parser.yy" // lalr1.cc:859
+#line 746 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1511 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1521 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 187:
-#line 748 "dhcp6_parser.yy" // lalr1.cc:859
+#line 752 "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 1522 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1532 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 188:
-#line 753 "dhcp6_parser.yy" // lalr1.cc:859
+#line 757 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1531 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1541 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 197:
-#line 770 "dhcp6_parser.yy" // lalr1.cc:859
+#line 774 "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 1540 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1550 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 198:
-#line 775 "dhcp6_parser.yy" // lalr1.cc:859
+#line 779 "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 1549 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1559 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 199:
-#line 780 "dhcp6_parser.yy" // lalr1.cc:859
+#line 784 "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 1558 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1568 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 200:
-#line 785 "dhcp6_parser.yy" // lalr1.cc:859
+#line 789 "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 1567 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1577 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 201:
-#line 790 "dhcp6_parser.yy" // lalr1.cc:859
+#line 794 "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 1576 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1586 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 202:
-#line 795 "dhcp6_parser.yy" // lalr1.cc:859
+#line 799 "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 1585 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1595 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 203:
-#line 803 "dhcp6_parser.yy" // lalr1.cc:859
+#line 807 "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 1596 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1606 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 204:
-#line 808 "dhcp6_parser.yy" // lalr1.cc:859
+#line 812 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1605 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1615 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 209:
-#line 828 "dhcp6_parser.yy" // lalr1.cc:859
+#line 832 "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 1615 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1625 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 210:
-#line 832 "dhcp6_parser.yy" // lalr1.cc:859
+#line 836 "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.
@@ -1634,1503 +1644,1520 @@ namespace isc { namespace dhcp {
     // }
     ctx.stack_.pop_back();
 }
-#line 1638 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1648 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 211:
-#line 851 "dhcp6_parser.yy" // lalr1.cc:859
+#line 855 "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 1648 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1658 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 212:
-#line 855 "dhcp6_parser.yy" // lalr1.cc:859
+#line 859 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1656 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1666 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 232:
-#line 884 "dhcp6_parser.yy" // lalr1.cc:859
+#line 888 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1664 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1674 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 233:
-#line 886 "dhcp6_parser.yy" // lalr1.cc:859
+#line 890 "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 1674 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1684 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 234:
-#line 892 "dhcp6_parser.yy" // lalr1.cc:859
+#line 896 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1682 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1692 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 235:
-#line 894 "dhcp6_parser.yy" // lalr1.cc:859
+#line 898 "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 1692 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1702 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 236:
-#line 900 "dhcp6_parser.yy" // lalr1.cc:859
+#line 904 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1700 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1710 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 237:
-#line 902 "dhcp6_parser.yy" // lalr1.cc:859
+#line 906 "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 1710 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1720 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 238:
-#line 908 "dhcp6_parser.yy" // lalr1.cc:859
+#line 912 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
-#line 1718 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1728 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 239:
-#line 910 "dhcp6_parser.yy" // lalr1.cc:859
+#line 914 "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 1728 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1738 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 240:
-#line 916 "dhcp6_parser.yy" // lalr1.cc:859
+#line 920 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ctx.enter(ctx.NO_KEYWORD);
+    ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 1736 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1746 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 241:
-#line 918 "dhcp6_parser.yy" // lalr1.cc:859
+#line 922 "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.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1746 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1755 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 242:
-#line 924 "dhcp6_parser.yy" // lalr1.cc:859
+#line 927 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
+#line 1761 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 243:
+#line 928 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
+#line 1767 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 244:
+#line 929 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
+#line 1773 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 245:
+#line 932 "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 1755 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1782 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 243:
-#line 929 "dhcp6_parser.yy" // lalr1.cc:859
+  case 246:
+#line 937 "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 1764 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1791 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 244:
-#line 938 "dhcp6_parser.yy" // lalr1.cc:859
+  case 247:
+#line 946 "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 1775 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1802 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 245:
-#line 943 "dhcp6_parser.yy" // lalr1.cc:859
+  case 248:
+#line 951 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1784 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1811 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 250:
-#line 960 "dhcp6_parser.yy" // lalr1.cc:859
+  case 253:
+#line 968 "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 1794 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1821 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 251:
-#line 964 "dhcp6_parser.yy" // lalr1.cc:859
+  case 254:
+#line 972 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1802 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1829 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 252:
-#line 971 "dhcp6_parser.yy" // lalr1.cc:859
+  case 255:
+#line 979 "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 1812 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1839 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 253:
-#line 975 "dhcp6_parser.yy" // lalr1.cc:859
+  case 256:
+#line 983 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1820 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1847 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 267:
-#line 1001 "dhcp6_parser.yy" // lalr1.cc:859
+  case 270:
+#line 1009 "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 1829 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1856 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 269:
-#line 1008 "dhcp6_parser.yy" // lalr1.cc:859
+  case 272:
+#line 1016 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1837 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1864 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 270:
-#line 1010 "dhcp6_parser.yy" // lalr1.cc:859
+  case 273:
+#line 1018 "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 1847 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1874 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 271:
-#line 1016 "dhcp6_parser.yy" // lalr1.cc:859
+  case 274:
+#line 1024 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1855 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1882 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 272:
-#line 1018 "dhcp6_parser.yy" // lalr1.cc:859
+  case 275:
+#line 1026 "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 1865 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1892 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 273:
-#line 1024 "dhcp6_parser.yy" // lalr1.cc:859
+  case 276:
+#line 1032 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1873 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1900 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 274:
-#line 1026 "dhcp6_parser.yy" // lalr1.cc:859
+  case 277:
+#line 1034 "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 1883 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1910 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 276:
-#line 1034 "dhcp6_parser.yy" // lalr1.cc:859
+  case 279:
+#line 1042 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1891 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1918 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 277:
-#line 1036 "dhcp6_parser.yy" // lalr1.cc:859
+  case 280:
+#line 1044 "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 1901 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1928 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 278:
-#line 1042 "dhcp6_parser.yy" // lalr1.cc:859
+  case 281:
+#line 1050 "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 1910 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1937 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 279:
-#line 1051 "dhcp6_parser.yy" // lalr1.cc:859
+  case 282:
+#line 1059 "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 1921 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1948 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 280:
-#line 1056 "dhcp6_parser.yy" // lalr1.cc:859
+  case 283:
+#line 1064 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1930 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1957 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 285:
-#line 1075 "dhcp6_parser.yy" // lalr1.cc:859
+  case 288:
+#line 1083 "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 1940 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1967 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 286:
-#line 1079 "dhcp6_parser.yy" // lalr1.cc:859
+  case 289:
+#line 1087 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1948 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1975 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 287:
-#line 1086 "dhcp6_parser.yy" // lalr1.cc:859
+  case 290:
+#line 1094 "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 1958 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1985 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 288:
-#line 1090 "dhcp6_parser.yy" // lalr1.cc:859
+  case 291:
+#line 1098 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1966 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1993 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 300:
-#line 1119 "dhcp6_parser.yy" // lalr1.cc:859
+  case 303:
+#line 1127 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1974 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2001 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 301:
-#line 1121 "dhcp6_parser.yy" // lalr1.cc:859
+  case 304:
+#line 1129 "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 1984 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2011 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 304:
-#line 1131 "dhcp6_parser.yy" // lalr1.cc:859
+  case 307:
+#line 1139 "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 1993 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2020 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 305:
-#line 1139 "dhcp6_parser.yy" // lalr1.cc:859
+  case 308:
+#line 1147 "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 2004 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2031 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 306:
-#line 1144 "dhcp6_parser.yy" // lalr1.cc:859
+  case 309:
+#line 1152 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2013 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2040 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 311:
-#line 1159 "dhcp6_parser.yy" // lalr1.cc:859
+  case 314:
+#line 1167 "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 2023 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2050 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 312:
-#line 1163 "dhcp6_parser.yy" // lalr1.cc:859
+  case 315:
+#line 1171 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2031 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2058 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 313:
-#line 1167 "dhcp6_parser.yy" // lalr1.cc:859
+  case 316:
+#line 1175 "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 2041 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2068 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 314:
-#line 1171 "dhcp6_parser.yy" // lalr1.cc:859
+  case 317:
+#line 1179 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2049 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2076 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 321:
-#line 1185 "dhcp6_parser.yy" // lalr1.cc:859
+  case 324:
+#line 1193 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2057 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2084 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 322:
-#line 1187 "dhcp6_parser.yy" // lalr1.cc:859
+  case 325:
+#line 1195 "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 2067 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2094 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 323:
-#line 1193 "dhcp6_parser.yy" // lalr1.cc:859
+  case 326:
+#line 1201 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2075 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2102 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 324:
-#line 1195 "dhcp6_parser.yy" // lalr1.cc:859
+  case 327:
+#line 1203 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("user-context", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2084 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2111 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 325:
-#line 1203 "dhcp6_parser.yy" // lalr1.cc:859
+  case 328:
+#line 1211 "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 2095 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2122 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 326:
-#line 1208 "dhcp6_parser.yy" // lalr1.cc:859
+  case 329:
+#line 1216 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2104 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2131 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 331:
-#line 1223 "dhcp6_parser.yy" // lalr1.cc:859
+  case 334:
+#line 1231 "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 2114 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2141 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 332:
-#line 1227 "dhcp6_parser.yy" // lalr1.cc:859
+  case 335:
+#line 1235 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2122 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2149 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 333:
-#line 1231 "dhcp6_parser.yy" // lalr1.cc:859
+  case 336:
+#line 1239 "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 2132 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2159 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 334:
-#line 1235 "dhcp6_parser.yy" // lalr1.cc:859
+  case 337:
+#line 1243 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2140 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2167 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 345:
-#line 1253 "dhcp6_parser.yy" // lalr1.cc:859
+  case 348:
+#line 1261 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2148 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2175 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 346:
-#line 1255 "dhcp6_parser.yy" // lalr1.cc:859
+  case 349:
+#line 1263 "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 2158 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2185 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 347:
-#line 1261 "dhcp6_parser.yy" // lalr1.cc:859
+  case 350:
+#line 1269 "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 2167 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2194 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 348:
-#line 1266 "dhcp6_parser.yy" // lalr1.cc:859
+  case 351:
+#line 1274 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2175 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2202 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 349:
-#line 1268 "dhcp6_parser.yy" // lalr1.cc:859
+  case 352:
+#line 1276 "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 2185 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2212 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 350:
-#line 1274 "dhcp6_parser.yy" // lalr1.cc:859
+  case 353:
+#line 1282 "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 2194 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2221 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 351:
-#line 1279 "dhcp6_parser.yy" // lalr1.cc:859
+  case 354:
+#line 1287 "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 2203 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2230 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 352:
-#line 1287 "dhcp6_parser.yy" // lalr1.cc:859
+  case 355:
+#line 1295 "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 2214 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2241 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 353:
-#line 1292 "dhcp6_parser.yy" // lalr1.cc:859
+  case 356:
+#line 1300 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2223 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2250 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 358:
-#line 1305 "dhcp6_parser.yy" // lalr1.cc:859
+  case 361:
+#line 1313 "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 2233 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2260 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 359:
-#line 1309 "dhcp6_parser.yy" // lalr1.cc:859
+  case 362:
+#line 1317 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2241 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2268 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 360:
-#line 1313 "dhcp6_parser.yy" // lalr1.cc:859
+  case 363:
+#line 1321 "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 2251 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2278 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 361:
-#line 1317 "dhcp6_parser.yy" // lalr1.cc:859
+  case 364:
+#line 1325 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2259 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2286 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 375:
-#line 1341 "dhcp6_parser.yy" // lalr1.cc:859
+  case 378:
+#line 1349 "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 2270 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2297 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 376:
-#line 1346 "dhcp6_parser.yy" // lalr1.cc:859
+  case 379:
+#line 1354 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2279 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2306 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 377:
-#line 1351 "dhcp6_parser.yy" // lalr1.cc:859
+  case 380:
+#line 1359 "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 2290 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2317 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1356 "dhcp6_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1364 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2299 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2326 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 379:
-#line 1361 "dhcp6_parser.yy" // lalr1.cc:859
+  case 382:
+#line 1369 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2307 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2334 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 380:
-#line 1363 "dhcp6_parser.yy" // lalr1.cc:859
+  case 383:
+#line 1371 "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 2317 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2344 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 381:
-#line 1369 "dhcp6_parser.yy" // lalr1.cc:859
+  case 384:
+#line 1377 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2325 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2352 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 382:
-#line 1371 "dhcp6_parser.yy" // lalr1.cc:859
+  case 385:
+#line 1379 "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 2335 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2362 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 383:
-#line 1377 "dhcp6_parser.yy" // lalr1.cc:859
+  case 386:
+#line 1385 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2343 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2370 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 384:
-#line 1379 "dhcp6_parser.yy" // lalr1.cc:859
+  case 387:
+#line 1387 "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 2353 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2380 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 385:
-#line 1385 "dhcp6_parser.yy" // lalr1.cc:859
+  case 388:
+#line 1393 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2361 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2388 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 386:
-#line 1387 "dhcp6_parser.yy" // lalr1.cc:859
+  case 389:
+#line 1395 "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("flex-id", hw);
     ctx.leave();
 }
-#line 2371 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2398 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 387:
-#line 1393 "dhcp6_parser.yy" // lalr1.cc:859
+  case 390:
+#line 1401 "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 2382 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2409 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1398 "dhcp6_parser.yy" // lalr1.cc:859
+  case 391:
+#line 1406 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2391 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2418 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 389:
-#line 1406 "dhcp6_parser.yy" // lalr1.cc:859
+  case 392:
+#line 1414 "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 2402 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2429 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 390:
-#line 1411 "dhcp6_parser.yy" // lalr1.cc:859
+  case 393:
+#line 1419 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2411 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2438 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 391:
-#line 1416 "dhcp6_parser.yy" // lalr1.cc:859
+  case 394:
+#line 1424 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2419 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2446 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 392:
-#line 1418 "dhcp6_parser.yy" // lalr1.cc:859
+  case 395:
+#line 1426 "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 2429 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2456 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 393:
-#line 1427 "dhcp6_parser.yy" // lalr1.cc:859
+  case 396:
+#line 1435 "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 2440 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2467 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 394:
-#line 1432 "dhcp6_parser.yy" // lalr1.cc:859
+  case 397:
+#line 1440 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2449 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2476 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 397:
-#line 1441 "dhcp6_parser.yy" // lalr1.cc:859
+  case 400:
+#line 1449 "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 2459 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2486 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 398:
-#line 1445 "dhcp6_parser.yy" // lalr1.cc:859
+  case 401:
+#line 1453 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2467 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2494 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 408:
-#line 1465 "dhcp6_parser.yy" // lalr1.cc:859
+  case 411:
+#line 1473 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2475 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2502 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 409:
-#line 1467 "dhcp6_parser.yy" // lalr1.cc:859
+  case 412:
+#line 1475 "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 2485 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2512 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 410:
-#line 1476 "dhcp6_parser.yy" // lalr1.cc:859
+  case 413:
+#line 1484 "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 2496 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2523 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 411:
-#line 1481 "dhcp6_parser.yy" // lalr1.cc:859
+  case 414:
+#line 1489 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2505 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2532 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 421:
-#line 1499 "dhcp6_parser.yy" // lalr1.cc:859
+  case 424:
+#line 1507 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 2513 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2540 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 422:
-#line 1501 "dhcp6_parser.yy" // lalr1.cc:859
+  case 425:
+#line 1509 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2522 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2549 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 423:
-#line 1506 "dhcp6_parser.yy" // lalr1.cc:859
+  case 426:
+#line 1514 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 2528 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2555 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 424:
-#line 1507 "dhcp6_parser.yy" // lalr1.cc:859
+  case 427:
+#line 1515 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 2534 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2561 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 425:
-#line 1508 "dhcp6_parser.yy" // lalr1.cc:859
+  case 428:
+#line 1516 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 2540 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2567 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 426:
-#line 1511 "dhcp6_parser.yy" // lalr1.cc:859
+  case 429:
+#line 1519 "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 2549 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2576 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 427:
-#line 1516 "dhcp6_parser.yy" // lalr1.cc:859
+  case 430:
+#line 1524 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2557 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2584 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 428:
-#line 1518 "dhcp6_parser.yy" // lalr1.cc:859
+  case 431:
+#line 1526 "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 2567 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2594 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 429:
-#line 1524 "dhcp6_parser.yy" // lalr1.cc:859
+  case 432:
+#line 1532 "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 2576 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2603 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 430:
-#line 1529 "dhcp6_parser.yy" // lalr1.cc:859
+  case 433:
+#line 1537 "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 2585 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2612 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 431:
-#line 1536 "dhcp6_parser.yy" // lalr1.cc:859
+  case 434:
+#line 1544 "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 2594 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2621 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 432:
-#line 1543 "dhcp6_parser.yy" // lalr1.cc:859
+  case 435:
+#line 1551 "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 2605 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2632 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 433:
-#line 1548 "dhcp6_parser.yy" // lalr1.cc:859
+  case 436:
+#line 1556 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2614 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2641 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 438:
-#line 1561 "dhcp6_parser.yy" // lalr1.cc:859
+  case 441:
+#line 1569 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2622 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2649 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 439:
-#line 1563 "dhcp6_parser.yy" // lalr1.cc:859
+  case 442:
+#line 1571 "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 2632 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2659 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 440:
-#line 1569 "dhcp6_parser.yy" // lalr1.cc:859
+  case 443:
+#line 1577 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2640 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2667 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 441:
-#line 1571 "dhcp6_parser.yy" // lalr1.cc:859
+  case 444:
+#line 1579 "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 2650 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2677 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 442:
-#line 1579 "dhcp6_parser.yy" // lalr1.cc:859
+  case 445:
+#line 1587 "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 2661 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2688 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 443:
-#line 1584 "dhcp6_parser.yy" // lalr1.cc:859
+  case 446:
+#line 1592 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2670 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2697 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 444:
-#line 1589 "dhcp6_parser.yy" // lalr1.cc:859
+  case 447:
+#line 1597 "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 2680 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2707 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 445:
-#line 1593 "dhcp6_parser.yy" // lalr1.cc:859
+  case 448:
+#line 1601 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2688 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2715 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 463:
-#line 1618 "dhcp6_parser.yy" // lalr1.cc:859
+  case 466:
+#line 1626 "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 2697 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2724 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 464:
-#line 1623 "dhcp6_parser.yy" // lalr1.cc:859
+  case 467:
+#line 1631 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2705 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2732 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 465:
-#line 1625 "dhcp6_parser.yy" // lalr1.cc:859
+  case 468:
+#line 1633 "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 2715 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2742 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 466:
-#line 1631 "dhcp6_parser.yy" // lalr1.cc:859
+  case 469:
+#line 1639 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2723 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2750 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 467:
-#line 1633 "dhcp6_parser.yy" // lalr1.cc:859
+  case 470:
+#line 1641 "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 2733 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2760 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 468:
-#line 1639 "dhcp6_parser.yy" // lalr1.cc:859
+  case 471:
+#line 1647 "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 2742 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2769 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 469:
-#line 1644 "dhcp6_parser.yy" // lalr1.cc:859
+  case 472:
+#line 1652 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2750 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2777 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 470:
-#line 1646 "dhcp6_parser.yy" // lalr1.cc:859
+  case 473:
+#line 1654 "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 2760 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2787 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 471:
-#line 1652 "dhcp6_parser.yy" // lalr1.cc:859
+  case 474:
+#line 1660 "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 2769 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2796 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 472:
-#line 1657 "dhcp6_parser.yy" // lalr1.cc:859
+  case 475:
+#line 1665 "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 2778 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2805 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 473:
-#line 1662 "dhcp6_parser.yy" // lalr1.cc:859
+  case 476:
+#line 1670 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 2786 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2813 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 474:
-#line 1664 "dhcp6_parser.yy" // lalr1.cc:859
+  case 477:
+#line 1672 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2795 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2822 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 475:
-#line 1670 "dhcp6_parser.yy" // lalr1.cc:859
+  case 478:
+#line 1678 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 2801 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2828 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 476:
-#line 1671 "dhcp6_parser.yy" // lalr1.cc:859
+  case 479:
+#line 1679 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 2807 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2834 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 477:
-#line 1674 "dhcp6_parser.yy" // lalr1.cc:859
+  case 480:
+#line 1682 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 2815 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2842 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 478:
-#line 1676 "dhcp6_parser.yy" // lalr1.cc:859
+  case 481:
+#line 1684 "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 2825 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2852 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 479:
-#line 1682 "dhcp6_parser.yy" // lalr1.cc:859
+  case 482:
+#line 1690 "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 2834 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2861 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 480:
-#line 1687 "dhcp6_parser.yy" // lalr1.cc:859
+  case 483:
+#line 1695 "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 2843 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2870 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 481:
-#line 1692 "dhcp6_parser.yy" // lalr1.cc:859
+  case 484:
+#line 1700 "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 2852 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2879 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 482:
-#line 1697 "dhcp6_parser.yy" // lalr1.cc:859
+  case 485:
+#line 1705 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 2860 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2887 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 483:
-#line 1699 "dhcp6_parser.yy" // lalr1.cc:859
+  case 486:
+#line 1707 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2869 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2896 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 484:
-#line 1705 "dhcp6_parser.yy" // lalr1.cc:859
+  case 487:
+#line 1713 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
       }
-#line 2877 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2904 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 485:
-#line 1708 "dhcp6_parser.yy" // lalr1.cc:859
+  case 488:
+#line 1716 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2885 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2912 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 486:
-#line 1711 "dhcp6_parser.yy" // lalr1.cc:859
+  case 489:
+#line 1719 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2893 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2920 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 487:
-#line 1714 "dhcp6_parser.yy" // lalr1.cc:859
+  case 490:
+#line 1722 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2901 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2928 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 488:
-#line 1717 "dhcp6_parser.yy" // lalr1.cc:859
+  case 491:
+#line 1725 "dhcp6_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 2910 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2937 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 489:
-#line 1723 "dhcp6_parser.yy" // lalr1.cc:859
+  case 492:
+#line 1731 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2918 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2945 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 490:
-#line 1725 "dhcp6_parser.yy" // lalr1.cc:859
+  case 493:
+#line 1733 "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 2928 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2955 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 491:
-#line 1733 "dhcp6_parser.yy" // lalr1.cc:859
+  case 494:
+#line 1741 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2936 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2963 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 492:
-#line 1735 "dhcp6_parser.yy" // lalr1.cc:859
+  case 495:
+#line 1743 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2945 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2972 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 493:
-#line 1740 "dhcp6_parser.yy" // lalr1.cc:859
+  case 496:
+#line 1748 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2953 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2980 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 494:
-#line 1742 "dhcp6_parser.yy" // lalr1.cc:859
+  case 497:
+#line 1750 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2962 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2989 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 495:
-#line 1752 "dhcp6_parser.yy" // lalr1.cc:859
+  case 498:
+#line 1760 "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 2973 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3000 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 496:
-#line 1757 "dhcp6_parser.yy" // lalr1.cc:859
+  case 499:
+#line 1765 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2982 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3009 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 500:
-#line 1774 "dhcp6_parser.yy" // lalr1.cc:859
+  case 503:
+#line 1782 "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 2993 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3020 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 501:
-#line 1779 "dhcp6_parser.yy" // lalr1.cc:859
+  case 504:
+#line 1787 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3002 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3029 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 504:
-#line 1791 "dhcp6_parser.yy" // lalr1.cc:859
+  case 507:
+#line 1799 "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 3012 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3039 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 505:
-#line 1795 "dhcp6_parser.yy" // lalr1.cc:859
+  case 508:
+#line 1803 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3020 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3047 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 513:
-#line 1810 "dhcp6_parser.yy" // lalr1.cc:859
+  case 516:
+#line 1818 "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 3029 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3056 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 514:
-#line 1815 "dhcp6_parser.yy" // lalr1.cc:859
+  case 517:
+#line 1823 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3037 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3064 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 515:
-#line 1817 "dhcp6_parser.yy" // lalr1.cc:859
+  case 518:
+#line 1825 "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 3047 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3074 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 516:
-#line 1823 "dhcp6_parser.yy" // lalr1.cc:859
+  case 519:
+#line 1831 "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 3058 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3085 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 517:
-#line 1828 "dhcp6_parser.yy" // lalr1.cc:859
+  case 520:
+#line 1836 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3067 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3094 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 520:
-#line 1837 "dhcp6_parser.yy" // lalr1.cc:859
+  case 523:
+#line 1845 "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 3077 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3104 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 521:
-#line 1841 "dhcp6_parser.yy" // lalr1.cc:859
+  case 524:
+#line 1849 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3085 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3112 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 528:
-#line 1855 "dhcp6_parser.yy" // lalr1.cc:859
+  case 531:
+#line 1863 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3093 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3120 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 529:
-#line 1857 "dhcp6_parser.yy" // lalr1.cc:859
+  case 532:
+#line 1865 "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 3103 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3130 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 530:
-#line 1863 "dhcp6_parser.yy" // lalr1.cc:859
+  case 533:
+#line 1871 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 3112 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3139 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 531:
-#line 1868 "dhcp6_parser.yy" // lalr1.cc:859
+  case 534:
+#line 1876 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 3121 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3148 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 532:
-#line 1873 "dhcp6_parser.yy" // lalr1.cc:859
+  case 535:
+#line 1881 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 3130 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3157 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 3134 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3161 "dhcp6_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -3392,95 +3419,95 @@ namespace isc { namespace dhcp {
   const short int
   Dhcp6Parser::yypact_[] =
   {
-     185,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,    39,    20,    36,    64,    77,    95,   120,
-     154,   175,   181,   189,   190,   224,  -498,  -498,  -498,  -498,
+      56,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
+    -498,  -498,  -498,    39,    20,    41,    84,   115,   117,   123,
+     138,   196,   198,   224,   246,   257,  -498,  -498,  -498,  -498,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-      20,    94,    18,    27,   100,    19,    -1,    45,    81,    28,
-     117,   -33,    99,  -498,   250,   248,   258,   262,   272,  -498,
-    -498,  -498,  -498,   274,  -498,    98,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,   276,   278,   279,   288,   289,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   290,
-    -498,  -498,  -498,   102,  -498,  -498,  -498,  -498,  -498,  -498,
+      20,   119,    18,    27,   151,    19,    -1,    33,    85,    28,
+      59,   -36,   104,  -498,   264,   277,   282,   279,   289,  -498,
+    -498,  -498,  -498,   299,  -498,   101,  -498,  -498,  -498,  -498,
+    -498,  -498,  -498,  -498,   301,   302,   309,   316,   317,  -498,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   318,
+    -498,  -498,  -498,   169,  -498,  -498,  -498,  -498,  -498,  -498,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   293,   137,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   297,   299,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   166,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,   319,   170,  -498,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   320,   321,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   173,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   167,  -498,  -498,
-    -498,  -498,   300,  -498,   301,   302,  -498,  -498,  -498,   170,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,   176,  -498,  -498,
+    -498,  -498,   322,  -498,   323,   324,  -498,  -498,  -498,   179,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,   305,   306,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   304,  -498,  -498,
-    -498,   325,  -498,  -498,   323,   307,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   328,  -498,  -498,
-    -498,  -498,   326,   330,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,   173,  -498,  -498,  -498,   331,  -498,  -498,
-     332,  -498,   333,   334,  -498,  -498,   335,   336,   337,  -498,
-    -498,  -498,   211,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
+    -498,  -498,  -498,  -498,  -498,   285,   326,  -498,  -498,  -498,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,   327,  -498,  -498,
+    -498,   328,  -498,  -498,   325,   331,  -498,  -498,  -498,  -498,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,   332,  -498,  -498,
+    -498,  -498,   329,   335,  -498,  -498,  -498,  -498,  -498,  -498,
+    -498,  -498,  -498,   218,  -498,  -498,  -498,   336,  -498,  -498,
+     337,  -498,   338,   339,  -498,  -498,   340,   341,   342,  -498,
+    -498,  -498,   219,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,    20,
-      20,  -498,   198,   339,   340,   341,   342,  -498,    18,  -498,
-     343,   344,   345,   205,   206,   207,   208,   209,   351,   352,
-     353,   354,   355,   356,   357,   358,   359,   360,   220,   362,
-     363,    27,  -498,   364,   222,   100,  -498,    43,   366,   367,
-     368,   369,   370,   230,   231,   372,   373,   375,   376,    19,
-    -498,   377,   378,    -1,  -498,   379,   241,   380,   242,   243,
-      45,  -498,   381,   385,   386,   387,   388,   389,   390,  -498,
-      81,   391,   392,   252,   394,   395,   396,   254,  -498,    28,
-     398,   256,  -498,   117,   400,   401,   -46,  -498,   259,   403,
-     404,   266,   408,   268,   269,   411,   412,   270,   271,   273,
-     415,   417,    99,  -498,  -498,  -498,   418,   416,   419,    20,
-      20,  -498,   420,   421,   422,  -498,  -498,  -498,  -498,  -498,
-     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
-    -498,   437,   438,  -498,   441,  -498,  -498,  -498,  -498,  -498,
-    -498,   439,   445,  -498,  -498,  -498,   447,   448,   280,   281,
-     310,  -498,  -498,   311,   313,   453,   443,  -498,   315,   454,
-    -498,   318,  -498,   319,  -498,  -498,  -498,   441,   441,   441,
-     320,   321,   322,   324,  -498,   327,   329,  -498,   338,   346,
-     347,  -498,  -498,   348,  -498,  -498,   349,    20,  -498,  -498,
-     350,   361,  -498,   365,  -498,  -498,     6,   382,  -498,  -498,
-    -498,    66,   371,  -498,    20,    27,   374,  -498,  -498,   100,
-     108,   108,   460,   462,   465,   -41,    20,    70,    41,   467,
-     109,    24,   -42,    99,  -498,  -498,   471,  -498,    43,   469,
-     470,  -498,  -498,  -498,  -498,  -498,   472,   402,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
+      20,  -498,   188,   343,   344,   345,   346,  -498,    18,  -498,
+     347,   348,   349,   191,   206,   207,   209,   210,   352,   355,
+     356,   357,   358,   359,   360,   361,   362,   363,   221,   364,
+     366,    27,  -498,   367,   222,   151,  -498,    43,   369,   370,
+     371,   372,   373,   233,   228,   375,   376,   378,   379,    19,
+    -498,   380,   381,    -1,  -498,   382,   243,   383,   244,   245,
+      33,  -498,   384,   385,   386,   390,   391,   392,   393,  -498,
+      85,   394,   395,   255,   396,   397,   398,   256,  -498,    28,
+     400,   258,  -498,    59,   401,   403,   -26,  -498,   261,   408,
+     409,   266,   411,   268,   269,   414,   415,   270,   271,   273,
+     418,   420,   104,  -498,  -498,  -498,   421,   419,   422,    20,
+      20,  -498,   423,   424,   425,  -498,  -498,  -498,  -498,  -498,
+     428,   429,   430,   431,   432,   435,   436,   439,   438,   440,
+    -498,   441,   443,  -498,   447,  -498,  -498,  -498,  -498,  -498,
+    -498,   445,   451,  -498,  -498,  -498,   450,   452,   280,   281,
+     311,  -498,  -498,    92,   312,   456,   455,  -498,   330,   457,
+    -498,   333,  -498,   334,  -498,  -498,  -498,   447,   447,   447,
+     350,   351,   353,   354,  -498,   365,   368,  -498,   374,   377,
+     387,  -498,  -498,   388,  -498,  -498,   389,    20,  -498,  -498,
+     399,   402,  -498,   404,  -498,  -498,    71,   406,  -498,  -498,
+    -498,    -7,   405,  -498,    20,    27,   407,  -498,  -498,   151,
+     111,   111,   458,   459,   460,   -44,    20,   208,    36,   461,
+     -53,    24,   124,   104,  -498,  -498,   442,  -498,    43,   462,
+     464,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   465,
+     410,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,   212,  -498,   213,  -498,  -498,   214,  -498,
-    -498,  -498,  -498,   476,   477,   479,   480,   481,  -498,  -498,
-    -498,   215,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,   221,  -498,   482,   483,  -498,
-    -498,   489,   486,  -498,  -498,   491,   496,  -498,  -498,  -498,
-      82,  -498,  -498,  -498,   494,  -498,  -498,  -498,   122,  -498,
-    -498,  -498,  -498,   260,  -498,   495,   499,  -498,   502,   503,
-     504,   506,   507,   508,   225,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,   509,   510,   512,  -498,  -498,   227,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   229,  -498,
-    -498,  -498,   236,   383,   384,  -498,  -498,   497,   514,  -498,
-    -498,   513,   515,  -498,  -498,   516,   517,  -498,  -498,   518,
-    -498,   519,   374,  -498,  -498,   520,   521,   525,   526,   393,
-     397,   405,   399,   406,   527,   528,   108,  -498,  -498,    19,
-    -498,   460,    28,  -498,   462,   117,  -498,   465,   -41,  -498,
-    -498,    70,  -498,    41,  -498,   -33,  -498,   467,   407,   409,
-     410,   413,   414,   423,   109,  -498,   529,   530,   424,   435,
-     436,    24,  -498,   531,   532,   -42,  -498,  -498,  -498,   533,
-     534,  -498,    -1,  -498,   469,    45,  -498,   470,    81,  -498,
-     472,   536,  -498,   537,  -498,   240,   440,   442,   444,  -498,
-    -498,  -498,  -498,  -498,   446,   449,  -498,   237,  -498,   535,
-    -498,   539,  -498,  -498,  -498,  -498,   238,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,   184,   450,  -498,  -498,  -498,
-    -498,   451,   452,  -498,  -498,   455,   239,  -498,   245,  -498,
-     540,  -498,   456,   538,  -498,  -498,  -498,  -498,  -498,  -498,
+    -498,  -498,  -498,  -498,  -498,  -498,   220,  -498,   230,  -498,
+    -498,   231,  -498,  -498,  -498,  -498,   469,   470,   471,   472,
+     474,  -498,  -498,  -498,   232,  -498,  -498,  -498,  -498,  -498,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   238,  -498,
+     473,   479,  -498,  -498,   477,   481,  -498,  -498,   480,   482,
+    -498,  -498,  -498,   102,  -498,  -498,  -498,   484,  -498,  -498,
+    -498,   125,  -498,  -498,  -498,  -498,   272,  -498,   485,   489,
+    -498,   490,   491,   492,   495,   498,   499,   239,  -498,  -498,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,   501,   502,   503,
+    -498,  -498,   240,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
+    -498,   241,  -498,  -498,  -498,   242,   412,   413,  -498,  -498,
+     487,   505,  -498,  -498,   504,   506,  -498,  -498,   507,   508,
+    -498,  -498,   509,  -498,   510,   407,  -498,  -498,   512,   514,
+     515,   516,   315,   416,   417,   426,   427,   518,   519,   111,
+    -498,  -498,    19,  -498,   458,    28,  -498,   459,    59,  -498,
+     460,   -44,  -498,  -498,   208,  -498,    36,  -498,   -36,  -498,
+     461,   433,   434,   437,   444,   446,   448,   -53,  -498,   522,
+     523,   449,   453,   454,    24,  -498,   524,   525,   124,  -498,
+    -498,  -498,   527,   528,  -498,    -1,  -498,   462,    33,  -498,
+     464,    85,  -498,   465,   526,  -498,   483,  -498,   254,   463,
+     466,   467,  -498,  -498,  -498,  -498,  -498,   468,   475,  -498,
+     249,  -498,   529,  -498,   530,  -498,  -498,  -498,  -498,   251,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   217,   476,
+    -498,  -498,  -498,  -498,   478,   486,  -498,  -498,   488,   252,
+    -498,   253,  -498,   531,  -498,   497,   533,  -498,  -498,  -498,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,   261,  -498,    54,   538,  -498,  -498,   545,  -498,  -498,
-    -498,   246,  -498,  -498,  -498,  -498,  -498,   549,   457,   552,
-      54,  -498,   555,  -498,   459,  -498,   550,  -498,  -498,   265,
-    -498,   -93,   550,  -498,  -498,   557,   558,   559,   247,  -498,
-    -498,  -498,  -498,  -498,  -498,   560,   458,   461,   463,   -93,
-    -498,   466,  -498,  -498,  -498,  -498,  -498
+    -498,  -498,  -498,  -498,   291,  -498,    57,   533,  -498,  -498,
+     537,  -498,  -498,  -498,   259,  -498,  -498,  -498,  -498,  -498,
+     538,   494,   539,    57,  -498,   540,  -498,   500,  -498,   541,
+    -498,  -498,   298,  -498,    17,   541,  -498,  -498,   543,   546,
+     549,   260,  -498,  -498,  -498,  -498,  -498,  -498,   550,   511,
+     517,   520,    17,  -498,   513,  -498,  -498,  -498,  -498,  -498
   };
 
   const unsigned short int
@@ -3490,254 +3517,254 @@ namespace isc { namespace dhcp {
       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,   211,    11,   313,    13,   333,    15,
-     360,    17,   252,    19,   287,    21,   176,    23,   444,    25,
-      43,    37,     0,     0,     0,     0,     0,     0,   362,   254,
-     289,     0,     0,    45,     0,    44,     0,     0,    38,    63,
-     495,   491,   493,     0,    62,     0,    56,    58,    60,    61,
+      65,     7,    98,     9,   211,    11,   316,    13,   336,    15,
+     363,    17,   255,    19,   290,    21,   176,    23,   447,    25,
+      43,    37,     0,     0,     0,     0,     0,     0,   365,   257,
+     292,     0,     0,    45,     0,    44,     0,     0,    38,    63,
+     498,   494,   496,     0,    62,     0,    56,    58,    60,    61,
       59,    96,   107,   109,     0,     0,     0,     0,     0,   203,
-     244,   279,   149,   166,   157,   393,   168,   187,   410,     0,
-     432,   442,    90,     0,    67,    69,    70,    71,    72,    73,
+     247,   282,   149,   166,   157,   396,   168,   187,   413,     0,
+     435,   445,    90,     0,    67,    69,    70,    71,    72,    73,
       75,    76,    77,    78,    80,    79,    84,    85,    74,    82,
       83,    81,    86,    87,    88,    89,   104,     0,     0,   100,
-     102,   103,   397,   305,   325,   232,   234,   236,     0,     0,
-     240,   238,   352,   389,   231,   215,   216,   217,   218,     0,
+     102,   103,   400,   308,   328,   232,   234,   236,     0,     0,
+     240,   238,   355,   392,   231,   215,   216,   217,   218,     0,
      213,   222,   223,   224,   227,   229,   225,   226,   219,   220,
-     221,   228,   230,   321,   323,   320,   318,     0,   315,   317,
-     319,   345,     0,   348,     0,     0,   344,   340,   343,     0,
-     335,   337,   338,   341,   342,   339,   387,   375,   377,   379,
-     381,   383,   385,   374,   373,     0,   363,   364,   368,   369,
-     366,   370,   371,   372,   367,   269,   139,     0,   273,   271,
-     276,     0,   265,   266,     0,   255,   256,   258,   268,   259,
-     260,   261,   275,   262,   263,   264,   300,     0,   298,   299,
-     302,   303,     0,   290,   291,   293,   294,   295,   296,   297,
-     183,   185,   180,     0,   178,   181,   182,     0,   464,   466,
-       0,   469,     0,     0,   473,   477,     0,     0,     0,   482,
-     489,   462,     0,   446,   448,   449,   450,   451,   452,   453,
-     454,   455,   456,   457,   458,   459,   460,   461,    42,     0,
+     221,   228,   230,   324,   326,   323,   321,     0,   318,   320,
+     322,   348,     0,   351,     0,     0,   347,   343,   346,     0,
+     338,   340,   341,   344,   345,   342,   390,   378,   380,   382,
+     384,   386,   388,   377,   376,     0,   366,   367,   371,   372,
+     369,   373,   374,   375,   370,   272,   139,     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,
+     183,   185,   180,     0,   178,   181,   182,     0,   467,   469,
+       0,   472,     0,     0,   476,   480,     0,     0,     0,   485,
+     492,   465,     0,   449,   451,   452,   453,   454,   455,   456,
+     457,   458,   459,   460,   461,   462,   463,   464,    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,     0,     0,
-       0,     0,    66,     0,     0,     0,    99,   399,     0,     0,
+       0,     0,    66,     0,     0,     0,    99,   402,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     212,     0,     0,     0,   314,     0,     0,     0,     0,     0,
-       0,   334,     0,     0,     0,     0,     0,     0,     0,   361,
-       0,     0,     0,     0,     0,     0,     0,     0,   253,     0,
-       0,     0,   288,     0,     0,     0,     0,   177,     0,     0,
+     212,     0,     0,     0,   317,     0,     0,     0,     0,     0,
+       0,   337,     0,     0,     0,     0,     0,     0,     0,   364,
+       0,     0,     0,     0,     0,     0,     0,     0,   256,     0,
+       0,     0,   291,     0,     0,     0,     0,   177,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   445,    46,    39,     0,     0,     0,     0,
+       0,     0,     0,   448,    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,
-     431,     0,     0,    68,     0,   106,   101,   408,   406,   407,
-     405,     0,   400,   401,   403,   404,     0,     0,     0,     0,
-       0,   242,   243,     0,     0,     0,     0,   214,     0,     0,
-     316,     0,   347,     0,   350,   351,   336,     0,     0,     0,
-       0,     0,     0,     0,   365,     0,     0,   267,     0,     0,
-       0,   278,   257,     0,   304,   292,     0,     0,   179,   463,
-       0,     0,   468,     0,   471,   472,     0,     0,   479,   480,
-     481,     0,     0,   447,     0,     0,     0,   492,   494,     0,
-       0,     0,   205,   246,   281,     0,    43,     0,     0,   170,
-       0,     0,     0,     0,    47,   105,     0,   398,     0,   307,
-     327,   233,   235,   237,   241,   239,   354,     0,   322,    36,
-     324,   346,   349,   388,   376,   378,   380,   382,   384,   386,
-     270,   140,   274,   272,   277,   301,   184,   186,   465,   467,
-     470,   475,   476,   474,   478,   484,   485,   486,   487,   488,
-     483,   490,    40,     0,   500,     0,   497,   499,     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,   209,     0,   206,   207,
-     250,     0,   247,   248,   285,     0,   282,   283,   155,   156,
-       0,   151,   153,   154,     0,   164,   165,   161,     0,   159,
-     162,   163,   395,     0,   174,     0,   171,   172,     0,     0,
-       0,     0,     0,     0,     0,   189,   191,   192,   193,   194,
-     195,   196,   421,   427,     0,     0,     0,   420,   419,     0,
-     412,   414,   417,   415,   416,   418,   438,   440,     0,   434,
-     436,   437,     0,    49,     0,   402,   311,     0,   308,   309,
-     331,     0,   328,   329,   358,     0,   355,   356,   391,     0,
-      64,     0,     0,   496,    97,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   108,   110,     0,
-     204,     0,   254,   245,     0,   289,   280,     0,     0,   150,
-     167,     0,   158,     0,   394,     0,   169,     0,     0,     0,
-       0,     0,     0,     0,     0,   188,     0,     0,     0,     0,
-       0,     0,   411,     0,     0,     0,   433,   443,    51,     0,
-      50,   409,     0,   306,     0,     0,   326,     0,   362,   353,
-       0,     0,   390,     0,   498,     0,     0,     0,     0,   138,
-     141,   142,   143,   144,     0,     0,   112,     0,   208,     0,
-     249,     0,   284,   152,   160,   396,     0,   173,   197,   198,
-     199,   200,   201,   202,   190,     0,     0,   426,   429,   430,
-     413,     0,     0,   435,    48,     0,     0,   310,     0,   330,
-       0,   357,     0,     0,   128,   129,   130,   131,   127,   133,
-     135,   137,   146,   148,   210,   251,   286,   175,   423,   424,
-     425,   422,   428,   439,   441,    52,   312,   332,   359,   392,
-     504,     0,   502,     0,     0,   501,   516,     0,   514,   512,
-     508,     0,   506,   510,   511,   509,   503,     0,     0,     0,
-       0,   505,     0,   513,     0,   507,     0,   515,   520,     0,
-     518,     0,     0,   517,   528,     0,     0,     0,     0,   522,
-     524,   525,   526,   527,   519,     0,     0,     0,     0,     0,
-     521,     0,   530,   531,   532,   523,   529
+     434,     0,     0,    68,     0,   106,   101,   411,   409,   410,
+     408,     0,   403,   404,   406,   407,     0,     0,     0,     0,
+       0,   245,   246,     0,     0,     0,     0,   214,     0,     0,
+     319,     0,   350,     0,   353,   354,   339,     0,     0,     0,
+       0,     0,     0,     0,   368,     0,     0,   270,     0,     0,
+       0,   281,   260,     0,   307,   295,     0,     0,   179,   466,
+       0,     0,   471,     0,   474,   475,     0,     0,   482,   483,
+     484,     0,     0,   450,     0,     0,     0,   495,   497,     0,
+       0,     0,   205,   249,   284,     0,    43,     0,     0,   170,
+       0,     0,     0,     0,    47,   105,     0,   401,     0,   310,
+     330,   233,   235,   237,   242,   243,   244,   241,   239,   357,
+       0,   325,    36,   327,   349,   352,   391,   379,   381,   383,
+     385,   387,   389,   273,   140,   277,   275,   280,   304,   184,
+     186,   468,   470,   473,   478,   479,   477,   481,   487,   488,
+     489,   490,   491,   486,   493,    40,     0,   503,     0,   500,
+     502,     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,   209,
+       0,   206,   207,   253,     0,   250,   251,   288,     0,   285,
+     286,   155,   156,     0,   151,   153,   154,     0,   164,   165,
+     161,     0,   159,   162,   163,   398,     0,   174,     0,   171,
+     172,     0,     0,     0,     0,     0,     0,     0,   189,   191,
+     192,   193,   194,   195,   196,   424,   430,     0,     0,     0,
+     423,   422,     0,   415,   417,   420,   418,   419,   421,   441,
+     443,     0,   437,   439,   440,     0,    49,     0,   405,   314,
+       0,   311,   312,   334,     0,   331,   332,   361,     0,   358,
+     359,   394,     0,    64,     0,     0,   499,    97,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     108,   110,     0,   204,     0,   257,   248,     0,   292,   283,
+       0,     0,   150,   167,     0,   158,     0,   397,     0,   169,
+       0,     0,     0,     0,     0,     0,     0,     0,   188,     0,
+       0,     0,     0,     0,     0,   414,     0,     0,     0,   436,
+     446,    51,     0,    50,   412,     0,   309,     0,     0,   329,
+       0,   365,   356,     0,     0,   393,     0,   501,     0,     0,
+       0,     0,   138,   141,   142,   143,   144,     0,     0,   112,
+       0,   208,     0,   252,     0,   287,   152,   160,   399,     0,
+     173,   197,   198,   199,   200,   201,   202,   190,     0,     0,
+     429,   432,   433,   416,     0,     0,   438,    48,     0,     0,
+     313,     0,   333,     0,   360,     0,     0,   128,   129,   130,
+     131,   127,   133,   135,   137,   146,   148,   210,   254,   289,
+     175,   426,   427,   428,   425,   431,   442,   444,    52,   315,
+     335,   362,   395,   507,     0,   505,     0,     0,   504,   519,
+       0,   517,   515,   511,     0,   509,   513,   514,   512,   506,
+       0,     0,     0,     0,   508,     0,   516,     0,   510,     0,
+     518,   523,     0,   521,     0,     0,   520,   531,     0,     0,
+       0,     0,   525,   527,   528,   529,   530,   522,     0,     0,
+       0,     0,     0,   524,     0,   533,   534,   535,   526,   532
   };
 
   const short int
   Dhcp6Parser::yypgoto_[] =
   {
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,    10,  -498,    72,  -498,  -498,  -498,
-    -498,  -498,  -498,    35,  -498,  -172,  -498,  -498,  -498,   -62,
-    -498,  -498,  -498,   267,  -498,  -498,  -498,  -498,    71,   249,
-     -63,   -50,   -49,   -43,  -498,  -498,  -498,  -498,  -498,    68,
-     251,  -498,  -498,  -498,  -498,  -498,  -498,  -498,    73,  -125,
+    -498,  -498,  -498,  -498,    10,  -498,    95,  -498,  -498,  -498,
+    -498,  -498,  -498,    49,  -498,  -140,  -498,  -498,  -498,   -62,
+    -498,  -498,  -498,   263,  -498,  -498,  -498,  -498,    61,   236,
+     -63,   -50,   -49,   -43,  -498,  -498,  -498,  -498,  -498,    63,
+     247,  -498,  -498,  -498,  -498,  -498,  -498,  -498,    62,  -141,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
      -58,  -498,  -497,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -136,  -484,  -498,  -498,  -498,  -498,  -138,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -142,  -498,
-    -498,  -498,  -137,   201,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -145,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -119,  -498,  -498,  -498,  -116,   253,  -498,  -498,
+    -498,  -498,  -498,  -147,  -484,  -498,  -498,  -498,  -498,  -146,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -153,  -498,
+    -498,  -498,  -149,   194,  -498,  -498,  -498,  -498,  -498,  -498,
+    -498,  -156,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
+    -498,  -498,  -131,  -498,  -498,  -498,  -128,   248,  -498,  -498,
     -498,  -498,  -498,  -498,  -487,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -117,  -498,  -498,  -498,  -113,  -498,
-     216,  -498,   -59,  -498,  -498,  -498,  -498,  -498,   -57,  -498,
-    -498,  -498,  -498,  -498,   -48,  -498,  -498,  -498,  -110,  -498,
-    -498,  -498,  -114,  -498,   228,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -146,  -498,  -498,  -498,  -135,
-     275,  -498,  -498,   -66,  -498,  -498,  -498,  -498,  -498,  -143,
-    -498,  -498,  -498,  -134,   263,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -141,  -498,  -498,  -498,
-    -133,  -498,   257,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
+    -498,  -498,  -498,  -498,  -498,  -130,  -498,  -498,  -498,  -127,
+    -498,   211,  -498,   -59,  -498,  -498,  -498,  -498,  -498,   -57,
+    -498,  -498,  -498,  -498,  -498,   -48,  -498,  -498,  -498,  -126,
+    -498,  -498,  -498,  -129,  -498,   213,  -498,  -498,  -498,  -498,
+    -498,  -498,  -498,  -498,  -498,  -498,  -164,  -498,  -498,  -498,
+    -157,   250,  -498,  -498,   -66,  -498,  -498,  -498,  -498,  -498,
+    -161,  -498,  -498,  -498,  -158,   262,  -498,  -498,  -498,  -498,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -162,  -498,  -498,
+    -498,  -152,  -498,   235,  -498,  -498,  -498,  -498,  -498,  -498,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,    96,  -498,  -498,
-    -498,  -498,  -498,  -498,  -115,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -123,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,   106,   232,  -498,  -498,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,    80,  -498,
+    -498,  -498,  -498,  -498,  -498,  -134,  -498,  -498,  -498,  -498,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -135,  -498,
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,    91,   214,  -498,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   -61,  -498,
-    -498,  -498,  -214,  -498,  -498,  -228,  -498,  -498,  -498,  -498,
-    -498,  -498,  -239,  -498,  -498,  -254,  -498,  -498,  -498,  -498,
-    -498
+    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   -80,
+    -498,  -498,  -498,  -230,  -498,  -498,  -245,  -498,  -498,  -498,
+    -498,  -498,  -498,  -256,  -498,  -498,  -271,  -498,  -498,  -498,
+    -498,  -498
   };
 
   const short int
   Dhcp6Parser::yydefgoto_[] =
   {
       -1,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    73,    35,    36,    61,   530,    77,
-      78,    37,    60,    74,    75,   515,   663,   739,   740,   112,
+      22,    23,    24,    25,    73,    35,    36,    61,   533,    77,
+      78,    37,    60,    74,    75,   515,   666,   742,   743,   112,
       39,    62,    85,    86,    87,   293,    41,    63,   113,   114,
      115,   116,   117,   118,   119,   120,   300,    43,    64,   138,
-     139,   140,   323,   141,   121,   301,   122,   302,   581,   582,
-     583,   685,   808,   584,   686,   585,   687,   586,   688,   587,
-     223,   362,   589,   590,   591,   592,   593,   694,   594,   695,
-     123,   311,   610,   611,   612,   613,   124,   313,   618,   619,
-     620,   621,   125,   312,   126,   315,   625,   626,   627,   715,
+     139,   140,   323,   141,   121,   301,   122,   302,   584,   585,
+     586,   688,   811,   587,   689,   588,   690,   589,   691,   590,
+     223,   362,   592,   593,   594,   595,   596,   697,   597,   698,
+     123,   311,   613,   614,   615,   616,   124,   313,   621,   622,
+     623,   624,   125,   312,   126,   315,   628,   629,   630,   718,
       57,    71,   253,   254,   255,   374,   256,   375,   127,   316,
-     634,   635,   636,   637,   638,   639,   640,   641,   128,   308,
-     597,   598,   599,   699,    45,    65,   159,   160,   161,   330,
-     162,   331,   163,   332,   164,   336,   165,   335,   166,   167,
-     129,   309,   601,   602,   603,   702,    53,    69,   224,   225,
-     226,   227,   228,   229,   230,   361,   231,   365,   232,   364,
-     233,   234,   366,   235,   130,   310,   605,   606,   607,   705,
-      55,    70,   242,   243,   244,   245,   246,   370,   247,   248,
-     249,   169,   328,   667,   668,   669,   742,    47,    66,   177,
-     178,   179,   341,   180,   342,   170,   329,   671,   672,   673,
-     745,    49,    67,   189,   190,   191,   345,   192,   193,   347,
-     194,   195,   171,   337,   675,   676,   677,   748,    51,    68,
-     205,   206,   207,   208,   353,   209,   354,   210,   355,   211,
-     356,   212,   357,   213,   358,   214,   352,   172,   338,   679,
-     751,   131,   314,   623,   327,   431,   432,   433,   434,   435,
-     516,   132,   317,   649,   650,   651,   726,   821,   652,   653,
-     727,   654,   655,   133,   134,   319,   658,   659,   660,   733,
-     661,   734,   135,   320,    59,    72,   272,   273,   274,   275,
-     379,   276,   380,   277,   278,   382,   279,   280,   281,   385,
-     553,   282,   386,   283,   284,   285,   286,   390,   560,   287,
-     391,    88,   295,    89,   296,    90,   294,   565,   566,   567,
-     681,   831,   832,   833,   841,   842,   843,   844,   849,   845,
-     847,   859,   860,   861,   868,   869,   870,   875,   871,   872,
-     873
+     637,   638,   639,   640,   641,   642,   643,   644,   128,   308,
+     600,   601,   602,   702,    45,    65,   159,   160,   161,   330,
+     162,   331,   163,   332,   164,   336,   165,   335,   527,   166,
+     167,   129,   309,   604,   605,   606,   705,    53,    69,   224,
+     225,   226,   227,   228,   229,   230,   361,   231,   365,   232,
+     364,   233,   234,   366,   235,   130,   310,   608,   609,   610,
+     708,    55,    70,   242,   243,   244,   245,   246,   370,   247,
+     248,   249,   169,   328,   670,   671,   672,   745,    47,    66,
+     177,   178,   179,   341,   180,   342,   170,   329,   674,   675,
+     676,   748,    49,    67,   189,   190,   191,   345,   192,   193,
+     347,   194,   195,   171,   337,   678,   679,   680,   751,    51,
+      68,   205,   206,   207,   208,   353,   209,   354,   210,   355,
+     211,   356,   212,   357,   213,   358,   214,   352,   172,   338,
+     682,   754,   131,   314,   626,   327,   431,   432,   433,   434,
+     435,   516,   132,   317,   652,   653,   654,   729,   824,   655,
+     656,   730,   657,   658,   133,   134,   319,   661,   662,   663,
+     736,   664,   737,   135,   320,    59,    72,   272,   273,   274,
+     275,   379,   276,   380,   277,   278,   382,   279,   280,   281,
+     385,   556,   282,   386,   283,   284,   285,   286,   390,   563,
+     287,   391,    88,   295,    89,   296,    90,   294,   568,   569,
+     570,   684,   834,   835,   836,   844,   845,   846,   847,   852,
+     848,   850,   862,   863,   864,   871,   872,   873,   878,   874,
+     875,   876
   };
 
   const unsigned short int
   Dhcp6Parser::yytable_[] =
   {
       84,   188,   155,   154,   175,   186,   203,   222,   238,   252,
-     271,   240,   239,   241,   648,   156,   157,   168,   176,   187,
-     204,   622,   158,   617,    34,    27,   142,    28,    79,    29,
-     608,   864,   250,   251,   865,   866,   867,   101,    91,    26,
-     642,    92,    93,    38,   215,   250,   251,   173,   142,   574,
-      94,    95,    96,    97,   174,   656,   657,   101,    94,    95,
+     271,   240,   239,   241,   651,   156,   157,   168,   176,   187,
+     204,   625,   158,   620,    34,    27,   142,    28,    79,    29,
+     611,   631,   632,   633,   634,   635,   636,   101,    91,    26,
+     645,    92,    93,   142,   215,   250,   251,   173,    38,   577,
+      94,    95,    96,    97,   174,   250,   251,   101,    94,    95,
       96,    97,    98,    99,   100,   101,   143,   216,   144,   217,
-     218,    40,   219,   220,   221,   145,   146,   147,   148,   149,
-     150,   101,   216,   101,    42,   708,   151,   152,   709,   102,
-     103,   104,   105,   216,   153,   181,   182,   183,   184,   185,
-     174,   298,    44,   609,   106,   321,   299,   107,   151,   427,
-     322,    83,   136,   137,   108,   643,   644,   645,   646,   101,
-     551,   552,   109,   110,   569,   711,   111,    46,   712,   570,
-     571,   572,   573,   574,   575,   576,   577,   578,   579,    80,
-     325,   608,   615,    83,   616,   326,   196,   216,    81,    82,
-     197,   198,   199,   200,   201,   202,   216,   236,   217,   218,
-     237,    48,    83,    83,    30,    31,    32,    33,    83,   339,
-     343,    83,    83,   350,   340,   344,   376,   836,   351,   837,
-     838,   377,    50,   555,   556,   557,   558,    83,    52,    83,
-     628,   629,   630,   631,   632,   633,    54,    56,    83,   257,
-     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
-     268,   269,   270,   559,   392,   321,   682,   325,   696,   393,
-     680,   683,   684,   697,   696,    83,   775,   617,   724,   698,
-     731,    58,   735,   725,   648,   732,    84,   736,    76,   392,
-     339,   376,   343,    83,   737,   814,   817,   826,   350,   850,
-     879,   289,    83,   827,   851,   880,   288,   804,   805,   806,
-     807,    83,   290,   713,   834,   428,   714,   835,   862,   429,
-     291,   863,   818,   819,   820,   292,   155,   154,   297,   430,
-     303,   175,   304,   305,   188,   533,   534,   535,   186,   156,
-     157,   168,   306,   307,   318,   176,   158,   324,   203,   394,
-     395,   333,   187,   334,   346,   348,   349,   222,   363,   360,
-     369,   238,   204,   359,   240,   239,   241,     1,     2,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,   367,
-     271,   368,   371,   373,   372,   378,   381,   383,   384,   387,
-     388,   389,   396,   397,   398,   399,   400,   402,   403,   404,
-     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
-     415,   416,   417,   418,   419,   420,   421,   422,   424,   425,
-     436,   437,   438,   439,   440,   441,   443,   444,   442,   445,
-     446,   448,   449,   451,   453,   457,   452,   454,   455,   458,
-     459,   460,   461,   462,   463,   465,   466,   467,   468,   469,
-     470,   471,   473,   474,   476,   477,   479,   480,   481,   497,
-     498,   482,   483,   484,   485,   486,   487,   488,   489,   491,
-     490,   492,   494,   495,   521,   522,   496,   499,   500,   501,
-     502,   503,   504,   505,   506,   507,   508,   509,   580,   580,
-     510,   511,   588,   588,   512,   513,   514,   517,   518,   647,
-     527,   271,   519,   520,   523,   524,   428,   525,   526,   528,
-     429,    28,   531,   532,   536,   537,   538,   596,   539,   600,
-     430,   540,   604,   541,   624,   664,   666,   670,   678,   674,
-     689,   690,   542,   691,   692,   693,   701,   547,   700,   704,
-     543,   544,   545,   546,   548,   703,   564,   706,   554,   707,
-     710,   716,   717,   743,   562,   549,   718,   719,   720,   550,
-     721,   722,   723,   728,   729,   561,   730,   744,   747,   746,
-     750,   529,   749,   753,   755,   756,   752,   738,   741,   757,
-     758,   764,   765,   785,   786,   791,   792,   795,   759,   794,
-     802,   614,   803,   815,   760,   830,   762,   816,   828,   848,
-     761,   763,   778,   852,   779,   780,   854,   858,   781,   782,
-     856,   876,   877,   878,   881,   401,   563,   568,   783,   787,
-     423,   766,   773,   774,   595,   777,   426,   478,   776,   784,
-     788,   789,   768,   767,   809,   472,   810,   770,   811,   769,
-     812,   771,   447,   813,   822,   823,   824,   772,   797,   825,
-     829,   475,   853,   857,   799,   882,   883,   796,   884,   801,
-     886,   798,   793,   456,   665,   800,   790,   464,   450,   662,
-     846,   754,   855,   874,   493,   885,     0,     0,     0,     0,
-       0,     0,     0,     0,   580,     0,   155,   154,   588,     0,
-     222,     0,     0,   238,     0,     0,   240,   239,   241,   156,
-     157,   168,     0,   252,     0,     0,   158,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   647,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   188,
-     175,     0,     0,   186,     0,     0,   203,     0,     0,     0,
-       0,     0,     0,     0,   176,     0,     0,   187,     0,     0,
-     204,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     218,   101,   219,   220,   221,   145,   146,   147,   148,   149,
+     150,   101,   216,   181,   182,   183,   184,   185,   174,   151,
+     152,    40,   102,   103,   104,   105,   216,   153,   216,   236,
+     217,   218,   237,   612,   298,   711,   151,   106,   712,   299,
+     107,    83,   427,   558,   559,   560,   561,   108,   646,   647,
+     648,   649,    42,   101,    44,   109,   110,   572,   714,   111,
+      46,   715,   573,   574,   575,   576,   577,   578,   579,   580,
+     581,   582,    80,   562,   867,    48,    83,   868,   869,   870,
+     216,    81,    82,   196,   524,   525,   526,   197,   198,   199,
+     200,   201,   202,   136,   137,    83,    83,    30,    31,    32,
+      33,    83,   321,   325,    83,    83,   339,   322,   326,   343,
+      83,   340,   350,   839,   344,   840,   841,   351,   554,   555,
+      83,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    50,    83,    52,    83,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   376,   392,   321,   659,   660,   377,   393,   683,   778,
+     620,    54,    83,   685,   325,   699,    84,   651,   686,   687,
+     700,   699,   727,   734,   738,   392,   701,   728,   735,   739,
+     740,    83,   339,    56,   376,   343,   350,   817,    83,   820,
+     829,   830,   853,   882,    58,   428,    76,   854,   883,   429,
+     288,   807,   808,   809,   810,   716,   155,   154,   717,   430,
+     289,   175,   611,   618,   188,   619,   290,   291,   186,   156,
+     157,   168,   292,   359,   837,   176,   158,   838,   203,   394,
+     395,   865,   187,   297,   866,   303,   304,   222,   821,   822,
+     823,   238,   204,   305,   240,   239,   241,   536,   537,   538,
+     306,   307,   318,   324,   333,   334,   346,   348,   349,   360,
+     271,   363,   367,   368,   369,   396,   371,   372,   373,   405,
+     378,   381,   383,   384,   387,   388,   389,   397,   398,   399,
+     400,   402,   403,   404,   406,   407,   410,   408,   409,   411,
+     412,   413,   414,   415,   416,   417,   418,   419,   421,   420,
+     422,   424,   425,   436,   437,   438,   439,   440,   442,   443,
+     444,   441,   445,   446,   448,   449,   451,   453,   457,   458,
+     459,   452,   454,   455,   460,   461,   462,   463,   465,   466,
+     468,   469,   470,   467,   473,   476,   471,   477,   474,   497,
+     498,   479,   480,   481,   482,   483,   484,   485,   486,   487,
+     488,   489,   491,   490,   492,   494,   495,   521,   522,   496,
+     499,   500,   501,   502,   503,   504,   505,   506,   583,   583,
+     507,   508,   591,   591,   509,   510,   667,   511,   512,   650,
+     513,   271,   514,   517,   518,   519,   428,   520,   523,   528,
+     429,   529,   530,   762,    28,   599,   603,   607,   627,   669,
+     430,   673,   677,   692,   693,   694,   695,   531,   696,   703,
+     534,   535,   704,   706,   707,   710,   709,   550,   806,   681,
+     713,   719,   720,   746,   721,   722,   723,   539,   540,   724,
+     541,   542,   725,   726,   565,   731,   732,   733,   747,   750,
+     749,   753,   543,   752,   756,   544,   758,   755,   759,   760,
+     761,   545,   767,   768,   546,   557,   788,   789,   794,   795,
+     805,   798,   567,   797,   547,   548,   549,   818,   819,   831,
+     833,   851,   855,   857,   532,   859,   551,   879,   861,   552,
+     880,   553,   564,   881,   884,   617,   566,   423,   769,   741,
+     744,   401,   571,   598,   776,   764,   763,   780,   777,   779,
+     478,   787,   426,   771,   770,   766,   765,   773,   772,   774,
+     472,   781,   782,   800,   775,   783,   475,   447,   799,   802,
+     801,   804,   784,   450,   785,   464,   786,   790,   668,   803,
+     793,   791,   792,   796,   665,   757,   493,   849,   858,   877,
+     812,   888,   456,   813,   814,   815,     0,     0,     0,     0,
+       0,     0,   816,   825,     0,   826,     0,     0,     0,     0,
+       0,     0,     0,   827,     0,   828,     0,   583,     0,   155,
+     154,   591,   856,   222,   832,     0,   238,   860,     0,   240,
+     239,   241,   156,   157,   168,     0,   252,     0,     0,   158,
+     889,   885,     0,     0,     0,   886,     0,     0,   887,     0,
+       0,     0,   650,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   188,   175,     0,     0,   186,     0,     0,   203,
+       0,     0,     0,     0,     0,     0,     0,   176,     0,     0,
+     187,     0,     0,   204,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   839,     0,     0,     0,   840,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   839,     0,
-       0,     0,   840
+       0,     0,     0,     0,   842,     0,     0,     0,   843,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   842,     0,     0,     0,   843
   };
 
   const short int
@@ -3746,236 +3773,236 @@ namespace isc { namespace dhcp {
       62,    67,    65,    65,    66,    67,    68,    69,    70,    71,
       72,    70,    70,    70,   511,    65,    65,    65,    66,    67,
       68,   508,    65,   507,    14,     5,     7,     7,    10,     9,
-      71,   124,    78,    79,   127,   128,   129,    38,    11,     0,
-      16,    14,    15,     7,    16,    78,    79,    48,     7,    25,
-      31,    32,    33,    34,    55,    97,    98,    38,    31,    32,
+      74,    84,    85,    86,    87,    88,    89,    38,    11,     0,
+      16,    14,    15,     7,    16,    81,    82,    48,     7,    25,
+      31,    32,    33,    34,    55,    81,    82,    38,    31,    32,
       33,    34,    35,    36,    37,    38,    47,    39,    49,    41,
-      42,     7,    44,    45,    46,    56,    57,    58,    59,    60,
-      61,    38,    39,    38,     7,     3,    67,    68,     6,    62,
-      63,    64,    65,    39,    75,    50,    51,    52,    53,    54,
-      55,     3,     7,   144,    77,     3,     8,    80,    67,    66,
-       8,   144,    12,    13,    87,    91,    92,    93,    94,    38,
-     114,   115,    95,    96,    16,     3,    99,     7,     6,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,   121,
-       3,    71,    72,   144,    74,     8,    65,    39,   130,   131,
-      69,    70,    71,    72,    73,    74,    39,    40,    41,    42,
-      43,     7,   144,   144,   144,   145,   146,   147,   144,     3,
-       3,   144,   144,     3,     8,     8,     3,   123,     8,   125,
-     126,     8,     7,   117,   118,   119,   120,   144,     7,   144,
-      81,    82,    83,    84,    85,    86,     7,     7,   144,   100,
-     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-     111,   112,   113,   147,     3,     3,     3,     3,     3,     8,
-       8,     8,     8,     8,     3,   144,   713,   711,     3,     8,
-       3,     7,     3,     8,   731,     8,   298,     8,   144,     3,
-       3,     3,     3,   144,     8,     8,     8,     8,     3,     3,
-       3,     3,   144,     8,     8,     8,     6,    17,    18,    19,
-      20,   144,     4,     3,     3,   327,     6,     6,     3,   327,
-       8,     6,    88,    89,    90,     3,   339,   339,     4,   327,
-       4,   343,     4,     4,   350,   457,   458,   459,   350,   339,
-     339,   339,     4,     4,     4,   343,   339,     4,   360,   289,
-     290,     4,   350,     4,     4,     4,     4,   369,     4,     3,
-       3,   373,   360,     8,   373,   373,   373,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,     4,
-     392,     8,     4,     3,     8,     4,     4,     4,     4,     4,
-       4,     4,   144,     4,     4,     4,     4,     4,     4,     4,
-     145,   145,   145,   145,   145,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,   145,     4,     4,     4,   147,
-       4,     4,     4,     4,     4,   145,     4,     4,   147,     4,
-       4,     4,     4,     4,     4,     4,   145,   145,   145,     4,
-       4,     4,     4,     4,     4,     4,     4,   145,     4,     4,
-       4,   147,     4,   147,     4,     4,   147,     4,     4,   399,
-     400,   145,     4,   145,   145,     4,     4,   147,   147,     4,
-     147,     4,     4,     7,   144,   144,     7,     7,     7,     7,
-       5,     5,     5,     5,     5,     5,     5,     5,   500,   501,
-       7,     7,   500,   501,     7,     7,     5,     8,     3,   511,
-       7,   513,     5,     5,   144,   144,   518,   144,     5,   144,
-     518,     7,   144,   144,   144,   144,   144,     7,   144,     7,
-     518,   144,     7,   144,     7,     4,     7,     7,    76,     7,
-       4,     4,   144,     4,     4,     4,     3,   477,     6,     3,
-     144,   144,   144,   144,   144,     6,   122,     6,   116,     3,
-       6,     6,     3,     6,   494,   144,     4,     4,     4,   144,
-       4,     4,     4,     4,     4,   144,     4,     3,     3,     6,
-       3,   449,     6,     4,     4,     4,     8,   144,   144,     4,
-       4,     4,     4,     4,     4,     4,     4,     3,   145,     6,
-       4,   506,     5,     8,   147,     7,   147,     8,     8,     4,
-     145,   145,   145,     4,   145,   145,     4,     7,   145,   145,
-       5,     4,     4,     4,     4,   298,   495,   499,   145,   145,
-     321,   696,   708,   711,   501,   717,   325,   376,   715,   724,
-     145,   145,   701,   699,   144,   369,   144,   704,   144,   702,
-     144,   705,   339,   144,   144,   144,   144,   707,   744,   144,
-     144,   373,   145,   144,   747,   147,   145,   742,   145,   750,
-     144,   745,   735,   350,   518,   748,   731,   360,   343,   513,
-     834,   682,   850,   862,   392,   879,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   696,    -1,   699,   699,   696,    -1,
-     702,    -1,    -1,   705,    -1,    -1,   705,   705,   705,   699,
-     699,   699,    -1,   715,    -1,    -1,   699,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   731,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,
-     742,    -1,    -1,   745,    -1,    -1,   748,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   742,    -1,    -1,   745,    -1,    -1,
-     748,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      42,    38,    44,    45,    46,    56,    57,    58,    59,    60,
+      61,    38,    39,    50,    51,    52,    53,    54,    55,    70,
+      71,     7,    65,    66,    67,    68,    39,    78,    39,    40,
+      41,    42,    43,   147,     3,     3,    70,    80,     6,     8,
+      83,   147,    69,   120,   121,   122,   123,    90,    94,    95,
+      96,    97,     7,    38,     7,    98,    99,    16,     3,   102,
+       7,     6,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,   124,   150,   127,     7,   147,   130,   131,   132,
+      39,   133,   134,    68,    62,    63,    64,    72,    73,    74,
+      75,    76,    77,    12,    13,   147,   147,   147,   148,   149,
+     150,   147,     3,     3,   147,   147,     3,     8,     8,     3,
+     147,     8,     3,   126,     8,   128,   129,     8,   117,   118,
+     147,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,     7,   147,     7,   147,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,     3,     3,     3,   100,   101,     8,     8,     8,   716,
+     714,     7,   147,     3,     3,     3,   298,   734,     8,     8,
+       8,     3,     3,     3,     3,     3,     8,     8,     8,     8,
+       8,   147,     3,     7,     3,     3,     3,     8,   147,     8,
+       8,     8,     3,     3,     7,   327,   147,     8,     8,   327,
+       6,    17,    18,    19,    20,     3,   339,   339,     6,   327,
+       3,   343,    74,    75,   350,    77,     4,     8,   350,   339,
+     339,   339,     3,     8,     3,   343,   339,     6,   360,   289,
+     290,     3,   350,     4,     6,     4,     4,   369,    91,    92,
+      93,   373,   360,     4,   373,   373,   373,   457,   458,   459,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     3,
+     392,     4,     4,     8,     3,   147,     4,     8,     3,   148,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,   148,   148,     4,   148,   148,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,   148,
+       4,     4,   150,     4,     4,     4,     4,     4,   150,     4,
+       4,   148,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,   148,   148,   148,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,   148,     4,     4,   150,     4,   150,   399,
+     400,   150,     4,     4,   148,     4,   148,   148,     4,     4,
+     150,   150,     4,   150,     4,     4,     7,   147,   147,     7,
+       7,     7,     7,     5,     5,     5,     5,     5,   500,   501,
+       5,     5,   500,   501,     5,     7,     4,     7,     7,   511,
+       7,   513,     5,     8,     3,     5,   518,     5,   147,   147,
+     518,     5,     7,   148,     7,     7,     7,     7,     7,     7,
+     518,     7,     7,     4,     4,     4,     4,   147,     4,     6,
+     147,   147,     3,     6,     3,     3,     6,   477,     5,    79,
+       6,     6,     3,     6,     4,     4,     4,   147,   147,     4,
+     147,   147,     4,     4,   494,     4,     4,     4,     3,     3,
+       6,     3,   147,     6,     4,   147,     4,     8,     4,     4,
+       4,   147,     4,     4,   147,   119,     4,     4,     4,     4,
+       4,     3,   125,     6,   147,   147,   147,     8,     8,     8,
+       7,     4,     4,     4,   449,     5,   147,     4,     7,   147,
+       4,   147,   147,     4,     4,   506,   495,   321,   699,   147,
+     147,   298,   499,   501,   711,   148,   150,   720,   714,   718,
+     376,   727,   325,   704,   702,   148,   150,   707,   705,   708,
+     369,   148,   148,   747,   710,   148,   373,   339,   745,   750,
+     748,   753,   148,   343,   148,   360,   148,   148,   518,   751,
+     734,   148,   148,   738,   513,   685,   392,   837,   853,   865,
+     147,   882,   350,   147,   147,   147,    -1,    -1,    -1,    -1,
+      -1,    -1,   147,   147,    -1,   147,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   147,    -1,   147,    -1,   699,    -1,   702,
+     702,   699,   148,   705,   147,    -1,   708,   147,    -1,   708,
+     708,   708,   702,   702,   702,    -1,   718,    -1,    -1,   702,
+     147,   150,    -1,    -1,    -1,   148,    -1,    -1,   148,    -1,
+      -1,    -1,   734,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   748,   745,    -1,    -1,   748,    -1,    -1,   751,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,    -1,    -1,
+     748,    -1,    -1,   751,    -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,   833,    -1,    -1,    -1,   833,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   850,    -1,
-      -1,    -1,   850
+      -1,    -1,    -1,    -1,   836,    -1,    -1,    -1,   836,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   853,    -1,    -1,    -1,   853
   };
 
   const unsigned short int
   Dhcp6Parser::yystos_[] =
   {
-       0,   132,   133,   134,   135,   136,   137,   138,   139,   140,
-     141,   142,   143,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,     0,     5,     7,     9,
-     144,   145,   146,   147,   162,   163,   164,   169,     7,   178,
-       7,   184,     7,   195,     7,   272,     7,   335,     7,   349,
-       7,   366,     7,   294,     7,   318,     7,   248,     7,   422,
-     170,   165,   179,   185,   196,   273,   336,   350,   367,   295,
-     319,   249,   423,   162,   171,   172,   144,   167,   168,    10,
-     121,   130,   131,   144,   177,   180,   181,   182,   449,   451,
-     453,    11,    14,    15,    31,    32,    33,    34,    35,    36,
-      37,    38,    62,    63,    64,    65,    77,    80,    87,    95,
-      96,    99,   177,   186,   187,   188,   189,   190,   191,   192,
-     193,   202,   204,   228,   234,   240,   242,   256,   266,   288,
-     312,   389,   399,   411,   412,   420,    12,    13,   197,   198,
-     199,   201,     7,    47,    49,    56,    57,    58,    59,    60,
-      61,    67,    68,    75,   177,   188,   189,   190,   191,   274,
-     275,   276,   278,   280,   282,   284,   286,   287,   312,   329,
-     343,   360,   385,    48,    55,   177,   312,   337,   338,   339,
-     341,    50,    51,    52,    53,    54,   177,   312,   341,   351,
-     352,   353,   355,   356,   358,   359,    65,    69,    70,    71,
-      72,    73,    74,   177,   312,   368,   369,   370,   371,   373,
-     375,   377,   379,   381,   383,    16,    39,    41,    42,    44,
-      45,    46,   177,   218,   296,   297,   298,   299,   300,   301,
-     302,   304,   306,   308,   309,   311,    40,    43,   177,   218,
-     300,   306,   320,   321,   322,   323,   324,   326,   327,   328,
-      78,    79,   177,   250,   251,   252,   254,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   177,   424,   425,   426,   427,   429,   431,   432,   434,
-     435,   436,   439,   441,   442,   443,   444,   447,     6,     3,
-       4,     8,     3,   183,   454,   450,   452,     4,     3,     8,
-     194,   203,   205,     4,     4,     4,     4,     4,   267,   289,
-     313,   229,   241,   235,   390,   243,   257,   400,     4,   413,
-     421,     3,     8,   200,     4,     3,     8,   392,   330,   344,
-     277,   279,   281,     4,     4,   285,   283,   361,   386,     3,
-       8,   340,   342,     3,     8,   354,     4,   357,     4,     4,
-       3,     8,   384,   372,   374,   376,   378,   380,   382,     8,
-       3,   303,   219,     4,   307,   305,   310,     4,     8,     3,
-     325,     4,     8,     3,   253,   255,     3,     8,     4,   428,
-     430,     4,   433,     4,     4,   437,   440,     4,     4,     4,
-     445,   448,     3,     8,   162,   162,   144,     4,     4,     4,
-       4,   181,     4,     4,     4,   145,   145,   145,   145,   145,
+       0,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,     0,     5,     7,     9,
+     147,   148,   149,   150,   165,   166,   167,   172,     7,   181,
+       7,   187,     7,   198,     7,   275,     7,   339,     7,   353,
+       7,   370,     7,   298,     7,   322,     7,   251,     7,   426,
+     173,   168,   182,   188,   199,   276,   340,   354,   371,   299,
+     323,   252,   427,   165,   174,   175,   147,   170,   171,    10,
+     124,   133,   134,   147,   180,   183,   184,   185,   453,   455,
+     457,    11,    14,    15,    31,    32,    33,    34,    35,    36,
+      37,    38,    65,    66,    67,    68,    80,    83,    90,    98,
+      99,   102,   180,   189,   190,   191,   192,   193,   194,   195,
+     196,   205,   207,   231,   237,   243,   245,   259,   269,   292,
+     316,   393,   403,   415,   416,   424,    12,    13,   200,   201,
+     202,   204,     7,    47,    49,    56,    57,    58,    59,    60,
+      61,    70,    71,    78,   180,   191,   192,   193,   194,   277,
+     278,   279,   281,   283,   285,   287,   290,   291,   316,   333,
+     347,   364,   389,    48,    55,   180,   316,   341,   342,   343,
+     345,    50,    51,    52,    53,    54,   180,   316,   345,   355,
+     356,   357,   359,   360,   362,   363,    68,    72,    73,    74,
+      75,    76,    77,   180,   316,   372,   373,   374,   375,   377,
+     379,   381,   383,   385,   387,    16,    39,    41,    42,    44,
+      45,    46,   180,   221,   300,   301,   302,   303,   304,   305,
+     306,   308,   310,   312,   313,   315,    40,    43,   180,   221,
+     304,   310,   324,   325,   326,   327,   328,   330,   331,   332,
+      81,    82,   180,   253,   254,   255,   257,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   180,   428,   429,   430,   431,   433,   435,   436,   438,
+     439,   440,   443,   445,   446,   447,   448,   451,     6,     3,
+       4,     8,     3,   186,   458,   454,   456,     4,     3,     8,
+     197,   206,   208,     4,     4,     4,     4,     4,   270,   293,
+     317,   232,   244,   238,   394,   246,   260,   404,     4,   417,
+     425,     3,     8,   203,     4,     3,     8,   396,   334,   348,
+     280,   282,   284,     4,     4,   288,   286,   365,   390,     3,
+       8,   344,   346,     3,     8,   358,     4,   361,     4,     4,
+       3,     8,   388,   376,   378,   380,   382,   384,   386,     8,
+       3,   307,   222,     4,   311,   309,   314,     4,     8,     3,
+     329,     4,     8,     3,   256,   258,     3,     8,     4,   432,
+     434,     4,   437,     4,     4,   441,   444,     4,     4,     4,
+     449,   452,     3,     8,   165,   165,   147,     4,     4,     4,
+       4,   184,     4,     4,     4,   148,   148,   148,   148,   148,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     145,     4,     4,   187,     4,   147,   198,    66,   177,   218,
-     312,   393,   394,   395,   396,   397,     4,     4,     4,     4,
-       4,   145,   147,     4,     4,     4,     4,   275,     4,     4,
-     338,     4,   145,     4,   145,   145,   352,     4,     4,     4,
-       4,     4,     4,     4,   370,     4,     4,   145,     4,     4,
-       4,   147,   298,     4,   147,   322,     4,     4,   251,   147,
-       4,     4,   145,     4,   145,   145,     4,     4,   147,   147,
-     147,     4,     4,   425,     4,     7,     7,   162,   162,     7,
+     148,     4,     4,   190,     4,   150,   201,    69,   180,   221,
+     316,   397,   398,   399,   400,   401,     4,     4,     4,     4,
+       4,   148,   150,     4,     4,     4,     4,   278,     4,     4,
+     342,     4,   148,     4,   148,   148,   356,     4,     4,     4,
+       4,     4,     4,     4,   374,     4,     4,   148,     4,     4,
+       4,   150,   302,     4,   150,   326,     4,     4,   254,   150,
+       4,     4,   148,     4,   148,   148,     4,     4,   150,   150,
+     150,     4,     4,   429,     4,     7,     7,   165,   165,     7,
        7,     7,     5,     5,     5,     5,     5,     5,     5,     5,
-       7,     7,     7,     7,     5,   173,   398,     8,     3,     5,
-       5,   144,   144,   144,   144,   144,     5,     7,   144,   164,
-     166,   144,   144,   173,   173,   173,   144,   144,   144,   144,
-     144,   144,   144,   144,   144,   144,   144,   162,   144,   144,
-     144,   114,   115,   438,   116,   117,   118,   119,   120,   147,
-     446,   144,   162,   186,   122,   455,   456,   457,   197,    16,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-     177,   206,   207,   208,   211,   213,   215,   217,   218,   220,
-     221,   222,   223,   224,   226,   206,     7,   268,   269,   270,
-       7,   290,   291,   292,     7,   314,   315,   316,    71,   144,
-     230,   231,   232,   233,   171,    72,    74,   232,   236,   237,
-     238,   239,   282,   391,     7,   244,   245,   246,    81,    82,
-      83,    84,    85,    86,   258,   259,   260,   261,   262,   263,
-     264,   265,    16,    91,    92,    93,    94,   177,   220,   401,
-     402,   403,   406,   407,   409,   410,    97,    98,   414,   415,
-     416,   418,   424,   174,     4,   395,     7,   331,   332,   333,
-       7,   345,   346,   347,     7,   362,   363,   364,    76,   387,
-       8,   458,     3,     8,     8,   209,   212,   214,   216,     4,
-       4,     4,     4,     4,   225,   227,     3,     8,     8,   271,
-       6,     3,   293,     6,     3,   317,     6,     3,     3,     6,
-       6,     3,     6,     3,     6,   247,     6,     3,     4,     4,
-       4,     4,     4,     4,     3,     8,   404,   408,     4,     4,
-       4,     3,     8,   417,   419,     3,     8,     8,   144,   175,
-     176,   144,   334,     6,     3,   348,     6,     3,   365,     6,
-       3,   388,     8,     4,   456,     4,     4,     4,     4,   145,
-     147,   145,   147,   145,     4,     4,   207,   274,   270,   296,
-     292,   320,   316,   231,   237,   282,   250,   246,   145,   145,
-     145,   145,   145,   145,   259,     4,     4,   145,   145,   145,
-     402,     4,     4,   415,     6,     3,   337,   333,   351,   347,
-     368,   364,     4,     5,    17,    18,    19,    20,   210,   144,
-     144,   144,   144,   144,     8,     8,     8,     8,    88,    89,
-      90,   405,   144,   144,   144,   144,     8,     8,     8,   144,
-       7,   459,   460,   461,     3,     6,   123,   125,   126,   177,
-     218,   462,   463,   464,   465,   467,   460,   468,     4,   466,
-       3,     8,     4,   145,     4,   463,     5,   144,     7,   469,
-     470,   471,     3,     6,   124,   127,   128,   129,   472,   473,
-     474,   476,   477,   478,   470,   475,     4,     4,     4,     3,
-       8,     4,   147,   145,   145,   473,   144
+       7,     7,     7,     7,     5,   176,   402,     8,     3,     5,
+       5,   147,   147,   147,    62,    63,    64,   289,   147,     5,
+       7,   147,   167,   169,   147,   147,   176,   176,   176,   147,
+     147,   147,   147,   147,   147,   147,   147,   147,   147,   147,
+     165,   147,   147,   147,   117,   118,   442,   119,   120,   121,
+     122,   123,   150,   450,   147,   165,   189,   125,   459,   460,
+     461,   200,    16,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,   180,   209,   210,   211,   214,   216,   218,
+     220,   221,   223,   224,   225,   226,   227,   229,   209,     7,
+     271,   272,   273,     7,   294,   295,   296,     7,   318,   319,
+     320,    74,   147,   233,   234,   235,   236,   174,    75,    77,
+     235,   239,   240,   241,   242,   285,   395,     7,   247,   248,
+     249,    84,    85,    86,    87,    88,    89,   261,   262,   263,
+     264,   265,   266,   267,   268,    16,    94,    95,    96,    97,
+     180,   223,   405,   406,   407,   410,   411,   413,   414,   100,
+     101,   418,   419,   420,   422,   428,   177,     4,   399,     7,
+     335,   336,   337,     7,   349,   350,   351,     7,   366,   367,
+     368,    79,   391,     8,   462,     3,     8,     8,   212,   215,
+     217,   219,     4,     4,     4,     4,     4,   228,   230,     3,
+       8,     8,   274,     6,     3,   297,     6,     3,   321,     6,
+       3,     3,     6,     6,     3,     6,     3,     6,   250,     6,
+       3,     4,     4,     4,     4,     4,     4,     3,     8,   408,
+     412,     4,     4,     4,     3,     8,   421,   423,     3,     8,
+       8,   147,   178,   179,   147,   338,     6,     3,   352,     6,
+       3,   369,     6,     3,   392,     8,     4,   460,     4,     4,
+       4,     4,   148,   150,   148,   150,   148,     4,     4,   210,
+     277,   273,   300,   296,   324,   320,   234,   240,   285,   253,
+     249,   148,   148,   148,   148,   148,   148,   262,     4,     4,
+     148,   148,   148,   406,     4,     4,   419,     6,     3,   341,
+     337,   355,   351,   372,   368,     4,     5,    17,    18,    19,
+      20,   213,   147,   147,   147,   147,   147,     8,     8,     8,
+       8,    91,    92,    93,   409,   147,   147,   147,   147,     8,
+       8,     8,   147,     7,   463,   464,   465,     3,     6,   126,
+     128,   129,   180,   221,   466,   467,   468,   469,   471,   464,
+     472,     4,   470,     3,     8,     4,   148,     4,   467,     5,
+     147,     7,   473,   474,   475,     3,     6,   127,   130,   131,
+     132,   476,   477,   478,   480,   481,   482,   474,   479,     4,
+       4,     4,     3,     8,     4,   150,   148,   148,   477,   147
   };
 
   const unsigned short int
   Dhcp6Parser::yyr1_[] =
   {
-       0,   148,   150,   149,   151,   149,   152,   149,   153,   149,
-     154,   149,   155,   149,   156,   149,   157,   149,   158,   149,
-     159,   149,   160,   149,   161,   149,   162,   162,   162,   162,
-     162,   162,   162,   163,   165,   164,   166,   167,   167,   168,
-     168,   170,   169,   171,   171,   172,   172,   174,   173,   175,
-     175,   176,   176,   177,   179,   178,   180,   180,   181,   181,
-     181,   181,   181,   183,   182,   185,   184,   186,   186,   187,
-     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
-     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
-     187,   188,   189,   190,   191,   192,   194,   193,   196,   195,
-     197,   197,   198,   198,   200,   199,   201,   203,   202,   205,
-     204,   206,   206,   207,   207,   207,   207,   207,   207,   207,
-     207,   207,   207,   207,   207,   207,   209,   208,   210,   210,
-     210,   210,   212,   211,   214,   213,   216,   215,   217,   219,
-     218,   220,   221,   222,   223,   225,   224,   227,   226,   229,
-     228,   230,   230,   231,   231,   232,   233,   235,   234,   236,
-     236,   237,   237,   237,   238,   239,   241,   240,   243,   242,
-     244,   244,   245,   245,   247,   246,   249,   248,   250,   250,
-     250,   251,   251,   253,   252,   255,   254,   257,   256,   258,
-     258,   259,   259,   259,   259,   259,   259,   260,   261,   262,
-     263,   264,   265,   267,   266,   268,   268,   269,   269,   271,
-     270,   273,   272,   274,   274,   275,   275,   275,   275,   275,
-     275,   275,   275,   275,   275,   275,   275,   275,   275,   275,
-     275,   275,   277,   276,   279,   278,   281,   280,   283,   282,
-     285,   284,   286,   287,   289,   288,   290,   290,   291,   291,
-     293,   292,   295,   294,   296,   296,   297,   297,   298,   298,
-     298,   298,   298,   298,   298,   298,   299,   300,   301,   303,
-     302,   305,   304,   307,   306,   308,   310,   309,   311,   313,
-     312,   314,   314,   315,   315,   317,   316,   319,   318,   320,
-     320,   321,   321,   322,   322,   322,   322,   322,   322,   323,
-     325,   324,   326,   327,   328,   330,   329,   331,   331,   332,
-     332,   334,   333,   336,   335,   337,   337,   338,   338,   338,
-     338,   340,   339,   342,   341,   344,   343,   345,   345,   346,
-     346,   348,   347,   350,   349,   351,   351,   352,   352,   352,
-     352,   352,   352,   352,   352,   354,   353,   355,   357,   356,
-     358,   359,   361,   360,   362,   362,   363,   363,   365,   364,
-     367,   366,   368,   368,   369,   369,   370,   370,   370,   370,
-     370,   370,   370,   370,   370,   372,   371,   374,   373,   376,
-     375,   378,   377,   380,   379,   382,   381,   384,   383,   386,
-     385,   388,   387,   390,   389,   391,   391,   392,   282,   393,
-     393,   394,   394,   395,   395,   395,   395,   396,   398,   397,
-     400,   399,   401,   401,   402,   402,   402,   402,   402,   402,
-     402,   404,   403,   405,   405,   405,   406,   408,   407,   409,
-     410,   411,   413,   412,   414,   414,   415,   415,   417,   416,
-     419,   418,   421,   420,   423,   422,   424,   424,   425,   425,
-     425,   425,   425,   425,   425,   425,   425,   425,   425,   425,
-     425,   425,   425,   426,   428,   427,   430,   429,   431,   433,
-     432,   434,   435,   437,   436,   438,   438,   440,   439,   441,
-     442,   443,   445,   444,   446,   446,   446,   446,   446,   448,
-     447,   450,   449,   452,   451,   454,   453,   455,   455,   456,
-     458,   457,   459,   459,   461,   460,   462,   462,   463,   463,
-     463,   463,   463,   464,   466,   465,   468,   467,   469,   469,
-     471,   470,   472,   472,   473,   473,   473,   473,   475,   474,
-     476,   477,   478
+       0,   151,   153,   152,   154,   152,   155,   152,   156,   152,
+     157,   152,   158,   152,   159,   152,   160,   152,   161,   152,
+     162,   152,   163,   152,   164,   152,   165,   165,   165,   165,
+     165,   165,   165,   166,   168,   167,   169,   170,   170,   171,
+     171,   173,   172,   174,   174,   175,   175,   177,   176,   178,
+     178,   179,   179,   180,   182,   181,   183,   183,   184,   184,
+     184,   184,   184,   186,   185,   188,   187,   189,   189,   190,
+     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
+     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
+     190,   191,   192,   193,   194,   195,   197,   196,   199,   198,
+     200,   200,   201,   201,   203,   202,   204,   206,   205,   208,
+     207,   209,   209,   210,   210,   210,   210,   210,   210,   210,
+     210,   210,   210,   210,   210,   210,   212,   211,   213,   213,
+     213,   213,   215,   214,   217,   216,   219,   218,   220,   222,
+     221,   223,   224,   225,   226,   228,   227,   230,   229,   232,
+     231,   233,   233,   234,   234,   235,   236,   238,   237,   239,
+     239,   240,   240,   240,   241,   242,   244,   243,   246,   245,
+     247,   247,   248,   248,   250,   249,   252,   251,   253,   253,
+     253,   254,   254,   256,   255,   258,   257,   260,   259,   261,
+     261,   262,   262,   262,   262,   262,   262,   263,   264,   265,
+     266,   267,   268,   270,   269,   271,   271,   272,   272,   274,
+     273,   276,   275,   277,   277,   278,   278,   278,   278,   278,
+     278,   278,   278,   278,   278,   278,   278,   278,   278,   278,
+     278,   278,   280,   279,   282,   281,   284,   283,   286,   285,
+     288,   287,   289,   289,   289,   290,   291,   293,   292,   294,
+     294,   295,   295,   297,   296,   299,   298,   300,   300,   301,
+     301,   302,   302,   302,   302,   302,   302,   302,   302,   303,
+     304,   305,   307,   306,   309,   308,   311,   310,   312,   314,
+     313,   315,   317,   316,   318,   318,   319,   319,   321,   320,
+     323,   322,   324,   324,   325,   325,   326,   326,   326,   326,
+     326,   326,   327,   329,   328,   330,   331,   332,   334,   333,
+     335,   335,   336,   336,   338,   337,   340,   339,   341,   341,
+     342,   342,   342,   342,   344,   343,   346,   345,   348,   347,
+     349,   349,   350,   350,   352,   351,   354,   353,   355,   355,
+     356,   356,   356,   356,   356,   356,   356,   356,   358,   357,
+     359,   361,   360,   362,   363,   365,   364,   366,   366,   367,
+     367,   369,   368,   371,   370,   372,   372,   373,   373,   374,
+     374,   374,   374,   374,   374,   374,   374,   374,   376,   375,
+     378,   377,   380,   379,   382,   381,   384,   383,   386,   385,
+     388,   387,   390,   389,   392,   391,   394,   393,   395,   395,
+     396,   285,   397,   397,   398,   398,   399,   399,   399,   399,
+     400,   402,   401,   404,   403,   405,   405,   406,   406,   406,
+     406,   406,   406,   406,   408,   407,   409,   409,   409,   410,
+     412,   411,   413,   414,   415,   417,   416,   418,   418,   419,
+     419,   421,   420,   423,   422,   425,   424,   427,   426,   428,
+     428,   429,   429,   429,   429,   429,   429,   429,   429,   429,
+     429,   429,   429,   429,   429,   429,   430,   432,   431,   434,
+     433,   435,   437,   436,   438,   439,   441,   440,   442,   442,
+     444,   443,   445,   446,   447,   449,   448,   450,   450,   450,
+     450,   450,   452,   451,   454,   453,   456,   455,   458,   457,
+     459,   459,   460,   462,   461,   463,   463,   465,   464,   466,
+     466,   467,   467,   467,   467,   467,   468,   470,   469,   472,
+     471,   473,   473,   475,   474,   476,   476,   477,   477,   477,
+     477,   479,   478,   480,   481,   482
   };
 
   const unsigned char
@@ -4005,36 +4032,36 @@ namespace isc { namespace dhcp {
        4,     0,     4,     1,     3,     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,
-       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,     1,     1,     1,     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,     1,     1,     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,     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,     1,     1,     1,     1,     0,     4,
-       3,     3,     3
+       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,     1,     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,     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,     1,     1,     1,
+       1,     0,     4,     3,     3,     3
   };
 
 
@@ -4059,7 +4086,8 @@ namespace isc { namespace dhcp {
   "\"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\"",
+  "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"", "\"disabled\"",
+  "\"out-of-pool\"", "\"all\"", "\"mac-sources\"",
   "\"relay-supplied-options\"", "\"host-reservation-identifiers\"",
   "\"client-classes\"", "\"test\"", "\"client-class\"", "\"reservations\"",
   "\"ip-addresses\"", "\"prefixes\"", "\"duid\"", "\"hw-address\"",
@@ -4117,7 +4145,7 @@ namespace isc { namespace dhcp {
   "subnet6_list_content", "not_empty_subnet6_list", "subnet6", "$@41",
   "sub_subnet6", "$@42", "subnet6_params", "subnet6_param", "subnet",
   "$@43", "interface", "$@44", "interface_id", "$@45", "client_class",
-  "$@46", "reservation_mode", "$@47", "id", "rapid_commit",
+  "$@46", "reservation_mode", "$@47", "hr_mode", "id", "rapid_commit",
   "option_def_list", "$@48", "option_def_list_content",
   "not_empty_option_def_list", "option_def_entry", "$@49",
   "sub_option_def", "$@50", "option_def_params",
@@ -4171,60 +4199,60 @@ namespace isc { namespace dhcp {
   const unsigned short int
   Dhcp6Parser::yyrline_[] =
   {
-       0,   228,   228,   228,   229,   229,   230,   230,   231,   231,
-     232,   232,   233,   233,   234,   234,   235,   235,   236,   236,
-     237,   237,   238,   238,   239,   239,   247,   248,   249,   250,
-     251,   252,   253,   256,   261,   261,   272,   275,   276,   279,
-     283,   290,   290,   297,   298,   301,   305,   312,   312,   319,
-     320,   323,   327,   338,   348,   348,   360,   361,   365,   366,
-     367,   368,   369,   372,   372,   389,   389,   397,   398,   403,
-     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
-     414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
-     424,   427,   432,   437,   442,   447,   452,   452,   462,   462,
-     470,   471,   474,   475,   478,   478,   488,   494,   494,   504,
-     504,   514,   515,   518,   519,   520,   521,   522,   523,   524,
-     525,   526,   527,   528,   529,   530,   533,   533,   540,   541,
-     542,   543,   546,   546,   554,   554,   562,   562,   570,   575,
-     575,   583,   588,   593,   598,   603,   603,   611,   611,   620,
-     620,   630,   631,   634,   635,   638,   643,   648,   648,   658,
-     659,   662,   663,   664,   667,   672,   679,   679,   689,   689,
-     699,   700,   703,   704,   707,   707,   715,   715,   723,   724,
-     725,   728,   729,   732,   732,   740,   740,   748,   748,   758,
-     759,   762,   763,   764,   765,   766,   767,   770,   775,   780,
-     785,   790,   795,   803,   803,   816,   817,   820,   821,   828,
-     828,   851,   851,   860,   861,   865,   866,   867,   868,   869,
-     870,   871,   872,   873,   874,   875,   876,   877,   878,   879,
-     880,   881,   884,   884,   892,   892,   900,   900,   908,   908,
-     916,   916,   924,   929,   938,   938,   950,   951,   954,   955,
-     960,   960,   971,   971,   981,   982,   985,   986,   989,   990,
-     991,   992,   993,   994,   995,   996,   999,  1001,  1006,  1008,
-    1008,  1016,  1016,  1024,  1024,  1032,  1034,  1034,  1042,  1051,
-    1051,  1063,  1064,  1069,  1070,  1075,  1075,  1086,  1086,  1097,
-    1098,  1103,  1104,  1109,  1110,  1111,  1112,  1113,  1114,  1117,
-    1119,  1119,  1127,  1129,  1131,  1139,  1139,  1151,  1152,  1155,
-    1156,  1159,  1159,  1167,  1167,  1175,  1176,  1179,  1180,  1181,
-    1182,  1185,  1185,  1193,  1193,  1203,  1203,  1215,  1216,  1219,
-    1220,  1223,  1223,  1231,  1231,  1239,  1240,  1243,  1244,  1245,
-    1246,  1247,  1248,  1249,  1250,  1253,  1253,  1261,  1266,  1266,
-    1274,  1279,  1287,  1287,  1297,  1298,  1301,  1302,  1305,  1305,
-    1313,  1313,  1321,  1322,  1325,  1326,  1330,  1331,  1332,  1333,
-    1334,  1335,  1336,  1337,  1338,  1341,  1341,  1351,  1351,  1361,
-    1361,  1369,  1369,  1377,  1377,  1385,  1385,  1393,  1393,  1406,
-    1406,  1416,  1416,  1427,  1427,  1437,  1438,  1441,  1441,  1449,
-    1450,  1453,  1454,  1457,  1458,  1459,  1460,  1463,  1465,  1465,
-    1476,  1476,  1486,  1487,  1490,  1491,  1492,  1493,  1494,  1495,
-    1496,  1499,  1499,  1506,  1507,  1508,  1511,  1516,  1516,  1524,
-    1529,  1536,  1543,  1543,  1553,  1554,  1557,  1558,  1561,  1561,
-    1569,  1569,  1579,  1579,  1589,  1589,  1597,  1598,  1601,  1602,
-    1603,  1604,  1605,  1606,  1607,  1608,  1609,  1610,  1611,  1612,
-    1613,  1614,  1615,  1618,  1623,  1623,  1631,  1631,  1639,  1644,
-    1644,  1652,  1657,  1662,  1662,  1670,  1671,  1674,  1674,  1682,
-    1687,  1692,  1697,  1697,  1705,  1708,  1711,  1714,  1717,  1723,
-    1723,  1733,  1733,  1740,  1740,  1752,  1752,  1765,  1766,  1770,
-    1774,  1774,  1786,  1787,  1791,  1791,  1799,  1800,  1803,  1804,
-    1805,  1806,  1807,  1810,  1815,  1815,  1823,  1823,  1833,  1834,
-    1837,  1837,  1845,  1846,  1849,  1850,  1851,  1852,  1855,  1855,
-    1863,  1868,  1873
+       0,   232,   232,   232,   233,   233,   234,   234,   235,   235,
+     236,   236,   237,   237,   238,   238,   239,   239,   240,   240,
+     241,   241,   242,   242,   243,   243,   251,   252,   253,   254,
+     255,   256,   257,   260,   265,   265,   276,   279,   280,   283,
+     287,   294,   294,   301,   302,   305,   309,   316,   316,   323,
+     324,   327,   331,   342,   352,   352,   364,   365,   369,   370,
+     371,   372,   373,   376,   376,   393,   393,   401,   402,   407,
+     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
+     418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
+     428,   431,   436,   441,   446,   451,   456,   456,   466,   466,
+     474,   475,   478,   479,   482,   482,   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,   642,   647,   652,   652,   662,
+     663,   666,   667,   668,   671,   676,   683,   683,   693,   693,
+     703,   704,   707,   708,   711,   711,   719,   719,   727,   728,
+     729,   732,   733,   736,   736,   744,   744,   752,   752,   762,
+     763,   766,   767,   768,   769,   770,   771,   774,   779,   784,
+     789,   794,   799,   807,   807,   820,   821,   824,   825,   832,
+     832,   855,   855,   864,   865,   869,   870,   871,   872,   873,
+     874,   875,   876,   877,   878,   879,   880,   881,   882,   883,
+     884,   885,   888,   888,   896,   896,   904,   904,   912,   912,
+     920,   920,   927,   928,   929,   932,   937,   946,   946,   958,
+     959,   962,   963,   968,   968,   979,   979,   989,   990,   993,
+     994,   997,   998,   999,  1000,  1001,  1002,  1003,  1004,  1007,
+    1009,  1014,  1016,  1016,  1024,  1024,  1032,  1032,  1040,  1042,
+    1042,  1050,  1059,  1059,  1071,  1072,  1077,  1078,  1083,  1083,
+    1094,  1094,  1105,  1106,  1111,  1112,  1117,  1118,  1119,  1120,
+    1121,  1122,  1125,  1127,  1127,  1135,  1137,  1139,  1147,  1147,
+    1159,  1160,  1163,  1164,  1167,  1167,  1175,  1175,  1183,  1184,
+    1187,  1188,  1189,  1190,  1193,  1193,  1201,  1201,  1211,  1211,
+    1223,  1224,  1227,  1228,  1231,  1231,  1239,  1239,  1247,  1248,
+    1251,  1252,  1253,  1254,  1255,  1256,  1257,  1258,  1261,  1261,
+    1269,  1274,  1274,  1282,  1287,  1295,  1295,  1305,  1306,  1309,
+    1310,  1313,  1313,  1321,  1321,  1329,  1330,  1333,  1334,  1338,
+    1339,  1340,  1341,  1342,  1343,  1344,  1345,  1346,  1349,  1349,
+    1359,  1359,  1369,  1369,  1377,  1377,  1385,  1385,  1393,  1393,
+    1401,  1401,  1414,  1414,  1424,  1424,  1435,  1435,  1445,  1446,
+    1449,  1449,  1457,  1458,  1461,  1462,  1465,  1466,  1467,  1468,
+    1471,  1473,  1473,  1484,  1484,  1494,  1495,  1498,  1499,  1500,
+    1501,  1502,  1503,  1504,  1507,  1507,  1514,  1515,  1516,  1519,
+    1524,  1524,  1532,  1537,  1544,  1551,  1551,  1561,  1562,  1565,
+    1566,  1569,  1569,  1577,  1577,  1587,  1587,  1597,  1597,  1605,
+    1606,  1609,  1610,  1611,  1612,  1613,  1614,  1615,  1616,  1617,
+    1618,  1619,  1620,  1621,  1622,  1623,  1626,  1631,  1631,  1639,
+    1639,  1647,  1652,  1652,  1660,  1665,  1670,  1670,  1678,  1679,
+    1682,  1682,  1690,  1695,  1700,  1705,  1705,  1713,  1716,  1719,
+    1722,  1725,  1731,  1731,  1741,  1741,  1748,  1748,  1760,  1760,
+    1773,  1774,  1778,  1782,  1782,  1794,  1795,  1799,  1799,  1807,
+    1808,  1811,  1812,  1813,  1814,  1815,  1818,  1823,  1823,  1831,
+    1831,  1841,  1842,  1845,  1845,  1853,  1854,  1857,  1858,  1859,
+    1860,  1863,  1863,  1871,  1876,  1881
   };
 
   // Print the state stack on the debug stream.
@@ -4259,8 +4287,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4263 "dhcp6_parser.cc" // lalr1.cc:1167
-#line 1878 "dhcp6_parser.yy" // lalr1.cc:1168
+#line 4291 "dhcp6_parser.cc" // lalr1.cc:1167
+#line 1886 "dhcp6_parser.yy" // lalr1.cc:1168
 
 
 void
index 6148a91fcc628bcd91a42ad8f7a5f0e5095f0635..085dd1cc9599f18590da18e343f9082fc10f3608 100644 (file)
@@ -307,6 +307,7 @@ namespace isc { namespace dhcp {
       // value
       // map_value
       // db_type
+      // hr_mode
       // duid_type
       // ncr_protocol_value
       // replace_client_name_value
@@ -405,92 +406,95 @@ namespace isc { namespace dhcp {
         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_FLEX_ID = 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_SERVER_ID = 342,
-        TOKEN_LLT = 343,
-        TOKEN_EN = 344,
-        TOKEN_LL = 345,
-        TOKEN_IDENTIFIER = 346,
-        TOKEN_HTYPE = 347,
-        TOKEN_TIME = 348,
-        TOKEN_ENTERPRISE_ID = 349,
-        TOKEN_DHCP4O6_PORT = 350,
-        TOKEN_CONTROL_SOCKET = 351,
-        TOKEN_SOCKET_TYPE = 352,
-        TOKEN_SOCKET_NAME = 353,
-        TOKEN_DHCP_DDNS = 354,
-        TOKEN_ENABLE_UPDATES = 355,
-        TOKEN_QUALIFYING_SUFFIX = 356,
-        TOKEN_SERVER_IP = 357,
-        TOKEN_SERVER_PORT = 358,
-        TOKEN_SENDER_IP = 359,
-        TOKEN_SENDER_PORT = 360,
-        TOKEN_MAX_QUEUE_SIZE = 361,
-        TOKEN_NCR_PROTOCOL = 362,
-        TOKEN_NCR_FORMAT = 363,
-        TOKEN_ALWAYS_INCLUDE_FQDN = 364,
-        TOKEN_OVERRIDE_NO_UPDATE = 365,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 366,
-        TOKEN_REPLACE_CLIENT_NAME = 367,
-        TOKEN_GENERATED_PREFIX = 368,
-        TOKEN_UDP = 369,
-        TOKEN_TCP = 370,
-        TOKEN_JSON = 371,
-        TOKEN_WHEN_PRESENT = 372,
-        TOKEN_NEVER = 373,
-        TOKEN_ALWAYS = 374,
-        TOKEN_WHEN_NOT_PRESENT = 375,
-        TOKEN_LOGGING = 376,
-        TOKEN_LOGGERS = 377,
-        TOKEN_OUTPUT_OPTIONS = 378,
-        TOKEN_OUTPUT = 379,
-        TOKEN_DEBUGLEVEL = 380,
-        TOKEN_SEVERITY = 381,
-        TOKEN_FLUSH = 382,
-        TOKEN_MAXSIZE = 383,
-        TOKEN_MAXVER = 384,
-        TOKEN_DHCP4 = 385,
-        TOKEN_DHCPDDNS = 386,
-        TOKEN_TOPLEVEL_JSON = 387,
-        TOKEN_TOPLEVEL_DHCP6 = 388,
-        TOKEN_SUB_DHCP6 = 389,
-        TOKEN_SUB_INTERFACES6 = 390,
-        TOKEN_SUB_SUBNET6 = 391,
-        TOKEN_SUB_POOL6 = 392,
-        TOKEN_SUB_PD_POOL = 393,
-        TOKEN_SUB_RESERVATION = 394,
-        TOKEN_SUB_OPTION_DEF = 395,
-        TOKEN_SUB_OPTION_DATA = 396,
-        TOKEN_SUB_HOOKS_LIBRARY = 397,
-        TOKEN_SUB_DHCP_DDNS = 398,
-        TOKEN_STRING = 399,
-        TOKEN_INTEGER = 400,
-        TOKEN_FLOAT = 401,
-        TOKEN_BOOLEAN = 402
+        TOKEN_DISABLED = 317,
+        TOKEN_OUT_OF_POOL = 318,
+        TOKEN_ALL = 319,
+        TOKEN_MAC_SOURCES = 320,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 321,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 322,
+        TOKEN_CLIENT_CLASSES = 323,
+        TOKEN_TEST = 324,
+        TOKEN_CLIENT_CLASS = 325,
+        TOKEN_RESERVATIONS = 326,
+        TOKEN_IP_ADDRESSES = 327,
+        TOKEN_PREFIXES = 328,
+        TOKEN_DUID = 329,
+        TOKEN_HW_ADDRESS = 330,
+        TOKEN_HOSTNAME = 331,
+        TOKEN_FLEX_ID = 332,
+        TOKEN_RELAY = 333,
+        TOKEN_IP_ADDRESS = 334,
+        TOKEN_HOOKS_LIBRARIES = 335,
+        TOKEN_LIBRARY = 336,
+        TOKEN_PARAMETERS = 337,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 338,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 339,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 340,
+        TOKEN_HOLD_RECLAIMED_TIME = 341,
+        TOKEN_MAX_RECLAIM_LEASES = 342,
+        TOKEN_MAX_RECLAIM_TIME = 343,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 344,
+        TOKEN_SERVER_ID = 345,
+        TOKEN_LLT = 346,
+        TOKEN_EN = 347,
+        TOKEN_LL = 348,
+        TOKEN_IDENTIFIER = 349,
+        TOKEN_HTYPE = 350,
+        TOKEN_TIME = 351,
+        TOKEN_ENTERPRISE_ID = 352,
+        TOKEN_DHCP4O6_PORT = 353,
+        TOKEN_CONTROL_SOCKET = 354,
+        TOKEN_SOCKET_TYPE = 355,
+        TOKEN_SOCKET_NAME = 356,
+        TOKEN_DHCP_DDNS = 357,
+        TOKEN_ENABLE_UPDATES = 358,
+        TOKEN_QUALIFYING_SUFFIX = 359,
+        TOKEN_SERVER_IP = 360,
+        TOKEN_SERVER_PORT = 361,
+        TOKEN_SENDER_IP = 362,
+        TOKEN_SENDER_PORT = 363,
+        TOKEN_MAX_QUEUE_SIZE = 364,
+        TOKEN_NCR_PROTOCOL = 365,
+        TOKEN_NCR_FORMAT = 366,
+        TOKEN_ALWAYS_INCLUDE_FQDN = 367,
+        TOKEN_OVERRIDE_NO_UPDATE = 368,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 369,
+        TOKEN_REPLACE_CLIENT_NAME = 370,
+        TOKEN_GENERATED_PREFIX = 371,
+        TOKEN_UDP = 372,
+        TOKEN_TCP = 373,
+        TOKEN_JSON = 374,
+        TOKEN_WHEN_PRESENT = 375,
+        TOKEN_NEVER = 376,
+        TOKEN_ALWAYS = 377,
+        TOKEN_WHEN_NOT_PRESENT = 378,
+        TOKEN_LOGGING = 379,
+        TOKEN_LOGGERS = 380,
+        TOKEN_OUTPUT_OPTIONS = 381,
+        TOKEN_OUTPUT = 382,
+        TOKEN_DEBUGLEVEL = 383,
+        TOKEN_SEVERITY = 384,
+        TOKEN_FLUSH = 385,
+        TOKEN_MAXSIZE = 386,
+        TOKEN_MAXVER = 387,
+        TOKEN_DHCP4 = 388,
+        TOKEN_DHCPDDNS = 389,
+        TOKEN_TOPLEVEL_JSON = 390,
+        TOKEN_TOPLEVEL_DHCP6 = 391,
+        TOKEN_SUB_DHCP6 = 392,
+        TOKEN_SUB_INTERFACES6 = 393,
+        TOKEN_SUB_SUBNET6 = 394,
+        TOKEN_SUB_POOL6 = 395,
+        TOKEN_SUB_PD_POOL = 396,
+        TOKEN_SUB_RESERVATION = 397,
+        TOKEN_SUB_OPTION_DEF = 398,
+        TOKEN_SUB_OPTION_DATA = 399,
+        TOKEN_SUB_HOOKS_LIBRARY = 400,
+        TOKEN_SUB_DHCP_DDNS = 401,
+        TOKEN_STRING = 402,
+        TOKEN_INTEGER = 403,
+        TOKEN_FLOAT = 404,
+        TOKEN_BOOLEAN = 405
       };
     };
 
@@ -845,6 +849,18 @@ namespace isc { namespace dhcp {
     symbol_type
     make_RESERVATION_MODE (const location_type& l);
 
+    static inline
+    symbol_type
+    make_DISABLED (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OUT_OF_POOL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ALL (const location_type& l);
+
     static inline
     symbol_type
     make_MAC_SOURCES (const location_type& l);
@@ -1394,12 +1410,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 792,     ///< Last index in yytable_.
-      yynnts_ = 331,  ///< Number of nonterminal symbols.
+      yylast_ = 795,     ///< Last index in yytable_.
+      yynnts_ = 332,  ///< Number of nonterminal symbols.
       yyfinal_ = 26, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 148  ///< Number of tokens.
+      yyntokens_ = 151  ///< Number of tokens.
     };
 
 
@@ -1456,9 +1472,9 @@ namespace isc { namespace dhcp {
      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,   143,   144,
-     145,   146,   147
+     145,   146,   147,   148,   149,   150
     };
-    const unsigned int user_token_number_max_ = 402;
+    const unsigned int user_token_number_max_ = 405;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1491,28 +1507,29 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 162: // value
-      case 166: // map_value
-      case 210: // db_type
-      case 405: // duid_type
-      case 438: // ncr_protocol_value
-      case 446: // replace_client_name_value
+      case 165: // value
+      case 169: // map_value
+      case 213: // db_type
+      case 289: // hr_mode
+      case 409: // duid_type
+      case 442: // ncr_protocol_value
+      case 450: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 147: // "boolean"
+      case 150: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 146: // "floating point"
+      case 149: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 145: // "integer"
+      case 148: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 144: // "constant string"
+      case 147: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1533,28 +1550,29 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 162: // value
-      case 166: // map_value
-      case 210: // db_type
-      case 405: // duid_type
-      case 438: // ncr_protocol_value
-      case 446: // replace_client_name_value
+      case 165: // value
+      case 169: // map_value
+      case 213: // db_type
+      case 289: // hr_mode
+      case 409: // duid_type
+      case 442: // ncr_protocol_value
+      case 450: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 147: // "boolean"
+      case 150: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 146: // "floating point"
+      case 149: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 145: // "integer"
+      case 148: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 144: // "constant string"
+      case 147: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1634,28 +1652,29 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 162: // value
-      case 166: // map_value
-      case 210: // db_type
-      case 405: // duid_type
-      case 438: // ncr_protocol_value
-      case 446: // replace_client_name_value
+      case 165: // value
+      case 169: // map_value
+      case 213: // db_type
+      case 289: // hr_mode
+      case 409: // duid_type
+      case 442: // ncr_protocol_value
+      case 450: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 147: // "boolean"
+      case 150: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 146: // "floating point"
+      case 149: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 145: // "integer"
+      case 148: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 144: // "constant string"
+      case 147: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1682,28 +1701,29 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 162: // value
-      case 166: // map_value
-      case 210: // db_type
-      case 405: // duid_type
-      case 438: // ncr_protocol_value
-      case 446: // replace_client_name_value
+      case 165: // value
+      case 169: // map_value
+      case 213: // db_type
+      case 289: // hr_mode
+      case 409: // duid_type
+      case 442: // ncr_protocol_value
+      case 450: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 147: // "boolean"
+      case 150: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 146: // "floating point"
+      case 149: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 145: // "integer"
+      case 148: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 144: // "constant string"
+      case 147: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1776,7 +1796,8 @@ namespace isc { namespace dhcp {
      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,   398,   399,   400,   401,   402
+     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
+     405
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -2141,6 +2162,24 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_RESERVATION_MODE, l);
   }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DISABLED (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DISABLED, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OUT_OF_POOL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUT_OF_POOL, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ALL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ALL, l);
+  }
+
   Dhcp6Parser::symbol_type
   Dhcp6Parser::make_MAC_SOURCES (const location_type& l)
   {
@@ -2660,7 +2699,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2664 "dhcp6_parser.h" // lalr1.cc:377
+#line 2703 "dhcp6_parser.h" // lalr1.cc:377
 
 
 
index d37a3e38518b0d88c635114bd454318e10048c95..5f8f15d370f42dee5e13dbd581f16c1423d3cff1 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201701262349
+// Generated 201707061112
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index cc4542e13b38301ce2bdae0222688f50a1bd3d99..33b298ad704307096e4c8210c618f73e3fbcdacc 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201701262349
+// Generated 201707061112
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index 382abc86fd9d980bed2d074b2ebf03e022d9bc94..f153a3ee2db499fdb15826881833e1db66ac7298 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201701262349
+// Generated 201707061112
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++