]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#719] Regen lex and parser
authorFrancis Dupont <fdupont@isc.org>
Mon, 13 Mar 2023 14:07:02 +0000 (14:07 +0000)
committerFrancis Dupont <fdupont@isc.org>
Wed, 15 Mar 2023 12:49:21 +0000 (13:49 +0100)
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/dhcp6/location.hh

index 76e3d3a7ceb2da49b3a3c92cbc761a4c14ffe122..3217b6324bb887de760f78fbb896ef9906386653 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 222
-#define YY_END_OF_BUFFER 223
+#define YY_NUM_RULES 223
+#define YY_END_OF_BUFFER 224
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,21 +700,21 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[2172] =
+static const flex_int16_t yy_accept[2192] =
     {   0,
-      215,  215,    0,    0,    0,    0,    0,    0,    0,    0,
-      223,  221,   10,   11,  221,    1,  215,  212,  215,  215,
-      221,  214,  213,  221,  221,  221,  221,  221,  208,  209,
-      221,  221,  221,  210,  211,    5,    5,    5,  221,  221,
-      221,   10,   11,    0,    0,  203,    0,    0,    0,    0,
+      216,  216,    0,    0,    0,    0,    0,    0,    0,    0,
+      224,  222,   10,   11,  222,    1,  216,  213,  216,  216,
+      222,  215,  214,  222,  222,  222,  222,  222,  209,  210,
+      222,  222,  222,  211,  212,    5,    5,    5,  222,  222,
+      222,   10,   11,    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,    1,  215,
-      215,    0,  214,  215,    3,    2,    6,    0,  215,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    1,  216,
+      216,    0,  215,  216,    3,    2,    6,    0,  216,    0,
         0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
 
-      204,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  206,    0,    0,    0,    0,    0,    0,
+      205,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  207,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -724,11 +724,11 @@ static const flex_int16_t yy_accept[2172] =
         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,  205,  207,    0,
+        0,    0,    0,    0,    0,    0,    0,  206,  208,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    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,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   94,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -736,127 +736,128 @@ static const flex_int16_t yy_accept[2172] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  220,  218,
-        0,  217,  216,    0,    0,    0,    0,    0,    0,    0,
-      180,    0,  179,    0,    0,  100,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  221,
+      219,    0,  218,  217,    0,    0,    0,    0,    0,    0,
+        0,  180,    0,  179,    0,    0,  100,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   97,    0,
 
+       97,    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,    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,    0,    0,    0,    0,    0,    0,
+       19,    0,    0,    0,    0,    0,  220,  217,    0,    0,
+        0,    0,    0,    0,  181,    0,  183,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  104,    0,    0,    0,    0,    0,    0,   85,    0,
+        0,    0,    0,    0,    0,  127,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   41,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   19,    0,
-        0,    0,    0,    0,  219,  216,    0,    0,    0,    0,
-        0,    0,  181,    0,  183,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  104,
-        0,    0,    0,    0,    0,    0,   85,    0,    0,    0,
-        0,    0,    0,  127,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,   41,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   84,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   84,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   89,
-        0,   42,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   89,    0,   42,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  123,    0,    0,   35,    0,    0,
-       39,    0,    0,    0,    0,    0,    0,    0,   12,  185,
+        0,    0,    0,    0,    0,    0,    0,  123,    0,    0,
+       35,    0,    0,   39,    0,    0,    0,    0,    0,    0,
 
-      184,    0,    0,    0,    0,  137,    0,    0,    0,    0,
+        0,   12,  185,  184,    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,  115,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  115,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   37,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   88,
+        0,    0,    0,    0,    0,   37,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   88,    0,    0,    0,    0,    0,    0,
 
-      138,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  133,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  138,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  133,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        7,    0,    0,  186,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    7,    0,    0,  186,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   99,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   99,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,  117,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  113,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  117,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  113,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   92,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   92,    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,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   91,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  131,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  143,  111,    0,
-        0,    0,    0,    0,    0,  116,   36,    0,    0,    0,
-        0,    0,    0,   50,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  118,   43,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  131,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  143,  111,    0,    0,    0,    0,    0,
+        0,  116,   36,    0,    0,    0,    0,    0,    0,   50,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   79,    0,    0,
+      118,   43,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   79,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      162,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  162,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   96,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      132,    0,    0,    0,    0,    0,    0,    0,   58,    0,
+        0,    0,   96,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  132,    0,    0,
+        0,    0,    0,    0,    0,   58,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    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,   34,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   40,    0,    0,    0,    0,    0,   34,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      119,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   68,    0,    0,    0,    0,    0,    0,   57,
-        0,    0,    0,  129,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  119,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      163,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   68,
+        0,    0,    0,    0,    0,    0,   57,    0,    0,    0,
+      129,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  163,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   93,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   93,
         0,    0,    0,    0,    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,    0,  168,    0,    0,
-        0,  166,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  190,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  130,    0,    0,    0,    0,    0,    0,
-        0,  134,    0,    0,    0,    0,    0,    0,    0,  114,
+        0,    0,    0,   24,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  168,    0,    0,    0,  166,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  190,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  130,    0,    0,    0,    0,    0,    0,    0,  134,
+        0,    0,    0,    0,    0,    0,    0,  114,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  128,
 
-        0,   23,    0,  139,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  172,    0,
-       87,    0,    0,    0,   82,    0,    0,    0,    0,    0,
-        0,  142,    0,   38,    0,  161,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  128,    0,
+       23,    0,  139,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  172,    0,   87,
+        0,    0,    0,   82,    0,    0,    0,    0,    0,    0,
+      142,    0,   38,    0,  161,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   66,    0,    0,    0,    0,    0,    0,    0,  107,
-      108,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   86,    0,    0,    0,    0,    0,   59,
+       66,    0,    0,    0,    0,    0,    0,    0,  107,  108,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   86,    0,    0,    0,    0,    0,   59,    0,
         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,  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,    0,    0,    0,
       194,    0,   83,   98,    0,    0,    0,    0,    0,    0,
@@ -865,74 +866,75 @@ static const flex_int16_t yy_accept[2172] =
       157,    0,    0,    0,    0,    0,    0,    0,    0,   22,
         0,    0,    0,    0,    0,  182,    0,    0,    0,    0,
         0,  122,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  151,
 
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  151,
         0,    0,    0,  160,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  140,    0,   15,    0,
-        0,   44,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  171,    0,    0,    0,    0,    0,    0,    0,    0,
-       46,   64,    0,    0,  135,    0,    0,    0,  126,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   56,    0,   90,    0,    0,  188,    0,
-        0,  193,    0,  110,    0,    0,    0,  200,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  140,    0,   15,
+        0,    0,   44,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  171,    0,    0,    0,    0,    0,    0,    0,
+        0,   46,   64,    0,    0,  135,    0,    0,    0,  126,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   56,    0,   90,    0,    0,  188,
+        0,    0,  193,    0,  110,    0,    0,    0,  200,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   14,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  124,    0,
-        0,    0,   47,    0,    0,  196,    0,    0,  120,   31,
-        0,    0,    0,  156,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  191,    0,  164,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   29,    0,
-        0,    0,    0,   28,    0,    0,  170,    0,    0,    0,
-
-       55,    0,    0,    0,    0,    0,  112,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   60,    0,    0,  109,    0,    0,    0,
-       45,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  141,
-        0,    0,    0,   30,    0,    0,    0,    0,  192,    0,
-        0,    0,    0,    0,  152,    0,    0,    0,    0,    0,
+       14,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      124,    0,    0,    0,   47,    0,    0,  196,    0,    0,
+      120,   31,    0,    0,    0,  156,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  191,    0,
+      164,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,   29,    0,    0,    0,    0,   28,    0,    0,  170,
+        0,    0,    0,   55,    0,    0,    0,    0,    0,  112,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   21,    0,    0,  195,    0,   81,    0,   51,    0,
-
-        0,    0,    0,  189,  187,    0,   32,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   17,    0,
-        0,    0,    0,    0,  176,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  149,    0,    0,    0,  125,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   95,
-        0,    0,    0,    0,    0,   52,    0,    0,    0,    0,
-       48,  154,    0,    0,    0,    0,    0,    0,    0,    0,
-       71,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  177,    0,   13,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  155,    0,  165,    0,    0,
-
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   60,    0,    0,  109,
+        0,    0,    0,   45,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  159,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  148,    0,   62,   61,   20,    0,
-      173,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  106,    0,    0,
+        0,    0,    0,  141,    0,    0,    0,   30,    0,    0,
+        0,    0,  192,    0,    0,    0,    0,    0,  152,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  147,    0,    0,    0,    0,    0,   54,    0,
-       67,    0,   49,  175,    0,  101,    0,    0,    0,    0,
-        0,    0,    0,    0,   80,    0,    0,    0,    0,    0,
 
-        0,    0,   77,    0,    0,    0,    0,    0,   16,    0,
+        0,    0,    0,    0,    0,   21,    0,    0,  195,    0,
+       81,    0,   51,    0,    0,    0,    0,  189,  187,    0,
+       32,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   17,    0,    0,    0,    0,    0,    0,  176,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  149,
+        0,    0,    0,  125,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   95,    0,    0,    0,    0,    0,
+       52,    0,    0,    0,    0,   48,  154,    0,    0,    0,
+        0,    0,    0,    0,    0,   71,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  177,
+
+        0,   13,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  155,    0,  165,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   53,    0,    0,    0,    0,    0,    0,   75,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  159,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  148,    0,   62,   61,   20,    0,  173,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  106,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      147,    0,    0,    0,    0,    0,   54,    0,   67,    0,
+
+       49,  175,    0,  101,    0,    0,    0,    0,    0,    0,
+        0,    0,   80,    0,    0,    0,    0,    0,    0,    0,
+       77,    0,    0,    0,    0,    0,    0,   16,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       53,    0,    0,    0,    0,    0,    0,   75,    0,    0,
+        0,    0,    0,    0,    0,    0,  203,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,   33,    0,    0,   76,    0,
         0,    0,    0,  153,    0,    0,    0,    0,    0,  198,
       201,  174,    0,  121,  102,    0,    0,    0,    0,    0,
+
         0,    0,    0,   72,    0,    0,    0,    0,    0,    0,
         0,    0,    0,  145,    0,    0,    0,    0,    0,    0,
-
       150,    0,   74,    0,   65,    0,    0,    0,    0,    0,
         0,    0,  103,    0,    0,    0,    0,    0,    0,    0,
       144,    0,    0,  178,  202,  199,    0,    0,    0,    0,
@@ -941,6 +943,7 @@ static const flex_int16_t yy_accept[2172] =
         0,   78,    0,    0,  105,    0,   70,    0,    0,    0,
         0,    0,    0,    0,    0,   69,    0,  146,   26,  197,
         0
+
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -987,278 +990,281 @@ static const YY_CHAR yy_meta[74] =
         1,    1,    1
     } ;
 
-static const flex_int16_t yy_base[2180] =
+static const flex_int16_t yy_base[2200] =
     {   0,
         0,   72,   21,   31,   43,   51,   54,   60,   91,   99,
-     2563, 2564,   34, 2559,  145,    0,  207, 2564,  214,  221,
-       13,  228, 2564, 2539,  118,   25,    2,    6, 2564, 2564,
-       73,   11,   17, 2564, 2564, 2564,  104, 2547, 2500,    0,
-     2537,  108, 2554,   24,  262, 2564, 2496,   67, 2502,   84,
-       75,   88,  224,   91,   89,  290,  220, 2494,  206,  285,
-      236,  204,  197,   60,  291, 2503,  247,  308,  315,  214,
-      286, 2486,  212,  320,  344,  318, 2505,  335,    0,  385,
-      401,  415,  422,  427, 2564,    0, 2564,  441,  446,  236,
-      314,  238,  326,  353,  309, 2564, 2502, 2543, 2564,  263,
-
-     2564,  440, 2530,  308, 2499,  364,   10,  329,  359,  384,
-      391,  241, 2540,    0,  501,  408, 2482, 2479, 2483,  418,
-     2479,   80, 2487,  422, 2473, 2474, 2479,   78, 2489, 2472,
-     2481, 2471, 2480,  341,  343,  340, 2473, 2471,  410, 2519,
-     2523, 2469, 2462, 2515, 2455,  174, 2476, 2476, 2470,  340,
-     2463, 2461, 2462, 2454, 2459, 2453,  429, 2464,  412, 2449,
-     2448, 2462,  425, 2448,  422,  447, 2442,  497,  436,  471,
-     2463, 2460, 2461,  432, 2459, 2494, 2493,  450,  446, 2440,
-      471, 2441,  478, 2433, 2450, 2442, 2444,    0,  477,  483,
-      473,  496,  489,  515, 2440, 2564, 2485,  530, 2434,  499,
-
-      523,  530, 2488,  535, 2487,  532, 2486, 2564, 2564,  578,
-      441,  543, 2445, 2437, 2424, 2435, 2439, 2440, 2420, 2431,
-     2435, 2432, 2431,  475,  516, 2469, 2433, 2414, 2411, 2419,
-     2414, 2428, 2424, 2415, 2411, 2423, 2423, 2414, 2417, 2397,
-     2401, 2414, 2416, 2413, 2405, 2395, 2413, 2564, 2398, 2407,
-      523, 2445, 2391, 2400, 2442, 2389, 2399, 2402,  510, 2398,
-     2437, 2382, 2384, 2395, 2433,  557, 2378, 2436, 2390, 2370,
-     2385,  561, 2375, 2381,  522, 2372, 2370, 2370, 2376, 2367,
-     2366, 2373, 2363, 2422, 2378, 2377, 2371,  513, 2378, 2373,
-     2365, 2355, 2370, 2369, 2364, 2368, 2349, 2365, 2351, 2357,
-
-     2364, 2346,  527, 2351, 2348, 2347,  603, 2346, 2341, 2355,
-      570, 2354, 2397, 2356,  520, 2347, 2335,  560, 2564, 2564,
-      571, 2564, 2564, 2333,  559,  530, 2381,  585, 2391,  576,
-     2564, 2390, 2564, 2384,  626, 2564, 2346,  575, 2323, 2332,
-     2380, 2340, 2323, 2340, 2376, 2336, 2319, 2325, 2377, 2332,
-     2335, 2326, 2329, 2315, 2326, 2370, 2364, 2322, 2319,  619,
-     2325, 2365, 2300, 2358, 2311, 2306, 2303, 2306, 2353, 2310,
-     2299, 2315, 2349, 2295,  626, 2309, 2294, 2293, 2306, 2304,
-     2302, 2302, 2301, 2296, 2303, 2298, 2294,  593, 2292, 2295,
-     2290, 2276, 2288, 2284, 2334,  587,  583, 2328, 2564, 2292,
-
-     2326, 2276, 2275, 2274, 2267, 2269, 2281, 2272, 2279, 2260,
-     2277, 2272,  593, 2319, 2272, 2269, 2272, 2564, 2271,  604,
-     2261, 2273,  599, 2248, 2249, 2270, 2261, 2251, 2302, 2247,
-     2261,  609, 2247, 2259, 2258, 2257, 2252, 2294, 2254, 2253,
-     2252, 2251, 2234, 2242, 2292, 2251, 2231, 2289, 2564, 2231,
-     2230,  655, 2243, 2241, 2564, 2564, 2241, 2230, 2222,  583,
-     2281, 2280, 2564, 2279, 2564,  633,  681, 2238,  646, 2277,
-     2219, 2230, 2269, 2222, 2224, 2226, 2213, 2221, 2209, 2564,
-     2214, 2207, 2219, 2222, 2209, 2208, 2564,  651, 2210, 2207,
-      619, 2205, 2207, 2564, 2252, 2214, 2211, 2196, 2209, 2209,
-
-     2203,  673, 2210, 2198, 2191, 2242, 2564, 2189, 2205, 2239,
-     2200, 2198, 2196, 2197, 2181, 2190, 2232, 2183, 2182, 2177,
-     2176, 2227, 2171,  620, 2190, 2164, 2171, 2176, 2186, 2220,
-     2224, 2564, 2169, 2165,  680, 2163, 2172, 2171, 2165, 2172,
-     2156, 2156, 2166, 2154, 2168, 2168, 2156, 2152, 2150, 2564,
-     2207, 2564, 2149, 2160, 2199, 2144, 2143, 2148, 2157, 2151,
-     2145, 2154, 2196, 2190, 2152, 2136, 2131, 2151, 2126, 2132,
-      568, 2146, 2139, 2143, 2126, 2184, 2125, 2125, 2176, 2121,
-     2122, 2121, 2119, 2136, 2564, 2132, 2169, 2564, 2120, 2118,
-     2564, 2129, 2165, 2164, 2124, 2108, 2125, 2165, 2564, 2564,
-
-     2564,  656,  658, 2105,  712, 2564, 2115, 2114,  613, 2121,
-     2101, 2111, 2153, 2098, 2151, 2096, 2106, 2148, 2093, 2100,
-     2093, 2105, 2087, 2087, 2102, 2101,  658, 2100, 2099, 2099,
-     2081, 2086, 2127, 2094, 2091, 2085, 2130, 2074, 2090, 2088,
-     2088, 2564, 2073, 2070, 2128, 2083, 2075, 2081, 2072, 2080,
-     2065, 2116, 2080, 2062, 2074, 2066,  639, 2057, 2056, 2050,
-     2055, 2070, 2067, 2068, 2047, 2057, 2063, 2106, 2061, 2053,
-     2044, 2564, 2045, 2047, 2042, 2055, 2047, 2052, 2091, 2090,
-     2041,   16, 2050, 2087, 2032, 2085, 2032, 2035, 2028, 2564,
-     2042, 2021, 2025, 2039, 2034, 2030, 2075, 2027, 2034, 2072,
-
-     2564, 2017, 2031, 2030, 2033, 2014, 2066, 2065, 2012, 2063,
-     2023, 2007, 2060, 2059, 2564, 2004, 2018, 2017,  695, 2018,
-     2013,  203,  209,  278,  326,  341,  345,  367,  445,  457,
-     2564,  567,  574, 2564,  683,  675,  609,  636,  659,  669,
-      687,  681,  670,  666,  680,  681,  728,  692,  735,  695,
-      696,  732,  738,  692,  692,  702,  707,  693,  696,  707,
-      707,  691,  748,  701,  711,  714,  752,  715,  708,  712,
-      709,  711,  758,  721,  766,  723,  724, 2564,  728,  723,
-      714,  729,  734,  731,  719,  735,  734,  722,  736,  734,
-      742,  778,  740,  785,  786,  736,  728,  738,  785,  743,
-
-      793, 2564,  794,  747,  749,  745,  739,  755,  743,  801,
-      797,  760,  749,  762, 2564,  752,  763,  752,  765,  755,
-      768,  812,  813,  756,  767,  752,  775,  766,  755,  761,
-      816,  780,  764,  776,  820,  821,  768,  823,  787,  782,
-      787,  785,  829,  771,  783,  786,  790,  782,  779, 2564,
-      843,  802,  803,  791,  805,  795,  798,  809,  794,  801,
-      807,  808,  800,  814,  854,  830,  804,  818,  823,  820,
-      802,  809,  823,  868,  825,  822,  823,  821,  830, 2564,
-      826,  821,  836,  833,  819,  821,  840,  837,  825,  832,
-      833,  842,  846,  882,  845,  835,  833,  832,  843,  839,
-
-      895,  842,  853,  838,  839,  845,  861,  851,  898, 2564,
-      862,  862,  855,  866,  864,  909,  851,  853,  872,  869,
-      857,  855,  917,  874,  860,  866,  864, 2564, 2564,  874,
-      879,  884,  872,  882,  884, 2564, 2564,  885,  872,  890,
-      877,  879,  872, 2564,  877,  895,  882,  932,  883,  935,
-      881,  885,  903,  944, 2564, 2564,  889,  893,  892,  889,
-      905,  950,  903,  893,  894,  890,  903,  914,  915,  910,
-      911,  913,  906,  908,  904,  910,  910,  912,  927,  910,
-      969,  926,  931,  908,  931,  917,  916, 2564,  923,  924,
-      973,  974,  926,  939,  977,  935,  925,  940,  934,  942,
-
-      929,  961,  969,  991,  939,  934,  989,  990,  952,  992,
-     2564,  998,  941,  957,  961, 1002,  952,  951,  946,  947,
-      959,  954,  950,  953,  954,  964,  974, 1010,  958,  976,
-      968,  963, 1021,  978,  979,  970, 2564,  984,  973,  976,
-      984,  986,  971,  987,  984,  982, 1029,  995,  979,  980,
-     2564,  996,  999,  982,  993, 1042,  985, 1004, 2564, 1003,
-     1006,  992,  987, 1005, 1045, 1003,  999,  996, 1049, 1050,
-     1012,  998, 1016, 1016, 1016, 1017, 1003, 1018, 1010, 1017,
-     1007, 1025, 1024, 1011, 1028, 2564, 1020, 1026, 1029, 1074,
-     1021, 2564, 1024, 1029, 1074, 1025, 1037, 1031, 1032, 1030,
-
-     1032, 1042, 1087, 1031, 1032, 1032, 1091, 1035, 1047, 1040,
-     2564, 1036, 1044, 1042, 1093, 1035, 1057, 1043, 1044, 1045,
-     1046, 1052, 1060, 1051, 1056, 1066, 1067, 1068, 1073, 1114,
-     1086, 1091, 2564, 1073, 1070, 1066, 1080, 1063, 1063, 2564,
-     1064, 1124, 1067, 2564, 1078, 1068, 1088, 1087, 1078, 1089,
-     1132, 1093, 1086, 1090, 1094, 1077, 1094, 1085, 1140, 1087,
-     2564, 1137, 1086, 1089, 1107, 1089, 1090, 1090, 1111, 1108,
-     1113, 1101, 1115, 1101, 1109, 1118, 1098, 1113, 1120, 1162,
-     1158, 2564, 1164, 1165, 1107, 1117, 1127, 1111, 1131, 1119,
-     1115, 1122, 1131, 1119, 1126, 1127, 1139, 1180, 1127, 1182,
-
-     1126, 1128, 1145, 1186, 1136, 1135, 1141, 1139, 1137, 1132,
-     1193, 1144, 1195, 1191, 1197, 2564, 1138, 1155, 1148, 1139,
-     1158, 1146, 1156, 1157, 1153, 1166, 1166, 2564, 1151, 1147,
-     1153, 2564, 1154, 1214, 1173, 1154, 1173, 1174, 1176, 1215,
-     1168, 1222, 1223, 1176, 1181, 1175, 1173, 1184, 1183, 1167,
-     1172, 1178, 1191, 2564, 1213, 1204, 1236, 1176, 1198, 1193,
-     1193, 1197, 1242, 2564, 1185, 1185, 1188, 1205, 1200, 1204,
-     1199, 2564, 1191, 1208, 1188, 1209, 1199, 1250, 1203, 2564,
-     1217, 1217, 1255, 1202, 1211, 1259, 1217, 1222, 1208, 1268,
-     1211, 1225, 1223, 1215, 1221, 1217, 1235, 1236, 1237, 2564,
-
-     1227, 2564, 1237, 2564, 1222, 1233, 1224, 1243, 1236, 1234,
-     1227, 1239, 1283, 1247, 1236, 1243, 1244, 1250, 2564, 1243,
-     2564, 1295, 1236, 1297, 2564, 1298, 1240, 1246, 1253, 1297,
-     1259, 2564, 1260, 2564, 1247, 2564, 1247, 1250, 1264, 1269,
-     1252, 1311, 1268, 1269, 1309, 1261, 1266, 1317, 1313, 1266,
-     1320, 2564, 1271, 1268, 1323, 1324, 1281, 1282, 1284, 2564,
-     2564, 1276, 1271, 1325, 1274, 1290, 1333, 1275, 1287, 1276,
-     1293, 1308, 1339, 2564, 1296, 1289, 1298, 1289, 1300, 2564,
-     1345, 1282, 1293, 1308, 1344, 1296, 1307, 1308, 1309, 1306,
-     1350, 1313, 1303, 1313, 1319, 1306, 1302, 1362, 1358, 1316,
-
-     1360, 1368, 1325, 2564, 1326, 1317, 1320, 1329, 1330, 1327,
-     1317, 1320, 1320, 1331, 1326, 1381, 1328, 1383, 1326, 1331,
-     1386, 1382, 1323, 1339, 1332, 1335, 1348, 1349, 1347, 1396,
-     2564, 1349, 2564, 2564, 1355, 1347, 1357, 1342, 1398, 1345,
-     1345, 1406, 1407, 1351, 1361, 1410, 2564, 1358, 1359, 1361,
-     1414, 1355, 1358, 2564, 1376, 1377, 2564, 1377, 1365, 2564,
-     2564, 1378, 1361, 1381, 1382, 1368, 1370, 1429, 1379, 2564,
-     1431, 1380, 1374, 1434, 1414, 2564, 1436, 1393, 1438, 1389,
-     1436, 2564, 1384, 1443, 1393, 1387, 1384, 1387, 1389, 1406,
-     1445, 1398, 1410, 1413, 1401, 1404, 1397, 1404, 1395, 2564,
-
-     1403, 1418, 1403, 2564, 1405, 1406, 1460, 1422, 1422, 1425,
-     1425, 1422, 1466, 1428, 1420, 1421, 2564, 1422, 2564, 1432,
-     1424, 2564, 1430, 1435, 1436, 1433, 1477, 1425, 1440, 1441,
-     1433, 2564, 1430, 1431, 1431, 1437, 1436, 1434, 1488, 1449,
-     2564, 2564, 1490, 1437, 2564, 1438, 1439, 1445, 2564, 1454,
-     1448, 1503, 1450, 1443, 1455, 1450, 1460, 1471, 1464, 1470,
-     1460, 1515, 1468, 2564, 1477, 2564, 1474, 1519, 2564, 1472,
-     1495, 2564, 1522, 2564, 1480, 1465, 1525, 2564, 1526, 1483,
-     1488, 1470, 1530, 1526, 1490, 1487, 1483, 1476, 1531, 1489,
-     1490, 1480, 1485, 1497, 1542, 1497, 1545, 1541, 1505, 1506,
-
-     1502, 1546, 1494, 1499, 1497, 1556, 1507, 1513, 1501, 1560,
-     1556, 1519, 1563, 1524, 1513, 1507, 1567, 1509, 1510, 1524,
-     1527, 1527, 1573, 1515, 1532, 1528, 1526, 1533, 1517, 1575,
-     1576, 1577, 1540, 1533, 1532, 1532, 1527, 1545, 2564, 1536,
-     1542, 1547, 1534, 1535, 1534, 1536, 1591, 1537, 2564, 1533,
-     1551, 1600, 2564, 1558, 1571, 2564, 1603, 1556, 2564, 2564,
-     1547, 1558, 1607, 2564, 1553, 1558, 1556, 1606, 1564, 1569,
-     1558, 1574, 1563, 1561, 1575, 1562, 2564, 1564, 2564, 1567,
-     1576, 1619, 1562, 1567, 1627, 1575, 1585, 1587, 2564, 1632,
-     1628, 1586, 1630, 2564, 1581, 1637, 2564, 1580, 1595, 1583,
-
-     2564, 1593, 1594, 1643, 1601, 1605, 2564, 1641, 1607, 1583,
-     1601, 1602, 1611, 1593, 1600, 1612, 1611, 1602, 1652, 1604,
-     1600, 1660, 1602, 1603, 1663, 1659, 1665, 1615, 1667, 1620,
-     1610, 1626, 1619, 2564, 1672, 1673, 2564, 1622, 1675, 1617,
-     2564, 1620, 1630, 1674, 1622, 1637, 1624, 1639, 1625, 1632,
-     1632, 1687, 1644, 1645, 1633, 1647, 1633, 1693, 1646, 2564,
-     1690, 1641, 1638, 2564, 1640, 1653, 1640, 1661, 2564, 1658,
-     1703, 1656, 1653, 1654, 2564, 1707, 1666, 1649, 1651, 1667,
-     1660, 1650, 1666, 1667, 1676, 1666, 1718, 1678, 1662, 1671,
-     1717, 2564, 1675, 1724, 2564, 1673, 2564, 1667, 2564, 1674,
-
-     1728, 1729, 1726, 2564, 2564, 1688, 2564, 1728, 1690, 1691,
-     1676, 1677, 1685, 1739, 1687, 1736, 1737, 1692, 2564, 1687,
-     1705, 1692, 1705, 1700, 2564, 1697, 1702, 1700, 1752, 1709,
-     1754, 1702, 1699, 1699, 2564, 1714, 1715, 1716, 2564, 1717,
-     1707, 1719, 1764, 1717, 1766, 1708, 1716, 1717, 1730, 2564,
-     1731, 1712, 1713, 1720, 1722, 2564, 1736, 1733, 1773, 1734,
-     2564, 2564, 1738, 1723, 1723, 1738, 1731, 1730, 1741, 1728,
-     2564, 1744, 1732, 1735, 1791, 1731, 1750, 1752, 1745, 1744,
-     1753, 1755, 1759, 2564, 1749, 2564, 1753, 1744, 1803, 1746,
-     1805, 1806, 1807, 1765, 1809, 2564, 1751, 2564, 1806, 1768,
-
-     1769, 1756, 1764, 1775, 1762, 1773, 1759, 1757, 1765, 1764,
-     1769, 1761, 1826, 1779, 1780, 1770, 1787, 1786, 1827, 1771,
-     1790, 1791, 2564, 1796, 1789, 1794, 1781, 1796, 1841, 1798,
-     1801, 1800, 1789, 1798, 2564, 1847, 2564, 2564, 2564, 1808,
-     2564, 1849, 1791, 1851, 1852, 1795, 1854, 1802, 1851, 1852,
-     1814, 1854, 1800, 1804, 1822, 1863, 1822, 2564, 1813, 1803,
-     1862, 1828, 1821, 1817, 1871, 1814, 1816, 1815, 1822, 1818,
-     1877, 1821, 2564, 1826, 1836, 1839, 1822, 1830, 2564, 1825,
-     2564, 1837, 2564, 2564, 1842, 2564, 1843, 1843, 1834, 1890,
-     1834, 1844, 1829, 1842, 2564, 1844, 1852, 1897, 1838, 1840,
-
-     1837, 1861, 2564, 1848, 1855, 1856, 1859, 1848, 2564, 1902,
-     1849, 1857, 1851, 1867, 1866, 1869, 1862, 1857, 1857, 1869,
-     1864, 2564, 1875, 1863, 1916, 1867, 1879, 1924, 2564, 1870,
-     1882, 1927, 1876, 1878, 1876, 1877, 1932, 1885, 1872, 1887,
-     1892, 1889, 1938, 1939, 1940, 1897, 1942, 1943, 1887, 1891,
-     1887, 1903, 1886, 1898, 1892, 2564, 1908, 1952, 2564, 1909,
-     1894, 1912, 1903, 2564, 1904, 1918, 1914, 1907, 1907, 2564,
-     2564, 2564, 1962, 2564, 2564, 1905, 1913, 1908, 1961, 1927,
-     1924, 1969, 1930, 2564, 1971, 1913, 1973, 1916, 1929, 1928,
-     1929, 1919, 1926, 2564, 1921, 1981, 1934, 1943, 1936, 1980,
-
-     2564, 1927, 2564, 1939, 2564, 1983, 1989, 1931, 1947, 1992,
-     1993, 1994, 2564, 1951, 1945, 1938, 1958, 1955, 1947, 1951,
-     2564, 1998, 1947, 2564, 2564, 2564, 1947, 1955, 2002, 1962,
-     1955, 2010, 1958, 1958, 1954, 1956, 2015, 2016, 1958, 1974,
-     1959, 2564, 2020, 1967, 1974, 2023, 2564, 2564, 1976, 2025,
-     1973, 2564, 1977, 1976, 2564, 1977, 2564, 1971, 1971, 1988,
-     1989, 2034, 1980, 2036, 2037, 2564, 2038, 2564, 2564, 2564,
-     2564, 2044, 2047, 2050, 2051, 2053, 2056, 2059, 2062
+     2583, 2584,   34, 2579,  145,    0,  207, 2584,  214,  221,
+       13,  228, 2584, 2559,  118,   25,    2,    6, 2584, 2584,
+       73,   11,   17, 2584, 2584, 2584,  104, 2567, 2520,    0,
+     2557,  108, 2574,   24,  262, 2584, 2516,   67, 2522,   84,
+       75,   88,  224,   91,   89,  290,  220, 2514,  206,  285,
+      236,  204,  197,   60,  291, 2523,  247,  308,  315,  214,
+      286, 2506,  212,  320,  344,  318, 2525,  335,    0,  385,
+      401,  415,  422,  427, 2584,    0, 2584,  441,  446,  236,
+      314,  238,  326,  353,  309, 2584, 2522, 2563, 2584,  263,
+
+     2584,  440, 2550,  308, 2519,  364,   10,  329,  359,  384,
+      391,  241, 2560,    0,  501,  408, 2502, 2499, 2503,  418,
+     2499,   80, 2507,  422, 2493, 2494, 2499,   78, 2509, 2492,
+     2501, 2491, 2500,  341,  343,  340, 2493, 2491,  410, 2539,
+     2543, 2489, 2482, 2535, 2475,  174, 2496, 2496, 2490,  340,
+     2483, 2481, 2482, 2474, 2479, 2473,  429, 2484,  412, 2469,
+     2468, 2482,  425, 2468,  422,  447, 2462,  497,  436,  471,
+     2483, 2480, 2481,  432, 2479, 2514, 2513,  450,  446, 2460,
+      471, 2461,  478, 2453, 2470, 2462, 2464,    0,  477,  483,
+      473,  496,  489,  515, 2460, 2584, 2505,  530, 2454,  499,
+
+      523,  530, 2508,  535, 2507,  532, 2506, 2584, 2584,  578,
+      441,  543, 2465, 2457, 2444, 2455, 2459, 2460, 2440, 2451,
+     2455, 2452, 2451,  475,  516, 2489, 2453, 2434, 2431, 2439,
+     2434, 2448, 2444, 2435, 2431, 2443, 2443, 2431, 2433, 2436,
+     2416, 2420, 2433, 2435, 2432, 2424, 2414, 2432, 2584, 2417,
+     2426,  523, 2464, 2410, 2419, 2461, 2408, 2418, 2421,  510,
+     2417, 2456, 2401, 2403, 2414, 2452,  557, 2397, 2455, 2409,
+     2389, 2404,  561, 2394, 2400,  522, 2391, 2389, 2389, 2395,
+     2386, 2385, 2392, 2382, 2441, 2397, 2396, 2390,  513, 2397,
+     2392, 2384, 2374, 2389, 2388, 2383, 2387, 2368, 2384, 2370,
+
+     2376, 2383, 2365,  527, 2370, 2367, 2366,  603, 2365, 2360,
+     2374,  570, 2373, 2416, 2375,  520, 2366, 2354,  560, 2584,
+     2584,  571, 2584, 2584, 2352,  559,  530, 2400,  585, 2410,
+      576, 2584, 2409, 2584, 2403,  626, 2584, 2365,  575, 2342,
+     2351, 2399, 2359, 2342, 2359, 2395, 2355, 2338, 2344, 2396,
+     2351, 2354, 2345, 2348, 2334, 2345, 2389, 2383, 2341, 2338,
+      619, 2344, 2384, 2319, 2377, 2330, 2325, 2319, 2321, 2324,
+     2371, 2328, 2317, 2333, 2367, 2313,  626, 2327, 2312, 2311,
+     2324, 2322, 2320, 2320, 2319, 2314, 2321, 2316, 2312,  593,
+     2310, 2313, 2308, 2294, 2306, 2302, 2352,  587,  583, 2346,
+
+     2584, 2310, 2344, 2294, 2293, 2292, 2285, 2287, 2299, 2290,
+     2297, 2278, 2295, 2290,  593, 2337, 2290, 2287, 2290, 2584,
+     2289,  604, 2279, 2291,  599, 2266, 2267, 2288, 2279, 2269,
+     2320, 2265, 2279,  609, 2265, 2277, 2276, 2275, 2270, 2312,
+     2272, 2271, 2270, 2269, 2252, 2260, 2310, 2269, 2249, 2307,
+     2584, 2249, 2248,  655, 2261, 2259, 2584, 2584, 2259, 2248,
+     2240,  583, 2299, 2298, 2584, 2297, 2584,  633,  681, 2256,
+      646, 2295, 2237, 2248, 2287, 2240, 2242, 2244, 2231, 2239,
+     2227, 2584, 2232, 2225, 2237, 2240, 2227, 2226, 2584,  651,
+     2228, 2225,  619, 2223, 2225, 2584, 2270, 2232, 2229, 2214,
+
+     2228, 2226, 2226, 2220,  673, 2227, 2215, 2208, 2259, 2584,
+     2206, 2222, 2256, 2217, 2215, 2213, 2214, 2198, 2207, 2249,
+     2200, 2199, 2194, 2193, 2244, 2188,  620, 2207, 2181, 2188,
+     2193, 2203, 2237, 2241, 2584, 2186, 2182,  680, 2180, 2189,
+     2188, 2182, 2189, 2173, 2173, 2183, 2171, 2185, 2185, 2173,
+     2169, 2167, 2584, 2224, 2584, 2166, 2177, 2216, 2161, 2160,
+     2165, 2174, 2168, 2162, 2171, 2213, 2207, 2169, 2153, 2148,
+     2168, 2143, 2149,  568, 2163, 2156, 2160, 2143, 2201, 2142,
+     2142, 2193, 2138, 2139, 2138, 2136, 2153, 2584, 2149, 2186,
+     2584, 2137, 2135, 2584, 2146, 2182, 2181, 2141, 2125, 2142,
+
+     2182, 2584, 2584, 2584,  656,  658, 2122,  712, 2584, 2132,
+     2131,  613, 2138, 2118, 2128, 2170, 2115, 2168, 2113, 2123,
+     2165, 2110, 2117, 2110, 2122, 2104, 2104, 2119, 2118,  658,
+     2117, 2116, 2116, 2098, 2103, 2144, 2111, 2108, 2102, 2147,
+     2091, 2106, 2106, 2104, 2104, 2584, 2089, 2086, 2144, 2099,
+     2091, 2097, 2088, 2096, 2081, 2132, 2096, 2078, 2090, 2082,
+      639, 2073, 2072, 2066, 2071, 2086, 2083, 2084, 2063, 2073,
+     2079, 2122, 2077, 2069, 2060, 2584, 2061, 2063, 2058, 2071,
+     2063, 2068, 2107, 2106, 2057,   16, 2066, 2103, 2048, 2101,
+     2048, 2051, 2044, 2584, 2058, 2037, 2041, 2055, 2050, 2046,
+
+     2091, 2043, 2050, 2088, 2584, 2033, 2047, 2046, 2049, 2030,
+     2082, 2081, 2028, 2079, 2039, 2023, 2076, 2075, 2584, 2016,
+      203,  224,  695,  241,  324,  361,  362,  491,  476,  567,
+      567,  609,  643,  637, 2584,  670,  665, 2584,  688,  699,
+      673,  670,  670,  679,  691,  685,  674,  670,  684,  685,
+      732,  696,  739,  699,  703,  736,  737,  697,  697,  707,
+      712,  698,  701,  712,  712,  696,  753,  706,  716,  719,
+      757,  720,  713,  717,  714,  716,  763,  764,  728,  772,
+      729,  731, 2584,  734,  729,  720,  735,  740,  737,  725,
+      741,  740,  728,  742,  740,  748,  784,  746,  791,  792,
+
+      742,  734,  744,  791,  749,  799, 2584,  800,  753,  755,
+      751,  745,  761,  749,  807,  803,  766,  755,  768, 2584,
+      758,  769,  758,  771,  761,  774,  818,  819,  762,  773,
+      758,  781,  772,  761,  767,  822,  786,  770,  782,  826,
+      827,  774,  829,  793,  788,  793,  791,  835,  777,  789,
+      792,  796,  788,  785, 2584,  849,  808,  809,  797,  811,
+      801,  804,  815,  800,  807,  813,  814,  806,  820,  860,
+      836,  810,  824,  829,  826,  808,  815,  829,  874,  831,
+      828,  829,  827,  836, 2584,  832,  827,  842,  839,  825,
+      827,  846,  843,  831,  838,  839,  848,  852,  888,  851,
+
+      841,  839,  838,  849,  845,  901,  848,  859,  844,  845,
+      851,  867,  863,  858,  905, 2584,  869,  869,  862,  873,
+      871,  916,  858,  860,  879,  876,  864,  862,  924,  881,
+      867,  873,  871, 2584, 2584,  881,  886,  891,  879,  889,
+      891, 2584, 2584,  892,  879,  897,  884,  886,  879, 2584,
+      884,  902,  889,  939,  890,  942,  888,  892,  910,  951,
+     2584, 2584,  896,  900,  899,  896,  912,  957,  910,  900,
+      901,  897,  910,  921,  922,  917,  918,  920,  913,  915,
+      911,  917,  917,  919,  934,  917,  976,  933,  938,  915,
+      938,  924,  923, 2584,  930,  931,  980,  981,  933,  946,
+
+      984,  942,  932,  947,  941,  949,  936,  968,  976,  998,
+      946,  941,  996,  997,  959,  999, 2584, 1005,  948,  964,
+      968, 1009,  959,  958,  953,  954,  966,  961,  957,  960,
+      961,  971,  981, 1017,  965,  983,  975,  970, 1028,  985,
+      986,  977, 2584,  991,  980,  983,  991,  993,  978,  990,
+      995,  992,  990, 1037, 1003,  987,  988, 2584, 1004, 1007,
+      990, 1001, 1050,  993, 1012, 2584, 1011, 1014, 1000,  995,
+     1013, 1053, 1011, 1007, 1004, 1057, 1058, 1020, 1006, 1024,
+     1024, 1024, 1025, 1011, 1026, 1018, 1025, 1015, 1033, 1032,
+     1019, 1036, 2584, 1028, 1034, 1037, 1082, 1029, 2584, 1032,
+
+     1037, 1082, 1033, 1045, 1039, 1040, 1038, 1040, 1050, 1095,
+     1039, 1040, 1040, 1099, 1043, 1055, 1048, 2584, 1044, 1052,
+     1050, 1101, 1043, 1065, 1051, 1052, 1053, 1054, 1060, 1068,
+     1059, 1064, 1074, 1075, 1076, 1081, 1122, 1094, 1099, 2584,
+     1081, 1078, 1074, 1088, 1071, 1071, 2584, 1072, 1132, 1075,
+     2584, 1086, 1076, 1096, 1095, 1086, 1097, 1140, 1101, 1094,
+     1098, 1102, 1085, 1102, 1093, 1148, 1095, 2584, 1145, 1094,
+     1097, 1115, 1097, 1098, 1098, 1119, 1116, 1104, 1122, 1110,
+     1124, 1110, 1118, 1127, 1107, 1122, 1129, 1171, 1167, 2584,
+     1173, 1174, 1116, 1126, 1136, 1120, 1140, 1128, 1124, 1131,
+
+     1140, 1128, 1135, 1136, 1148, 1189, 1136, 1191, 1135, 1137,
+     1154, 1195, 1145, 1144, 1150, 1148, 1146, 1141, 1202, 1153,
+     1204, 1200, 1206, 2584, 1147, 1164, 1157, 1148, 1167, 1155,
+     1165, 1166, 1162, 1175, 1175, 2584, 1160, 1156, 1162, 2584,
+     1163, 1223, 1182, 1163, 1182, 1183, 1185, 1224, 1177, 1231,
+     1232, 1185, 1190, 1184, 1182, 1193, 1192, 1176, 1181, 1187,
+     1200, 2584, 1222, 1213, 1245, 1185, 1207, 1202, 1202, 1206,
+     1251, 2584, 1194, 1194, 1197, 1214, 1209, 1213, 1208, 2584,
+     1200, 1217, 1197, 1218, 1208, 1259, 1212, 2584, 1226, 1226,
+     1264, 1211, 1220, 1268, 1226, 1231, 1217, 1277, 1220, 1221,
+
+     1235, 1233, 1225, 1231, 1227, 1245, 1246, 1247, 2584, 1237,
+     2584, 1247, 2584, 1232, 1243, 1234, 1253, 1246, 1244, 1237,
+     1249, 1293, 1257, 1246, 1253, 1254, 1260, 2584, 1253, 2584,
+     1305, 1246, 1307, 2584, 1308, 1250, 1256, 1263, 1307, 1269,
+     2584, 1270, 2584, 1257, 2584, 1257, 1260, 1274, 1279, 1262,
+     1321, 1278, 1279, 1319, 1271, 1276, 1327, 1323, 1276, 1330,
+     2584, 1281, 1278, 1333, 1334, 1291, 1292, 1294, 2584, 2584,
+     1286, 1281, 1335, 1284, 1300, 1343, 1285, 1297, 1286, 1303,
+     1318, 1349, 2584, 1306, 1299, 1308, 1299, 1310, 2584, 1355,
+     1292, 1303, 1318, 1354, 1306, 1317, 1318, 1319, 1316, 1360,
+
+     1323, 1313, 1323, 1329, 1316, 1312, 1372, 1368, 1326, 1370,
+     1378, 1335, 2584, 1321, 1337, 1328, 1331, 1340, 1341, 1338,
+     1328, 1331, 1331, 1342, 1337, 1392, 1339, 1394, 1337, 1342,
+     1397, 1393, 1335, 1350, 1343, 1346, 1359, 1360, 1358, 1407,
+     2584, 1360, 2584, 2584, 1366, 1358, 1368, 1353, 1409, 1356,
+     1356, 1417, 1418, 1362, 1372, 1421, 2584, 1369, 1370, 1372,
+     1425, 1366, 1369, 2584, 1387, 1388, 2584, 1388, 1376, 2584,
+     2584, 1389, 1372, 1392, 1393, 1379, 1381, 1440, 1390, 2584,
+     1442, 1391, 1385, 1445, 1425, 2584, 1447, 1404, 1449, 1400,
+     1447, 2584, 1395, 1454, 1404, 1398, 1395, 1398, 1400, 1417,
+
+     1456, 1409, 1421, 1424, 1412, 1415, 1408, 1415, 1406, 2584,
+     1414, 1429, 1414, 2584, 1416, 1470, 1418, 1472, 1434, 1434,
+     1437, 1437, 1434, 1478, 1440, 1432, 1433, 2584, 1434, 2584,
+     1444, 1436, 2584, 1442, 1447, 1448, 1445, 1489, 1437, 1452,
+     1453, 1445, 2584, 1442, 1443, 1443, 1449, 1448, 1446, 1500,
+     1461, 2584, 2584, 1502, 1449, 2584, 1450, 1451, 1457, 2584,
+     1466, 1460, 1515, 1462, 1455, 1467, 1462, 1472, 1483, 1476,
+     1482, 1472, 1527, 1480, 2584, 1489, 2584, 1486, 1531, 2584,
+     1484, 1507, 2584, 1534, 2584, 1492, 1477, 1537, 2584, 1538,
+     1495, 1500, 1482, 1542, 1538, 1502, 1499, 1495, 1488, 1543,
+
+     1501, 1502, 1492, 1497, 1509, 1554, 1509, 1557, 1507, 1554,
+     1519, 1519, 1515, 1559, 1507, 1512, 1510, 1569, 1520, 1526,
+     1514, 1573, 1569, 1532, 1576, 1537, 1526, 1520, 1580, 1522,
+     1523, 1537, 1540, 1540, 1586, 1528, 1545, 1541, 1539, 1546,
+     1530, 1588, 1589, 1590, 1553, 1546, 1545, 1545, 1540, 1558,
+     2584, 1549, 1555, 1560, 1547, 1548, 1547, 1549, 1604, 1550,
+     2584, 1546, 1564, 1613, 2584, 1571, 1584, 2584, 1616, 1569,
+     2584, 2584, 1560, 1571, 1620, 2584, 1566, 1571, 1569, 1619,
+     1577, 1582, 1571, 1587, 1576, 1574, 1588, 1575, 2584, 1577,
+     2584, 1595, 1581, 1590, 1633, 1576, 1581, 1641, 1589, 1600,
+
+     1601, 2584, 1646, 1642, 1600, 1644, 2584, 1595, 1651, 2584,
+     1594, 1609, 1597, 2584, 1607, 1608, 1657, 1615, 1619, 2584,
+     1655, 1621, 1597, 1615, 1616, 1625, 1607, 1614, 1626, 1625,
+     1616, 1666, 1618, 1614, 1674, 1616, 1617, 1677, 1673, 1679,
+     1629, 1681, 1634, 1624, 1640, 1633, 2584, 1686, 1687, 2584,
+     1636, 1689, 1631, 2584, 1634, 1644, 1688, 1636, 1651, 1638,
+     1653, 1639, 1646, 1646, 1701, 1658, 1659, 1646, 1648, 1662,
+     1648, 1708, 1661, 2584, 1705, 1656, 1653, 2584, 1655, 1668,
+     1655, 1676, 2584, 1673, 1718, 1671, 1668, 1669, 2584, 1722,
+     1681, 1664, 1666, 1682, 1675, 1665, 1681, 1682, 1691, 1681,
+
+     1733, 1693, 1677, 1686, 1732, 2584, 1690, 1739, 2584, 1688,
+     2584, 1682, 2584, 1689, 1743, 1744, 1741, 2584, 2584, 1703,
+     2584, 1743, 1705, 1706, 1691, 1692, 1700, 1754, 1702, 1751,
+     1752, 1707, 2584, 1702, 1720, 1702, 1708, 1721, 1716, 2584,
+     1713, 1718, 1716, 1768, 1725, 1770, 1718, 1715, 1715, 2584,
+     1730, 1731, 1732, 2584, 1733, 1723, 1735, 1780, 1733, 1782,
+     1724, 1732, 1733, 1746, 2584, 1747, 1728, 1729, 1736, 1738,
+     2584, 1752, 1749, 1789, 1750, 2584, 2584, 1754, 1739, 1739,
+     1754, 1747, 1746, 1757, 1744, 2584, 1760, 1748, 1751, 1807,
+     1747, 1766, 1805, 1769, 1762, 1761, 1770, 1772, 1776, 2584,
+
+     1766, 2584, 1770, 1761, 1820, 1763, 1822, 1823, 1824, 1782,
+     1826, 2584, 1768, 2584, 1823, 1785, 1786, 1773, 1781, 1792,
+     1779, 1790, 1776, 1774, 1782, 1781, 1786, 1778, 1843, 1796,
+     1797, 1787, 1804, 1803, 1844, 1788, 1807, 1808, 2584, 1813,
+     1806, 1845, 1812, 1799, 1814, 1859, 1816, 1819, 1818, 1807,
+     1816, 2584, 1865, 2584, 2584, 2584, 1826, 2584, 1867, 1809,
+     1869, 1870, 1813, 1872, 1820, 1869, 1870, 1832, 1872, 1818,
+     1822, 1840, 1881, 1840, 2584, 1831, 1821, 1880, 1846, 1839,
+     1835, 1889, 1832, 1834, 1833, 1840, 1883, 1837, 1896, 1840,
+     2584, 1845, 1855, 1858, 1841, 1849, 2584, 1844, 2584, 1856,
+
+     2584, 2584, 1861, 2584, 1862, 1862, 1853, 1909, 1853, 1863,
+     1848, 1861, 2584, 1863, 1871, 1916, 1857, 1859, 1856, 1880,
+     2584, 1867, 1874, 1875, 1878, 1925, 1868, 2584, 1922, 1869,
+     1877, 1871, 1887, 1886, 1889, 1882, 1877, 1877, 1889, 1884,
+     2584, 1895, 1883, 1936, 1887, 1899, 1944, 2584, 1890, 1902,
+     1947, 1896, 1898, 1896, 1897, 1952, 2584, 1905, 1892, 1907,
+     1912, 1909, 1958, 1959, 1960, 1917, 1962, 1963, 1907, 1911,
+     1907, 1923, 1906, 1918, 1912, 2584, 1928, 1972, 2584, 1929,
+     1914, 1932, 1923, 2584, 1924, 1938, 1934, 1927, 1927, 2584,
+     2584, 2584, 1982, 2584, 2584, 1925, 1933, 1928, 1981, 1947,
+
+     1944, 1989, 1950, 2584, 1991, 1933, 1993, 1936, 1949, 1948,
+     1949, 1939, 1946, 2584, 1941, 2001, 1954, 1963, 1956, 2000,
+     2584, 1947, 2584, 1959, 2584, 2003, 2009, 1951, 1967, 2012,
+     2013, 2014, 2584, 1971, 1965, 1958, 1978, 1975, 1967, 1971,
+     2584, 2018, 1967, 2584, 2584, 2584, 1967, 1975, 2022, 1982,
+     1975, 2030, 1978, 1978, 1974, 1976, 2035, 2036, 1978, 1994,
+     1979, 2584, 2040, 1987, 1994, 2043, 2584, 2584, 1996, 2045,
+     1993, 2584, 1997, 1996, 2584, 1997, 2584, 1991, 1991, 2008,
+     2009, 2054, 2000, 2056, 2057, 2584, 2058, 2584, 2584, 2584,
+     2584, 2064, 2067, 2070, 2071, 2073, 2076, 2079, 2082
+
     } ;
 
-static const flex_int16_t yy_def[2180] =
+static const flex_int16_t yy_def[2200] =
     {   0,
-     2172, 2172, 2173, 2173, 2172, 2172, 2172, 2172, 2172, 2172,
-     2171, 2171, 2171, 2171, 2171, 2174, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2175,
-     2171, 2171, 2171, 2176,   15, 2171,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2177,   45,   45,   45,   45,
+     2192, 2192, 2193, 2193, 2192, 2192, 2192, 2192, 2192, 2192,
+     2191, 2191, 2191, 2191, 2191, 2194, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2195,
+     2191, 2191, 2191, 2196,   15, 2191,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2197,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2174, 2171,
-     2171, 2171, 2171, 2171, 2171, 2178, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2175, 2171, 2176,
+       45,   45,   45,   45,   45,   45,   45,   45, 2194, 2191,
+     2191, 2191, 2191, 2191, 2191, 2198, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2195, 2191, 2196,
 
-     2171, 2171,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2179,   45, 2177,   45,   45,   45,   45,   45,
+     2191, 2191,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2199,   45, 2197,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2178, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2198, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45, 2179, 2171, 2171,  115,
+       45,   45,   45,   45,   45,   45, 2199, 2191, 2191,  115,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2171,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2191,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
@@ -1266,222 +1272,225 @@ static const flex_int16_t yy_def[2180] =
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171,   45,   45,   45,   45,   45,   45,
-     2171,   45, 2171,   45,  115, 2171,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191,   45,   45,   45,   45,   45,
+       45, 2191,   45, 2191,   45,  115, 2191,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2171,   45,
 
+     2191,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2191,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2171,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2171,   45,
-       45,   45,   45,   45, 2171, 2171, 2171,   45,   45,   45,
-       45,   45, 2171,   45, 2171,   45,  115,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2171,
-       45,   45,   45,   45,   45,   45, 2171,   45,   45,   45,
-       45,   45,   45, 2171,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45, 2171,   45,   45,   45,
+     2191,   45,   45,   45,   45,   45, 2191, 2191, 2191,   45,
+       45,   45,   45,   45, 2191,   45, 2191,   45,  115,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 2191,   45,   45,   45,   45,   45,   45, 2191,   45,
+       45,   45,   45,   45,   45, 2191,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2191,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2191,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2171,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2171,
-       45, 2171,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2191,   45, 2191,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2171,   45,   45, 2171,   45,   45,
-     2171,   45,   45,   45, 2171,   45,   45,   45, 2171, 2171,
+       45,   45,   45,   45,   45,   45,   45, 2191,   45,   45,
+     2191,   45,   45, 2191,   45,   45,   45, 2191,   45,   45,
 
-     2171,   45,   45,   45,   45, 2171,   45,   45,   45,   45,
+       45, 2191, 2191, 2191,   45,   45,   45,   45, 2191,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2171,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2191,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2171,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2171,
+       45,   45,   45,   45,   45, 2191,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2191,   45,   45,   45,   45,   45,   45,
 
-     2171,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2171,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2191,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2191,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2171,   45,   45, 2171,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2191,   45,   45, 2191,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2171,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2191,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 2171,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2171,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2191,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2191,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2171,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2191,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2171,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2191,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2171,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2171, 2171,   45,
-       45,   45,   45,   45,   45, 2171, 2171,   45,   45,   45,
-       45,   45,   45, 2171,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2171, 2171,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2191,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2191, 2191,   45,   45,   45,   45,   45,
+       45, 2191, 2191,   45,   45,   45,   45,   45,   45, 2191,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2171,   45,   45,
+     2191, 2191,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2191,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2171,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2191,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2171,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2171,   45,   45,   45,   45,   45,   45,   45, 2171,   45,
+       45,   45, 2191,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2191,   45,   45,
+       45,   45,   45,   45,   45, 2191,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2171,   45,   45,   45,   45,
-       45, 2171,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2191,   45,   45,   45,   45,   45, 2191,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2171,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2171,   45,   45,   45,   45,   45,   45, 2171,
-       45,   45,   45, 2171,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2191,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2171,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2191,
+       45,   45,   45,   45,   45,   45, 2191,   45,   45,   45,
+     2191,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2191,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2171,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2191,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2171,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2171,   45,   45,
-       45, 2171,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2171,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2171,   45,   45,   45,   45,   45,   45,
-       45, 2171,   45,   45,   45,   45,   45,   45,   45, 2171,
+       45,   45,   45, 2191,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2191,   45,   45,   45, 2191,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 2191,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 2191,   45,   45,   45,   45,   45,   45,   45, 2191,
+       45,   45,   45,   45,   45,   45,   45, 2191,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2171,
 
-       45, 2171,   45, 2171,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2171,   45,
-     2171,   45,   45,   45, 2171,   45,   45,   45,   45,   45,
-       45, 2171,   45, 2171,   45, 2171,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2191,   45,
+     2191,   45, 2191,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2191,   45, 2191,
+       45,   45,   45, 2191,   45,   45,   45,   45,   45,   45,
+     2191,   45, 2191,   45, 2191,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2171,   45,   45,   45,   45,   45,   45,   45, 2171,
-     2171,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2171,   45,   45,   45,   45,   45, 2171,
+     2191,   45,   45,   45,   45,   45,   45,   45, 2191, 2191,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2191,   45,   45,   45,   45,   45, 2191,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45, 2171,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2191,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2171,   45, 2171, 2171,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2171,   45,   45,   45,
-       45,   45,   45, 2171,   45,   45, 2171,   45,   45, 2171,
-     2171,   45,   45,   45,   45,   45,   45,   45,   45, 2171,
-       45,   45,   45,   45,   45, 2171,   45,   45,   45,   45,
-       45, 2171,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2171,
-
-       45,   45,   45, 2171,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2171,   45, 2171,   45,
-       45, 2171,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2171,   45,   45,   45,   45,   45,   45,   45,   45,
-     2171, 2171,   45,   45, 2171,   45,   45,   45, 2171,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2171,   45, 2171,   45,   45, 2171,   45,
-       45, 2171,   45, 2171,   45,   45,   45, 2171,   45,   45,
+     2191,   45, 2191, 2191,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2191,   45,   45,   45,
+       45,   45,   45, 2191,   45,   45, 2191,   45,   45, 2191,
+     2191,   45,   45,   45,   45,   45,   45,   45,   45, 2191,
+       45,   45,   45,   45,   45, 2191,   45,   45,   45,   45,
+       45, 2191,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2191,
+       45,   45,   45, 2191,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2191,   45, 2191,
+       45,   45, 2191,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2191,   45,   45,   45,   45,   45,   45,   45,
+       45, 2191, 2191,   45,   45, 2191,   45,   45,   45, 2191,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2191,   45, 2191,   45,   45, 2191,
+       45,   45, 2191,   45, 2191,   45,   45,   45, 2191,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2171,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2171,   45,
-       45,   45, 2171,   45,   45, 2171,   45,   45, 2171, 2171,
-       45,   45,   45, 2171,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2171,   45, 2171,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2171,   45,
-       45,   45,   45, 2171,   45,   45, 2171,   45,   45,   45,
-
-     2171,   45,   45,   45,   45,   45, 2171,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2171,   45,   45, 2171,   45,   45,   45,
-     2171,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2171,
-       45,   45,   45, 2171,   45,   45,   45,   45, 2171,   45,
-       45,   45,   45,   45, 2171,   45,   45,   45,   45,   45,
+     2191,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2191,   45,   45,   45, 2191,   45,   45, 2191,   45,   45,
+     2191, 2191,   45,   45,   45, 2191,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2191,   45,
+     2191,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45, 2191,   45,   45,   45,   45, 2191,   45,   45, 2191,
+       45,   45,   45, 2191,   45,   45,   45,   45,   45, 2191,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2171,   45,   45, 2171,   45, 2171,   45, 2171,   45,
-
-       45,   45,   45, 2171, 2171,   45, 2171,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2171,   45,
-       45,   45,   45,   45, 2171,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2171,   45,   45,   45, 2171,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2171,
-       45,   45,   45,   45,   45, 2171,   45,   45,   45,   45,
-     2171, 2171,   45,   45,   45,   45,   45,   45,   45,   45,
-     2171,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2171,   45, 2171,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2171,   45, 2171,   45,   45,
-
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2191,   45,   45, 2191,
+       45,   45,   45, 2191,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2171,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2171,   45, 2171, 2171, 2171,   45,
-     2171,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2171,   45,   45,
+       45,   45,   45, 2191,   45,   45,   45, 2191,   45,   45,
+       45,   45, 2191,   45,   45,   45,   45,   45, 2191,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2171,   45,   45,   45,   45,   45, 2171,   45,
-     2171,   45, 2171, 2171,   45, 2171,   45,   45,   45,   45,
-       45,   45,   45,   45, 2171,   45,   45,   45,   45,   45,
 
-       45,   45, 2171,   45,   45,   45,   45,   45, 2171,   45,
+       45,   45,   45,   45,   45, 2191,   45,   45, 2191,   45,
+     2191,   45, 2191,   45,   45,   45,   45, 2191, 2191,   45,
+     2191,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2191,   45,   45,   45,   45,   45,   45, 2191,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2191,
+       45,   45,   45, 2191,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2191,   45,   45,   45,   45,   45,
+     2191,   45,   45,   45,   45, 2191, 2191,   45,   45,   45,
+       45,   45,   45,   45,   45, 2191,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2191,
+
+       45, 2191,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 2191,   45, 2191,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2191,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2171,   45,   45,   45,   45,   45,   45, 2171,   45,
+       45, 2191,   45, 2191, 2191, 2191,   45, 2191,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2191,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2171,   45,   45, 2171,   45,
-       45,   45,   45, 2171,   45,   45,   45,   45,   45, 2171,
-     2171, 2171,   45, 2171, 2171,   45,   45,   45,   45,   45,
-       45,   45,   45, 2171,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2171,   45,   45,   45,   45,   45,   45,
-
-     2171,   45, 2171,   45, 2171,   45,   45,   45,   45,   45,
-       45,   45, 2171,   45,   45,   45,   45,   45,   45,   45,
-     2171,   45,   45, 2171, 2171, 2171,   45,   45,   45,   45,
+     2191,   45,   45,   45,   45,   45, 2191,   45, 2191,   45,
+
+     2191, 2191,   45, 2191,   45,   45,   45,   45,   45,   45,
+       45,   45, 2191,   45,   45,   45,   45,   45,   45,   45,
+     2191,   45,   45,   45,   45,   45,   45, 2191,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2191,   45,   45,   45,   45,   45,   45, 2191,   45,   45,
+       45,   45,   45,   45,   45,   45, 2191,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2191,   45,   45, 2191,   45,
+       45,   45,   45, 2191,   45,   45,   45,   45,   45, 2191,
+     2191, 2191,   45, 2191, 2191,   45,   45,   45,   45,   45,
+
+       45,   45,   45, 2191,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2191,   45,   45,   45,   45,   45,   45,
+     2191,   45, 2191,   45, 2191,   45,   45,   45,   45,   45,
+       45,   45, 2191,   45,   45,   45,   45,   45,   45,   45,
+     2191,   45,   45, 2191, 2191, 2191,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2171,   45,   45,   45,   45, 2171, 2171,   45,   45,
-       45, 2171,   45,   45, 2171,   45, 2171,   45,   45,   45,
-       45,   45,   45,   45,   45, 2171,   45, 2171, 2171, 2171,
-        0, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171
+       45, 2191,   45,   45,   45,   45, 2191, 2191,   45,   45,
+       45, 2191,   45,   45, 2191,   45, 2191,   45,   45,   45,
+       45,   45,   45,   45,   45, 2191,   45, 2191, 2191, 2191,
+        0, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191
+
     } ;
 
-static const flex_int16_t yy_nxt[2638] =
+static const flex_int16_t yy_nxt[2658] =
     {   0,
-     2171,   13,   14,   13, 2171,   15,   16, 2171,   17,   18,
+     2191,   13,   14,   13, 2191,   15,   16, 2191,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       85,  815,   37,   14,   37,   86,   25,   26,   38,  101,
-     2171,   27,   37,   14,   37,   42,   28,   42,   38,   91,
+       85,  820,   37,   14,   37,   86,   25,   26,   38,  101,
+     2191,   27,   37,   14,   37,   42,   28,   42,   38,   91,
        92,   29,  201,   30,   13,   14,   13,   90,   91,   25,
        31,   92,   13,   14,   13,   13,   14,   13,   32,   40,
-      816,   13,   14,   13,   33,   40,  102,   91,   92,  201,
+      821,   13,   14,   13,   33,   40,  102,   91,   92,  201,
        90,   34,   35,   13,   14,   13,   94,   15,   16,   95,
        17,   18,   19,   20,   21,   22,   22,   22,   22,   22,
        23,   24,   13,   14,   13,   90,   39,  104,   25,   26,
@@ -1498,14 +1507,14 @@ static const flex_int16_t yy_nxt[2638] =
        57,   58,   59,   60,   61,   62,   63,   64,   65,   51,
 
        66,   67,   68,   69,   70,   71,   72,   73,   74,   75,
-       76,   77,   78,   45,   45,   45,   45,   45,   80,  253,
+       76,   77,   78,   45,   45,   45,   45,   45,   80,  254,
        81,   81,   81,   81,   81,   80,  106,   83,   83,   83,
-       83,   83,  254,   82,   84,   84,   84,   84,   84,   80,
+       83,   83,  255,   82,   84,   84,   84,   84,   84,   80,
        82,   83,   83,   83,   83,   83,  137,   82,  109,  106,
-      104,  120,  854,  138,   82,  121,   82,  167,  110,  122,
+      104,  120,  853,  138,   82,  121,   82,  167,  110,  122,
       136,  168,  123,   82,  158,  124,  189,  206,  101,  125,
-       82,  109,  159,  855,  160,  191,  116,   82,   45,  161,
-      162,  132,  117,  133,   45,  118,  110,   45,  856,   45,
+       82,  109,  159,  854,  160,  191,  116,   82,   45,  161,
+      162,  132,  117,  133,   45,  118,  110,   45,  857,   45,
       206,   45,  189,   45,  134,  114,  146,  147,   45,   45,
 
       148,   45,   45,  191,  135,  102,  149,   45,   45,   45,
@@ -1515,147 +1524,147 @@ static const flex_int16_t yy_nxt[2638] =
        45,  108,  142,  111,  190,  165,  191,  198,   45,  143,
       131,  144,   45,  150,   45,  115,  189,  151,  176,  177,
       155,  152,  156,  112,  157,  169,  183,  202,  109,  170,
-      190,  857,  171,  153,  194,  198,  184,  154,  110,  172,
-      173,  185,  192,  190,  174,  175,  236,  112,  237,  240,
-      858,  178,  203,  179,  200,  202,  180,  187,   84,   84,
+      190,  858,  171,  153,  194,  198,  184,  154,  110,  172,
+      173,  185,  192,  190,  174,  175,  236,  112,  237,  241,
+      238,  178,  203,  179,  200,  202,  180,  187,   84,   84,
 
-       84,   84,   84,  238,  258,  241,  181,  239,  259,  193,
+       84,   84,   84,  239,  259,  242,  181,  240,  260,  193,
       859,   82,   80,  182,   81,   81,   81,   81,   81,  203,
-      200,  204,  269,   88,  205,   88,  860,   82,   89,   89,
+      200,  204,  270,   88,  205,   88,  860,   82,   89,   89,
        89,   89,   89,   80,   82,   83,   83,   83,   83,   83,
-       84,   84,   84,   84,   84,  100,  336,  198,   82,  204,
+       84,   84,   84,   84,   84,  100,  337,  198,   82,  204,
        82,  205,  100,   82,   89,   89,   89,   89,   89,   89,
-       89,   89,   89,   89,  211,  216,  244,  202,  270,  245,
-      223,   82,  274,  246,  217,  212,   82,  302,  218,  224,
-      225,  279,  100,  203,  280,  281,  100,  275,  276,  277,
-      100,  303,  282,  294,  295,  266,  283,  267,  100,  320,
-
-      337,  861,  100,  308,  100,  100,  209,  285,  204,  309,
-      307,  205,  318,  319,  210,  210,  210,  210,  210,  319,
-      388,  862,  320,  210,  210,  210,  210,  210,  210,  296,
-      451,  318,  350,  297,  328,  351,  311,  298,  313,  319,
-      318,  320,  286,  287,  288,  322,  210,  210,  210,  210,
-      210,  210,  326,  289,  329,  290,  330,  291,  292,  321,
-      293,  332,  328,  334,  323,  326,  352,  408,  379,  422,
-      460,  403,  423,  389,  353,  326,  390,  409,  709,  330,
-      354,  329,  452,  330,  332,  380,  455,  438,  338,  439,
-      334,  335,  335,  335,  335,  335,  332,  455,  550,  460,
-
-      335,  335,  335,  335,  335,  335,  397,  404,  331,  455,
-      464,  462,  458,  443,  557,  460,  863,  464,  598,  332,
-      456,  405,  459,  335,  335,  335,  335,  335,  335,  491,
-      710,  507,  864,  447,  462,  492,  508,  533,  464,  467,
-      467,  467,  467,  467,  469,  535,  598,  534,  467,  467,
-      467,  467,  467,  467,  523,  524,  551,  561,  571,  525,
-      591,  562,  572,  558,  602,  592,  603,  630,  867,  664,
-      741,  467,  467,  467,  467,  467,  467,  742,  642,  665,
-      631,  598,  632,  643,  509,  601,  790,  791,  735,  510,
-      675,  602,  736,  603,   45,   45,   45,   45,   45,  868,
-
-      850,  866,  622,   45,   45,   45,   45,   45,   45,  605,
-      623,  851,  624,  625,  626,  735,  627,  734,  760,  865,
-      736,  761,  738,  869,  866,  870,   45,   45,   45,   45,
-       45,   45,  871,  872,  873,  874,  875,  876,  877,  878,
-      880,  881,  885,  882,  883,  879,  884,  865,  886,  887,
-      888,  889,  890,  891,  892,  893,  894,  895,  896,  897,
-      898,  899,  900,  901,  902,  903,  904,  907,  908,  909,
-      905,  910,  911,  912,  906,  913,  914,  915,  916,  917,
+       89,   89,   89,   89,  211,  216,  245,  202,  271,  246,
+      223,   82,  275,  247,  217,  212,   82,  303,  218,  224,
+      225,  280,  100,  203,  281,  282,  100,  276,  277,  278,
+      100,  304,  283,  295,  296,  267,  284,  268,  100,  321,
+
+      338,  861,  100,  309,  100,  100,  209,  286,  204,  310,
+      308,  205,  319,  320,  210,  210,  210,  210,  210,  320,
+      390,  862,  321,  210,  210,  210,  210,  210,  210,  297,
+      453,  319,  351,  298,  329,  352,  312,  299,  314,  320,
+      319,  321,  287,  288,  289,  323,  210,  210,  210,  210,
+      210,  210,  327,  290,  330,  291,  331,  292,  293,  322,
+      294,  333,  329,  335,  324,  327,  353,  410,  381,  424,
+      462,  405,  425,  391,  354,  327,  392,  411,  713,  331,
+      355,  330,  454,  331,  333,  382,  457,  440,  339,  441,
+      335,  336,  336,  336,  336,  336,  333,  457,  553,  462,
+
+      336,  336,  336,  336,  336,  336,  399,  406,  332,  457,
+      466,  464,  460,  445,  560,  462,  863,  466,  601,  333,
+      458,  407,  461,  336,  336,  336,  336,  336,  336,  493,
+      714,  510,  864,  449,  464,  494,  511,  536,  466,  469,
+      469,  469,  469,  469,  471,  538,  601,  537,  469,  469,
+      469,  469,  469,  469,  526,  527,  554,  564,  574,  528,
+      594,  565,  575,  561,  605,  595,  606,  633,  865,  668,
+      745,  469,  469,  469,  469,  469,  469,  746,  646,  669,
+      634,  601,  635,  647,  512,  604,  795,  796,  739,  513,
+      679,  605,  740,  606,   45,   45,   45,   45,   45,  866,
+
+      855,  867,  625,   45,   45,   45,   45,   45,   45,  608,
+      626,  856,  627,  628,  629,  739,  630,  738,  764,  868,
+      740,  765,  742,  869,  870,  871,   45,   45,   45,   45,
+       45,   45,  872,  873,  874,  875,  876,  877,  878,  879,
+      880,  881,  882,  883,  885,  886,  890,  891,  871,  884,
+      887,  888,  870,  889,  892,  893,  894,  895,  896,  897,
+      898,  899,  900,  901,  902,  903,  904,  905,  906,  907,
+      908,  909,  912,  913,  914,  910,  915,  916,  917,  911,
       918,  919,  920,  921,  922,  923,  924,  925,  926,  927,
-      928,  929,  930,  931,  932,  934,  935,  933,  936,  937,
+      928,  929,  930,  931,  932,  933,  934,  935,  936,  937,
 
-      938,  939,  940,  941,  942,  943,  944,  945,  946,  947,
+      938,  940,  941,  939,  942,  943,  944,  945,  946,  947,
       948,  949,  950,  951,  952,  953,  954,  955,  956,  957,
       958,  959,  960,  961,  962,  963,  964,  965,  966,  967,
-      968,  969,  970,  971,  972,  973,  975,  976,  977,  980,
-      981,  982,  974,  985,  983,  978,  986,  987,  988,  979,
-      984,  989,  990,  991,  992,  993,  994,  995,  996,  997,
+      968,  969,  970,  971,  972,  973,  974,  975,  976,  977,
+      978,  979,  981,  982,  983,  986,  987,  988,  980,  991,
+      989,  984,  992,  993,  994,  985,  990,  995,  996,  997,
       998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
      1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
      1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027,
-     1028, 1029, 1030, 1003, 1031, 1032, 1033, 1034, 1035, 1036,
+     1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1009,
 
      1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046,
-     1047, 1048, 1049, 1050, 1051, 1053, 1054, 1055, 1056, 1052,
-     1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066,
+     1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,
+     1057, 1058, 1060, 1061, 1062, 1063, 1059, 1064, 1065, 1066,
      1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076,
-     1077, 1079, 1080, 1081, 1078, 1082, 1083, 1084, 1085, 1086,
-     1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096,
+     1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1086, 1087,
+     1088, 1085, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096,
      1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106,
      1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116,
      1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126,
      1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136,
 
      1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146,
-     1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1132, 1155,
-     1156, 1131, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164,
+     1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156,
+     1157, 1158, 1159, 1160, 1161, 1139, 1162, 1163, 1138, 1164,
      1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174,
-     1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1184, 1185,
-     1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195,
+     1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184,
+     1185, 1186, 1187, 1188, 1189, 1190, 1192, 1193, 1194, 1195,
      1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205,
-     1206, 1207, 1208, 1210, 1211, 1212, 1213, 1214, 1215, 1216,
-     1217, 1218, 1219, 1209, 1220, 1221, 1222, 1223, 1224, 1225,
-     1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235,
-
-     1236, 1237, 1238, 1239, 1240, 1183, 1241, 1242, 1243, 1244,
-     1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254,
-     1255, 1257, 1256, 1258, 1259, 1260, 1261, 1262, 1263, 1264,
-     1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274,
-     1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1255, 1256,
-     1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292,
+     1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215,
+     1216, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226,
+     1227, 1217, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235,
+
+     1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245,
+     1246, 1247, 1248, 1191, 1249, 1250, 1251, 1252, 1253, 1254,
+     1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265,
+     1264, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274,
+     1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284,
+     1285, 1286, 1287, 1288, 1289, 1290, 1263, 1264, 1291, 1292,
      1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302,
-     1304, 1306, 1307, 1308, 1303, 1309, 1310, 1311, 1312, 1313,
-     1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323,
+     1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1313,
+     1315, 1316, 1317, 1312, 1318, 1319, 1320, 1321, 1322, 1323,
      1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333,
 
      1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
-     1344, 1345, 1346, 1347, 1305, 1348, 1349, 1350, 1351, 1352,
-     1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
+     1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353,
+     1354, 1355, 1356, 1314, 1357, 1358, 1359, 1360, 1361, 1362,
      1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372,
      1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382,
      1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392,
-     1393, 1394, 1372, 1395, 1396, 1397, 1398, 1399, 1373, 1400,
-     1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410,
+     1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402,
+     1403, 1381, 1404, 1405, 1406, 1407, 1408, 1382, 1409, 1410,
      1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420,
      1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430,
 
      1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440,
      1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450,
-     1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461,
+     1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460,
      1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471,
      1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481,
-     1482, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492,
-     1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502,
-     1503, 1475, 1451, 1504, 1505, 1506, 1507, 1508, 1509, 1510,
-     1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520,
-     1521, 1522, 1523, 1524, 1483, 1525, 1527, 1528, 1529, 1530,
-
-     1531, 1532, 1533, 1526, 1534, 1535, 1536, 1537, 1538, 1539,
-     1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549,
-     1551, 1552, 1555, 1553, 1550, 1554, 1556, 1557, 1558, 1559,
-     1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569,
-     1571, 1572, 1573, 1574, 1570, 1575, 1576, 1577, 1578, 1579,
-     1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589,
-     1590, 1591, 1592, 1571, 1593, 1594, 1595, 1596, 1597, 1598,
-     1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608,
+     1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491,
+     1492, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502,
+     1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512,
+     1513, 1485, 1461, 1514, 1515, 1516, 1517, 1518, 1519, 1520,
+     1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530,
+
+     1531, 1532, 1533, 1534, 1493, 1535, 1536, 1538, 1539, 1540,
+     1541, 1542, 1543, 1544, 1537, 1545, 1546, 1547, 1548, 1549,
+     1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559,
+     1560, 1562, 1563, 1566, 1564, 1561, 1565, 1567, 1568, 1569,
+     1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579,
+     1580, 1582, 1583, 1584, 1585, 1581, 1586, 1587, 1588, 1589,
+     1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599,
+     1600, 1601, 1602, 1603, 1582, 1604, 1605, 1606, 1607, 1608,
      1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618,
      1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628,
 
-     1629, 1630, 1631, 1632, 1633, 1634, 1638, 1635, 1639, 1640,
-     1636, 1641, 1642, 1637, 1643, 1644, 1645, 1646, 1647, 1648,
-     1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658,
-     1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1668, 1669,
-     1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1667, 1678,
-     1679, 1680, 1681, 1655, 1682, 1683, 1684, 1685, 1686, 1687,
-     1688, 1689, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698,
-     1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708,
+     1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638,
+     1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1650, 1647,
+     1651, 1652, 1648, 1653, 1654, 1649, 1655, 1656, 1657, 1658,
+     1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668,
+     1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678,
+     1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689,
+     1679, 1690, 1691, 1692, 1693, 1667, 1694, 1695, 1696, 1697,
+     1698, 1699, 1700, 1701, 1702, 1704, 1705, 1706, 1707, 1708,
      1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718,
      1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728,
 
      1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738,
-     1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1690,
-     1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757,
-     1758, 1759, 1760, 1761, 1762, 1736, 1763, 1764, 1765, 1766,
-     1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776,
+     1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748,
+     1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758,
+     1759, 1760, 1703, 1761, 1762, 1763, 1764, 1765, 1766, 1767,
+     1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1749, 1776,
      1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786,
      1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796,
      1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806,
@@ -1665,9 +1674,9 @@ static const flex_int16_t yy_nxt[2638] =
      1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836,
      1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846,
      1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856,
-     1857, 1859, 1860, 1861, 1862, 1858, 1863, 1864, 1865, 1866,
-     1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876,
-     1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886,
+     1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866,
+     1867, 1868, 1869, 1870, 1871, 1872, 1874, 1875, 1876, 1877,
+     1873, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886,
      1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896,
      1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906,
      1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916,
@@ -1675,9 +1684,9 @@ static const flex_int16_t yy_nxt[2638] =
 
      1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936,
      1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946,
-     1947, 1948, 1949, 1950, 1951, 1952, 1953, 1955, 1956, 1954,
+     1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956,
      1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966,
-     1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976,
+     1967, 1968, 1969, 1970, 1972, 1973, 1971, 1974, 1975, 1976,
      1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986,
      1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
      1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -1695,87 +1704,89 @@ static const flex_int16_t yy_nxt[2638] =
      2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116,
      2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126,
 
-     2127, 2128, 2129, 2130, 2132, 2131, 2133, 2134, 2135, 2136,
+     2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136,
      2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146,
-     2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156,
+     2147, 2148, 2149, 2150, 2152, 2151, 2153, 2154, 2155, 2156,
      2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166,
-     2167, 2168, 2169, 2170,   12,   12,   12,   36,   36,   36,
+     2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176,
+     2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186,
+     2187, 2188, 2189, 2190,   12,   12,   12,   36,   36,   36,
        79,   98,   79,  100,  100,  100,  113,  113,  113,  188,
-      853,  188,  207,  207,  207,  852,  849,  848,  847,  846,
-      845,  844,  843,  842,  841,  840,  839,  838,  837,  836,
-      835,  834,  833,  832,  831,  830,  829,  828,  827,  826,
-      825,  824,  823,  822,  821,  820,  819,  818,  817,  814,
-
-      813,  812,  811,  810,  809,  808,  807,  806,  805,  804,
-      803,  802,  801,  800,  799,  798,  797,  796,  795,  794,
-      793,  792,  789,  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,
-      759,  758,  757,  756,  755,  754,  753,  752,  751,  750,
-      749,  748,  747,  746,  745,  744,  743,  740,  739,  737,
-      734,  733,  732,  731,  730,  729,  728,  727,  726,  725,
-      724,  723,  722,  721,  720,  719,  718,  717,  716,  715,
-      714,  713,  712,  711,  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,  674,  673,  672,
-      671,  670,  669,  668,  667,  666,  663,  662,  661,  660,
-      659,  658,  657,  656,  655,  654,  653,  652,  651,  650,
-      649,  648,  647,  646,  645,  644,  641,  640,  639,  638,
-      637,  636,  635,  634,  633,  629,  628,  621,  620,  619,
-      618,  617,  616,  615,  614,  613,  612,  611,  610,  609,
-      608,  607,  606,  604,  601,  600,  599,  597,  596,  595,
-      594,  593,  590,  589,  588,  587,  586,  585,  584,  583,
-
-      582,  581,  580,  579,  578,  577,  576,  575,  574,  573,
-      570,  569,  568,  567,  566,  565,  564,  563,  560,  559,
-      556,  555,  554,  553,  552,  549,  548,  547,  546,  545,
-      544,  543,  542,  541,  540,  539,  538,  537,  536,  532,
-      531,  530,  529,  528,  527,  526,  522,  521,  520,  519,
-      518,  517,  516,  515,  514,  513,  512,  511,  506,  505,
-      504,  503,  502,  501,  500,  499,  498,  497,  496,  495,
-      494,  493,  490,  489,  488,  487,  486,  485,  484,  483,
-      482,  481,  480,  479,  478,  477,  476,  475,  474,  473,
-      472,  471,  470,  468,  466,  465,  463,  461,  457,  454,
-
-      453,  450,  449,  448,  446,  445,  444,  442,  441,  440,
-      437,  436,  435,  434,  433,  432,  431,  430,  429,  428,
-      427,  426,  425,  424,  421,  420,  419,  418,  417,  416,
-      415,  414,  413,  412,  411,  410,  407,  406,  402,  401,
-      400,  399,  398,  396,  395,  394,  393,  392,  391,  387,
-      386,  385,  384,  383,  382,  381,  378,  377,  376,  375,
-      374,  373,  372,  371,  370,  369,  368,  367,  366,  365,
-      364,  363,  362,  361,  360,  359,  358,  357,  356,  355,
-      349,  348,  347,  346,  345,  344,  343,  342,  341,  340,
-      339,  208,  333,  331,  327,  325,  324,  317,  316,  315,
-
-      314,  312,  310,  306,  305,  304,  301,  300,  299,  284,
-      278,  273,  272,  271,  268,  265,  264,  263,  262,  261,
-      260,  257,  256,  255,  252,  251,  250,  249,  248,  247,
-      243,  242,  235,  234,  233,  232,  231,  228,  227,  226,
+      852,  188,  207,  207,  207,  851,  850,  849,  848,  847,
+      846,  845,  844,  843,  842,  841,  840,  839,  838,  837,
+
+      836,  835,  834,  833,  832,  831,  830,  829,  828,  827,
+      826,  825,  824,  823,  822,  819,  818,  817,  816,  815,
+      814,  813,  812,  811,  810,  809,  808,  807,  806,  805,
+      804,  803,  802,  801,  800,  799,  798,  797,  794,  793,
+      792,  791,  790,  789,  788,  787,  786,  785,  784,  783,
+      782,  781,  780,  779,  778,  777,  776,  775,  774,  773,
+      772,  771,  770,  769,  768,  767,  766,  763,  762,  761,
+      760,  759,  758,  757,  756,  755,  754,  753,  752,  751,
+      750,  749,  748,  747,  744,  743,  741,  738,  737,  736,
+      735,  734,  733,  732,  731,  730,  729,  728,  727,  726,
+
+      725,  724,  723,  722,  721,  720,  719,  718,  717,  716,
+      715,  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,  678,  677,  676,  675,  674,  673,
+      672,  671,  670,  667,  666,  665,  664,  663,  662,  661,
+      660,  659,  658,  657,  656,  655,  654,  653,  652,  651,
+      650,  649,  648,  645,  644,  643,  642,  641,  640,  639,
+      638,  637,  636,  632,  631,  624,  623,  622,  621,  620,
+      619,  618,  617,  616,  615,  614,  613,  612,  611,  610,
+
+      609,  607,  604,  603,  602,  600,  599,  598,  597,  596,
+      593,  592,  591,  590,  589,  588,  587,  586,  585,  584,
+      583,  582,  581,  580,  579,  578,  577,  576,  573,  572,
+      571,  570,  569,  568,  567,  566,  563,  562,  559,  558,
+      557,  556,  555,  552,  551,  550,  549,  548,  547,  546,
+      545,  544,  543,  542,  541,  540,  539,  535,  534,  533,
+      532,  531,  530,  529,  525,  524,  523,  522,  521,  520,
+      519,  518,  517,  516,  515,  514,  509,  508,  507,  506,
+      505,  504,  503,  502,  501,  500,  499,  498,  497,  496,
+      495,  492,  491,  490,  489,  488,  487,  486,  485,  484,
+
+      483,  482,  481,  480,  479,  478,  477,  476,  475,  474,
+      473,  472,  470,  468,  467,  465,  463,  459,  456,  455,
+      452,  451,  450,  448,  447,  446,  444,  443,  442,  439,
+      438,  437,  436,  435,  434,  433,  432,  431,  430,  429,
+      428,  427,  426,  423,  422,  421,  420,  419,  418,  417,
+      416,  415,  414,  413,  412,  409,  408,  404,  403,  402,
+      401,  400,  398,  397,  396,  395,  394,  393,  389,  388,
+      387,  386,  385,  384,  383,  380,  379,  378,  377,  376,
+      375,  374,  373,  372,  371,  370,  369,  368,  367,  366,
+      365,  364,  363,  362,  361,  360,  359,  358,  357,  356,
+
+      350,  349,  348,  347,  346,  345,  344,  343,  342,  341,
+      340,  208,  334,  332,  328,  326,  325,  318,  317,  316,
+      315,  313,  311,  307,  306,  305,  302,  301,  300,  285,
+      279,  274,  273,  272,  269,  266,  265,  264,  263,  262,
+      261,  258,  257,  256,  253,  252,  251,  250,  249,  248,
+      244,  243,  235,  234,  233,  232,  231,  228,  227,  226,
       222,  219,  215,  214,  213,  208,  199,  197,  196,  195,
       186,  166,  145,  119,  105,  103,   43,   99,   97,   96,
-       87,   43, 2171,   11, 2171, 2171, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171
+       87,   43, 2191,   11, 2191, 2191, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191
     } ;
 
-static const flex_int16_t yy_chk[2638] =
+static const flex_int16_t yy_chk[2658] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       21,  682,    3,    3,    3,   21,    1,    1,    3,   44,
+       21,  686,    3,    3,    3,   21,    1,    1,    3,   44,
         0,    1,    4,    4,    4,   13,    1,   13,    4,   27,
        28,    1,  107,    1,    5,    5,    5,   26,   32,    1,
         1,   33,    6,    6,    6,    7,    7,    7,    1,    7,
-      682,    8,    8,    8,    1,    8,   44,   27,   28,  107,
+      686,    8,    8,    8,    1,    8,   44,   27,   28,  107,
        26,    1,    1,    2,    2,    2,   32,    2,    2,   33,
         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
         2,    2,    9,    9,    9,   31,    5,   48,    2,    2,
@@ -1796,9 +1807,9 @@ static const flex_int16_t yy_chk[2638] =
        17,   17,   17,   17,   17,   19,   62,   19,   19,   19,
        19,   19,  146,   17,   20,   20,   20,   20,   20,   22,
        19,   22,   22,   22,   22,   22,   63,   20,   53,   62,
-       57,   59,  722,   63,   22,   59,   17,   73,   53,   59,
+       57,   59,  721,   63,   22,   59,   17,   73,   53,   59,
        62,   73,   59,   19,   70,   59,   90,  112,  100,   59,
-       20,   53,   70,  723,   70,   92,   57,   22,   45,   70,
+       20,   53,   70,  722,   70,   92,   57,   22,   45,   70,
        70,   61,   57,   61,   45,   57,   53,   45,  724,   45,
       112,   45,   90,   45,   61,   56,   67,   67,   45,   45,
 
@@ -1811,11 +1822,11 @@ static const flex_int16_t yy_chk[2638] =
        69,   68,   69,   78,   69,   74,   76,  108,   75,   74,
        91,  725,   74,   68,   95,  104,   76,   68,   75,   74,
        74,   76,   93,   94,   74,   74,  134,   78,  134,  136,
-      726,   75,  109,   75,  106,  108,   75,   78,   80,   80,
+      135,   75,  109,   75,  106,  108,   75,   78,   80,   80,
 
        80,   80,   80,  135,  150,  136,   75,  135,  150,   94,
-      727,   80,   81,   75,   81,   81,   81,   81,   81,  109,
-      106,  110,  159,   82,  111,   82,  728,   81,   82,   82,
+      726,   80,   81,   75,   81,   81,   81,   81,   81,  109,
+      106,  110,  159,   82,  111,   82,  727,   81,   82,   82,
        82,   82,   82,   83,   80,   83,   83,   83,   83,   83,
        84,   84,   84,   84,   84,  102,  211,  116,   83,  110,
        81,  111,  102,   84,   88,   88,   88,   88,   88,   89,
@@ -1824,241 +1835,243 @@ static const flex_int16_t yy_chk[2638] =
       124,  165,  102,  178,  165,  165,  102,  163,  163,  163,
       102,  174,  166,  169,  169,  157,  166,  157,  102,  191,
 
-      211,  729,  102,  179,  102,  102,  115,  168,  181,  179,
+      211,  728,  102,  179,  102,  102,  115,  168,  181,  179,
       178,  183,  189,  190,  115,  115,  115,  115,  115,  193,
-      259,  730,  191,  115,  115,  115,  115,  115,  115,  170,
-      315,  192,  224,  170,  200,  224,  181,  170,  183,  190,
+      260,  729,  191,  115,  115,  115,  115,  115,  115,  170,
+      316,  192,  224,  170,  200,  224,  181,  170,  183,  190,
       189,  194,  168,  168,  168,  193,  115,  115,  115,  115,
       115,  115,  198,  168,  201,  168,  202,  168,  168,  192,
-      168,  204,  200,  206,  194,  212,  225,  275,  251,  288,
-      326,  272,  288,  259,  225,  198,  259,  275,  571,  202,
-      225,  201,  315,  266,  204,  251,  318,  303,  212,  303,
-      206,  210,  210,  210,  210,  210,  311,  321,  413,  326,
-
-      210,  210,  210,  210,  210,  210,  266,  272,  307,  318,
-      330,  328,  325,  307,  420,  338,  732,  397,  460,  311,
-      321,  272,  325,  210,  210,  210,  210,  210,  210,  360,
-      571,  375,  733,  311,  328,  360,  375,  396,  330,  335,
-      335,  335,  335,  335,  338,  397,  460,  396,  335,  335,
-      335,  335,  335,  335,  388,  388,  413,  423,  432,  388,
-      452,  423,  432,  420,  466,  452,  466,  491,  737,  524,
-      609,  335,  335,  335,  335,  335,  335,  609,  502,  524,
-      491,  469,  491,  502,  375,  535,  657,  657,  602,  375,
-      535,  466,  603,  466,  467,  467,  467,  467,  467,  738,
-
-      719,  736,  488,  467,  467,  467,  467,  467,  467,  469,
-      488,  719,  488,  488,  488,  602,  488,  605,  627,  735,
-      603,  627,  605,  739,  736,  740,  467,  467,  467,  467,
-      467,  467,  741,  742,  743,  744,  745,  746,  747,  748,
-      749,  750,  752,  751,  751,  748,  751,  735,  753,  754,
-      755,  756,  757,  758,  759,  760,  761,  762,  763,  764,
-      765,  766,  767,  768,  769,  770,  771,  772,  773,  774,
-      771,  775,  776,  777,  771,  779,  780,  781,  782,  783,
-      784,  785,  786,  787,  788,  789,  790,  791,  792,  793,
-      794,  795,  796,  797,  798,  799,  800,  798,  801,  803,
-
-      804,  805,  806,  807,  808,  809,  810,  811,  812,  813,
-      814,  816,  817,  818,  819,  820,  821,  822,  823,  824,
-      825,  826,  827,  828,  829,  830,  831,  832,  833,  834,
-      835,  836,  837,  838,  839,  840,  841,  842,  842,  843,
-      844,  845,  840,  847,  846,  842,  848,  849,  851,  842,
-      846,  852,  853,  854,  855,  856,  857,  858,  859,  860,
-      861,  862,  863,  864,  865,  866,  867,  868,  869,  870,
-      871,  872,  873,  874,  875,  876,  877,  878,  879,  881,
-      882,  883,  884,  885,  886,  887,  888,  889,  890,  891,
-      892,  893,  894,  866,  895,  896,  897,  898,  899,  900,
-
-      901,  902,  903,  904,  905,  906,  907,  908,  909,  911,
-      912,  913,  914,  915,  916,  917,  918,  919,  920,  916,
-      921,  922,  923,  924,  925,  926,  927,  930,  931,  932,
-      933,  934,  935,  938,  939,  940,  941,  942,  943,  945,
-      946,  947,  948,  949,  946,  950,  951,  952,  953,  954,
-      957,  958,  959,  960,  961,  962,  963,  964,  965,  966,
-      967,  968,  969,  970,  971,  972,  973,  974,  975,  976,
-      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, 1012, 1013, 1014, 1015, 1016, 1017, 1018,
-     1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1003, 1027,
-     1028, 1002, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036,
-     1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047,
-     1048, 1049, 1050, 1052, 1053, 1054, 1055, 1056, 1057, 1058,
-     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, 1087, 1088, 1089, 1090,
-     1091, 1093, 1094, 1082, 1095, 1096, 1097, 1098, 1099, 1100,
-     1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110,
-
-     1112, 1113, 1114, 1115, 1116, 1056, 1117, 1118, 1119, 1120,
-     1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130,
-     1131, 1134, 1132, 1135, 1136, 1137, 1138, 1139, 1141, 1142,
-     1143, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
-     1154, 1155, 1156, 1157, 1158, 1159, 1160, 1162, 1131, 1132,
-     1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172,
-     1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1183,
-     1184, 1185, 1186, 1187, 1183, 1188, 1189, 1190, 1191, 1192,
-     1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202,
-     1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212,
-
-     1213, 1214, 1215, 1217, 1218, 1219, 1220, 1221, 1222, 1223,
-     1224, 1225, 1226, 1227, 1184, 1229, 1230, 1231, 1233, 1234,
-     1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244,
-     1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1255,
-     1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265, 1266,
-     1267, 1268, 1269, 1270, 1271, 1273, 1274, 1275, 1276, 1277,
-     1278, 1279, 1255, 1281, 1282, 1283, 1284, 1285, 1256, 1286,
-     1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296,
-     1297, 1298, 1299, 1301, 1303, 1305, 1306, 1307, 1308, 1309,
-     1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1320,
-
-     1322, 1323, 1324, 1326, 1327, 1328, 1329, 1330, 1331, 1333,
-     1335, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345,
-     1346, 1347, 1348, 1349, 1350, 1351, 1353, 1354, 1355, 1356,
-     1357, 1358, 1359, 1362, 1363, 1364, 1365, 1366, 1367, 1368,
-     1369, 1370, 1371, 1372, 1373, 1375, 1376, 1377, 1378, 1379,
-     1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390,
-     1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400,
-     1401, 1372, 1345, 1402, 1403, 1405, 1406, 1407, 1408, 1409,
-     1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419,
-     1420, 1421, 1422, 1423, 1381, 1424, 1425, 1426, 1427, 1428,
-
-     1429, 1430, 1432, 1424, 1435, 1436, 1437, 1438, 1439, 1440,
-     1441, 1442, 1443, 1444, 1445, 1446, 1448, 1449, 1450, 1451,
-     1452, 1453, 1456, 1455, 1451, 1455, 1458, 1459, 1462, 1463,
-     1464, 1465, 1466, 1467, 1468, 1469, 1471, 1472, 1473, 1474,
-     1475, 1477, 1478, 1479, 1474, 1480, 1481, 1483, 1484, 1485,
-     1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495,
-     1496, 1497, 1498, 1475, 1499, 1501, 1502, 1503, 1505, 1506,
-     1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516,
-     1518, 1520, 1521, 1523, 1524, 1525, 1526, 1527, 1528, 1529,
-     1530, 1531, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540,
-
-     1543, 1544, 1546, 1547, 1548, 1550, 1551, 1550, 1552, 1553,
-     1550, 1554, 1555, 1550, 1556, 1557, 1558, 1559, 1560, 1561,
-     1562, 1563, 1565, 1567, 1568, 1570, 1571, 1573, 1575, 1576,
-     1577, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587,
-     1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1585, 1596,
-     1597, 1598, 1599, 1571, 1600, 1601, 1602, 1603, 1604, 1605,
-     1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614,
-     1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624,
-     1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634,
-     1635, 1636, 1637, 1638, 1640, 1641, 1642, 1643, 1644, 1645,
-
-     1646, 1647, 1648, 1650, 1651, 1652, 1654, 1655, 1657, 1658,
-     1661, 1662, 1663, 1665, 1666, 1667, 1668, 1669, 1670, 1606,
-     1671, 1672, 1673, 1674, 1675, 1676, 1678, 1680, 1681, 1682,
-     1683, 1684, 1685, 1686, 1687, 1655, 1688, 1690, 1691, 1692,
-     1693, 1695, 1696, 1698, 1699, 1700, 1702, 1703, 1704, 1705,
-     1706, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716,
-     1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726,
-     1727, 1728, 1729, 1730, 1731, 1732, 1733, 1735, 1736, 1738,
-     1739, 1740, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749,
-     1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759,
-
-     1761, 1762, 1763, 1765, 1766, 1767, 1768, 1770, 1771, 1772,
-     1773, 1774, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783,
-     1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1793, 1794,
-     1796, 1798, 1800, 1801, 1802, 1796, 1803, 1806, 1808, 1809,
-     1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1820,
-     1821, 1822, 1823, 1824, 1826, 1827, 1828, 1829, 1830, 1831,
-     1832, 1833, 1834, 1836, 1837, 1838, 1840, 1841, 1842, 1843,
-     1844, 1845, 1846, 1847, 1848, 1849, 1851, 1852, 1853, 1854,
-     1855, 1857, 1858, 1859, 1860, 1863, 1864, 1865, 1866, 1867,
-     1868, 1869, 1870, 1872, 1873, 1874, 1875, 1876, 1877, 1878,
-
-     1879, 1880, 1881, 1882, 1883, 1885, 1887, 1888, 1889, 1890,
-     1891, 1892, 1893, 1894, 1895, 1897, 1899, 1900, 1901, 1902,
-     1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1909,
-     1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921,
-     1922, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932,
-     1933, 1934, 1936, 1940, 1942, 1943, 1944, 1945, 1946, 1947,
-     1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957,
-     1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968,
-     1969, 1970, 1971, 1972, 1974, 1975, 1976, 1977, 1978, 1980,
-     1982, 1985, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
-
-     1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006,
-     2007, 2008, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017,
-     2018, 2019, 2020, 2021, 2023, 2024, 2025, 2026, 2027, 2028,
-     2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039,
-     2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049,
-     2050, 2051, 2052, 2053, 2054, 2055, 2057, 2058, 2060, 2061,
-     2062, 2063, 2065, 2066, 2067, 2068, 2069, 2073, 2076, 2077,
-     2078, 2079, 2080, 2081, 2082, 2083, 2085, 2086, 2087, 2088,
-     2089, 2090, 2091, 2092, 2093, 2095, 2096, 2097, 2098, 2099,
-     2100, 2102, 2104, 2106, 2107, 2108, 2109, 2110, 2111, 2112,
-
-     2114, 2115, 2116, 2117, 2118, 2117, 2119, 2120, 2122, 2123,
-     2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136,
-     2137, 2138, 2139, 2140, 2141, 2143, 2144, 2145, 2146, 2149,
-     2150, 2151, 2153, 2154, 2156, 2158, 2159, 2160, 2161, 2162,
-     2163, 2164, 2165, 2167, 2172, 2172, 2172, 2173, 2173, 2173,
-     2174, 2175, 2174, 2176, 2176, 2176, 2177, 2177, 2177, 2178,
-      721, 2178, 2179, 2179, 2179,  720,  718,  717,  716,  714,
-      713,  712,  711,  710,  709,  708,  707,  706,  705,  704,
-      703,  702,  700,  699,  698,  697,  696,  695,  694,  693,
-      692,  691,  689,  688,  687,  686,  685,  684,  683,  681,
-
-      680,  679,  678,  677,  676,  675,  674,  673,  671,  670,
-      669,  668,  667,  666,  665,  664,  663,  662,  661,  660,
-      659,  658,  656,  655,  654,  653,  652,  651,  650,  649,
-      648,  647,  646,  645,  644,  643,  641,  640,  639,  638,
-      637,  636,  635,  634,  633,  632,  631,  630,  629,  628,
+      168,  204,  200,  206,  194,  212,  225,  276,  252,  289,
+      327,  273,  289,  260,  225,  198,  260,  276,  574,  202,
+      225,  201,  316,  267,  204,  252,  319,  304,  212,  304,
+      206,  210,  210,  210,  210,  210,  312,  322,  415,  327,
+
+      210,  210,  210,  210,  210,  210,  267,  273,  308,  319,
+      331,  329,  326,  308,  422,  339,  730,  399,  462,  312,
+      322,  273,  326,  210,  210,  210,  210,  210,  210,  361,
+      574,  377,  731,  312,  329,  361,  377,  398,  331,  336,
+      336,  336,  336,  336,  339,  399,  462,  398,  336,  336,
+      336,  336,  336,  336,  390,  390,  415,  425,  434,  390,
+      454,  425,  434,  422,  468,  454,  468,  493,  732,  527,
+      612,  336,  336,  336,  336,  336,  336,  612,  505,  527,
+      493,  471,  493,  505,  377,  538,  661,  661,  605,  377,
+      538,  468,  606,  468,  469,  469,  469,  469,  469,  733,
+
+      723,  734,  490,  469,  469,  469,  469,  469,  469,  471,
+      490,  723,  490,  490,  490,  605,  490,  608,  630,  736,
+      606,  630,  608,  737,  739,  740,  469,  469,  469,  469,
+      469,  469,  741,  742,  743,  744,  745,  746,  747,  748,
+      749,  750,  751,  752,  753,  754,  756,  757,  740,  752,
+      755,  755,  739,  755,  758,  759,  760,  761,  762,  763,
+      764,  765,  766,  767,  768,  769,  770,  771,  772,  773,
+      774,  775,  776,  777,  778,  775,  779,  780,  781,  775,
+      782,  784,  785,  786,  787,  788,  789,  790,  791,  792,
+      793,  794,  795,  796,  797,  798,  799,  800,  801,  802,
+
+      803,  804,  805,  803,  806,  808,  809,  810,  811,  812,
+      813,  814,  815,  816,  817,  818,  819,  821,  822,  823,
+      824,  825,  826,  827,  828,  829,  830,  831,  832,  833,
+      834,  835,  836,  837,  838,  839,  840,  841,  842,  843,
+      844,  845,  846,  847,  847,  848,  849,  850,  845,  852,
+      851,  847,  853,  854,  856,  847,  851,  857,  858,  859,
+      860,  861,  862,  863,  864,  865,  866,  867,  868,  869,
+      870,  871,  872,  873,  874,  875,  876,  877,  878,  879,
+      880,  881,  882,  883,  884,  886,  887,  888,  889,  890,
+      891,  892,  893,  894,  895,  896,  897,  898,  899,  871,
+
+      900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
+      910,  911,  912,  913,  914,  915,  917,  918,  919,  920,
+      921,  922,  923,  924,  925,  926,  922,  927,  928,  929,
+      930,  931,  932,  933,  936,  937,  938,  939,  940,  941,
+      944,  945,  946,  947,  948,  949,  951,  952,  953,  954,
+      955,  952,  956,  957,  958,  959,  960,  963,  964,  965,
+      966,  967,  968,  969,  970,  971,  972,  973,  974,  975,
+      976,  977,  978,  979,  980,  981,  982,  983,  984,  985,
+      986,  987,  988,  989,  990,  991,  992,  993,  995,  996,
+      997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
+
+     1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016,
+     1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027,
+     1028, 1029, 1030, 1031, 1032, 1009, 1033, 1034, 1008, 1035,
+     1036, 1037, 1038, 1039, 1040, 1041, 1042, 1044, 1045, 1046,
+     1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,
+     1057, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 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, 1094, 1095, 1096, 1097, 1098, 1100,
+     1101, 1089, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109,
+
+     1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1119, 1120,
+     1121, 1122, 1123, 1063, 1124, 1125, 1126, 1127, 1128, 1129,
+     1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1141,
+     1139, 1142, 1143, 1144, 1145, 1146, 1148, 1149, 1150, 1152,
+     1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162,
+     1163, 1164, 1165, 1166, 1167, 1169, 1138, 1139, 1170, 1171,
+     1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181,
+     1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1191, 1192,
+     1193, 1194, 1195, 1191, 1196, 1197, 1198, 1199, 1200, 1201,
+     1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211,
+
+     1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221,
+     1222, 1223, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232,
+     1233, 1234, 1235, 1192, 1237, 1238, 1239, 1241, 1242, 1243,
+     1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
+     1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1263, 1264,
+     1265, 1266, 1267, 1268, 1269, 1270, 1271, 1273, 1274, 1275,
+     1276, 1277, 1278, 1279, 1281, 1282, 1283, 1284, 1285, 1286,
+     1287, 1263, 1289, 1290, 1291, 1292, 1293, 1264, 1294, 1295,
+     1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305,
+     1306, 1307, 1308, 1310, 1312, 1314, 1315, 1316, 1317, 1318,
+
+     1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1329,
+     1331, 1332, 1333, 1335, 1336, 1337, 1338, 1339, 1340, 1342,
+     1344, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354,
+     1355, 1356, 1357, 1358, 1359, 1360, 1362, 1363, 1364, 1365,
+     1366, 1367, 1368, 1371, 1372, 1373, 1374, 1375, 1376, 1377,
+     1378, 1379, 1380, 1381, 1382, 1384, 1385, 1386, 1387, 1388,
+     1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399,
+     1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409,
+     1410, 1381, 1354, 1411, 1412, 1414, 1415, 1416, 1417, 1418,
+     1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428,
+
+     1429, 1430, 1431, 1432, 1390, 1433, 1434, 1435, 1436, 1437,
+     1438, 1439, 1440, 1442, 1434, 1445, 1446, 1447, 1448, 1449,
+     1450, 1451, 1452, 1453, 1454, 1455, 1456, 1458, 1459, 1460,
+     1461, 1462, 1463, 1466, 1465, 1461, 1465, 1468, 1469, 1472,
+     1473, 1474, 1475, 1476, 1477, 1478, 1479, 1481, 1482, 1483,
+     1484, 1485, 1487, 1488, 1489, 1484, 1490, 1491, 1493, 1494,
+     1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504,
+     1505, 1506, 1507, 1508, 1485, 1509, 1511, 1512, 1513, 1515,
+     1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525,
+     1526, 1527, 1529, 1531, 1532, 1534, 1535, 1536, 1537, 1538,
+
+     1539, 1540, 1541, 1542, 1544, 1545, 1546, 1547, 1548, 1549,
+     1550, 1551, 1554, 1555, 1557, 1558, 1559, 1561, 1562, 1561,
+     1563, 1564, 1561, 1565, 1566, 1561, 1567, 1568, 1569, 1570,
+     1571, 1572, 1573, 1574, 1576, 1578, 1579, 1581, 1582, 1584,
+     1586, 1587, 1588, 1590, 1591, 1592, 1593, 1594, 1595, 1596,
+     1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606,
+     1596, 1607, 1608, 1609, 1610, 1582, 1611, 1612, 1613, 1614,
+     1615, 1616, 1617, 1617, 1618, 1619, 1620, 1621, 1622, 1623,
+     1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633,
+     1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643,
+
+     1644, 1645, 1646, 1647, 1648, 1649, 1650, 1652, 1653, 1654,
+     1655, 1656, 1657, 1658, 1659, 1660, 1662, 1663, 1664, 1666,
+     1667, 1669, 1670, 1673, 1674, 1675, 1677, 1678, 1679, 1680,
+     1681, 1682, 1618, 1683, 1684, 1685, 1686, 1687, 1688, 1690,
+     1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1667, 1700,
+     1701, 1703, 1704, 1705, 1706, 1708, 1709, 1711, 1712, 1713,
+     1715, 1716, 1717, 1718, 1719, 1721, 1722, 1723, 1724, 1725,
+     1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735,
+     1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745,
+     1746, 1748, 1749, 1751, 1752, 1753, 1755, 1756, 1757, 1758,
+
+     1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768,
+     1769, 1770, 1771, 1772, 1773, 1775, 1776, 1777, 1779, 1780,
+     1781, 1782, 1784, 1785, 1786, 1787, 1788, 1790, 1791, 1792,
+     1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802,
+     1803, 1804, 1805, 1807, 1808, 1810, 1812, 1814, 1815, 1816,
+     1810, 1817, 1820, 1822, 1823, 1824, 1825, 1826, 1827, 1828,
+     1829, 1830, 1831, 1832, 1834, 1835, 1836, 1837, 1838, 1839,
+     1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1851,
+     1852, 1853, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862,
+     1863, 1864, 1866, 1867, 1868, 1869, 1870, 1872, 1873, 1874,
+
+     1875, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1887,
+     1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897,
+     1898, 1899, 1901, 1903, 1904, 1905, 1906, 1907, 1908, 1909,
+     1910, 1911, 1913, 1915, 1916, 1917, 1918, 1919, 1920, 1921,
+     1922, 1923, 1924, 1925, 1926, 1927, 1925, 1928, 1929, 1930,
+     1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1940, 1941,
+     1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951,
+     1953, 1957, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966,
+     1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1976, 1977,
+     1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987,
+
+     1988, 1989, 1990, 1992, 1993, 1994, 1995, 1996, 1998, 2000,
+     2003, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014,
+     2015, 2016, 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025,
+     2026, 2027, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036,
+     2037, 2038, 2039, 2040, 2042, 2043, 2044, 2045, 2046, 2047,
+     2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2058, 2059,
+     2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069,
+     2070, 2071, 2072, 2073, 2074, 2075, 2077, 2078, 2080, 2081,
+     2082, 2083, 2085, 2086, 2087, 2088, 2089, 2093, 2096, 2097,
+     2098, 2099, 2100, 2101, 2102, 2103, 2105, 2106, 2107, 2108,
+
+     2109, 2110, 2111, 2112, 2113, 2115, 2116, 2117, 2118, 2119,
+     2120, 2122, 2124, 2126, 2127, 2128, 2129, 2130, 2131, 2132,
+     2134, 2135, 2136, 2137, 2138, 2137, 2139, 2140, 2142, 2143,
+     2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156,
+     2157, 2158, 2159, 2160, 2161, 2163, 2164, 2165, 2166, 2169,
+     2170, 2171, 2173, 2174, 2176, 2178, 2179, 2180, 2181, 2182,
+     2183, 2184, 2185, 2187, 2192, 2192, 2192, 2193, 2193, 2193,
+     2194, 2195, 2194, 2196, 2196, 2196, 2197, 2197, 2197, 2198,
+      720, 2198, 2199, 2199, 2199,  718,  717,  716,  715,  714,
+      713,  712,  711,  710,  709,  708,  707,  706,  704,  703,
+
+      702,  701,  700,  699,  698,  697,  696,  695,  693,  692,
+      691,  690,  689,  688,  687,  685,  684,  683,  682,  681,
+      680,  679,  678,  677,  675,  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,  645,  644,  643,  642,  641,  640,  639,  638,
+      637,  636,  635,  634,  633,  632,  631,  629,  628,  627,
       626,  625,  624,  623,  622,  621,  620,  619,  618,  617,
-      616,  615,  614,  613,  612,  611,  610,  608,  607,  604,
-      598,  597,  596,  595,  594,  593,  592,  590,  589,  587,
-      586,  584,  583,  582,  581,  580,  579,  578,  577,  576,
-      575,  574,  573,  572,  570,  569,  568,  567,  566,  565,
-
-      564,  563,  562,  561,  560,  559,  558,  557,  556,  555,
-      554,  553,  551,  549,  548,  547,  546,  545,  544,  543,
-      542,  541,  540,  539,  538,  537,  536,  534,  533,  531,
-      530,  529,  528,  527,  526,  525,  523,  522,  521,  520,
-      519,  518,  517,  516,  515,  514,  513,  512,  511,  510,
-      509,  508,  506,  505,  504,  503,  501,  500,  499,  498,
-      497,  496,  495,  493,  492,  490,  489,  486,  485,  484,
-      483,  482,  481,  479,  478,  477,  476,  475,  474,  473,
-      472,  471,  470,  468,  464,  462,  461,  459,  458,  457,
-      454,  453,  451,  450,  448,  447,  446,  445,  444,  443,
-
-      442,  441,  440,  439,  438,  437,  436,  435,  434,  433,
-      431,  430,  429,  428,  427,  426,  425,  424,  422,  421,
-      419,  417,  416,  415,  414,  412,  411,  410,  409,  408,
-      407,  406,  405,  404,  403,  402,  401,  400,  398,  395,
-      394,  393,  392,  391,  390,  389,  387,  386,  385,  384,
-      383,  382,  381,  380,  379,  378,  377,  376,  374,  373,
+      616,  615,  614,  613,  611,  610,  607,  601,  600,  599,
+      598,  597,  596,  595,  593,  592,  590,  589,  587,  586,
+
+      585,  584,  583,  582,  581,  580,  579,  578,  577,  576,
+      575,  573,  572,  571,  570,  569,  568,  567,  566,  565,
+      564,  563,  562,  561,  560,  559,  558,  557,  556,  554,
+      552,  551,  550,  549,  548,  547,  546,  545,  544,  543,
+      542,  541,  540,  539,  537,  536,  534,  533,  532,  531,
+      530,  529,  528,  526,  525,  524,  523,  522,  521,  520,
+      519,  518,  517,  516,  515,  514,  513,  512,  511,  509,
+      508,  507,  506,  504,  503,  502,  501,  500,  499,  498,
+      497,  495,  494,  492,  491,  488,  487,  486,  485,  484,
+      483,  481,  480,  479,  478,  477,  476,  475,  474,  473,
+
+      472,  470,  466,  464,  463,  461,  460,  459,  456,  455,
+      453,  452,  450,  449,  448,  447,  446,  445,  444,  443,
+      442,  441,  440,  439,  438,  437,  436,  435,  433,  432,
+      431,  430,  429,  428,  427,  426,  424,  423,  421,  419,
+      418,  417,  416,  414,  413,  412,  411,  410,  409,  408,
+      407,  406,  405,  404,  403,  402,  400,  397,  396,  395,
+      394,  393,  392,  391,  389,  388,  387,  386,  385,  384,
+      383,  382,  381,  380,  379,  378,  376,  375,  374,  373,
       372,  371,  370,  369,  368,  367,  366,  365,  364,  363,
-      362,  361,  359,  358,  357,  356,  355,  354,  353,  352,
-      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
-      341,  340,  339,  337,  334,  332,  329,  327,  324,  317,
+      362,  360,  359,  358,  357,  356,  355,  354,  353,  352,
 
-      316,  314,  313,  312,  310,  309,  308,  306,  305,  304,
+      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
+      341,  340,  338,  335,  333,  330,  328,  325,  318,  317,
+      315,  314,  313,  311,  310,  309,  307,  306,  305,  303,
       302,  301,  300,  299,  298,  297,  296,  295,  294,  293,
-      292,  291,  290,  289,  287,  286,  285,  284,  283,  282,
-      281,  280,  279,  278,  277,  276,  274,  273,  271,  270,
-      269,  268,  267,  265,  264,  263,  262,  261,  260,  258,
-      257,  256,  255,  254,  253,  252,  250,  249,  247,  246,
+      292,  291,  290,  288,  287,  286,  285,  284,  283,  282,
+      281,  280,  279,  278,  277,  275,  274,  272,  271,  270,
+      269,  268,  266,  265,  264,  263,  262,  261,  259,  258,
+      257,  256,  255,  254,  253,  251,  250,  248,  247,  246,
       245,  244,  243,  242,  241,  240,  239,  238,  237,  236,
       235,  234,  233,  232,  231,  230,  229,  228,  227,  226,
+
       223,  222,  221,  220,  219,  218,  217,  216,  215,  214,
       213,  207,  205,  203,  199,  197,  195,  187,  186,  185,
-
       184,  182,  180,  177,  176,  175,  173,  172,  171,  167,
       164,  162,  161,  160,  158,  156,  155,  154,  153,  152,
       151,  149,  148,  147,  145,  144,  143,  142,  141,  140,
       138,  137,  133,  132,  131,  130,  129,  127,  126,  125,
       123,  121,  119,  118,  117,  113,  105,  103,   98,   97,
        77,   72,   66,   58,   49,   47,   43,   41,   39,   38,
-       24,   14,   11, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
-     2171, 2171, 2171, 2171, 2171, 2171, 2171
+       24,   14,   11, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191,
+     2191, 2191, 2191, 2191, 2191, 2191, 2191
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2067,7 +2080,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[222] =
+static const flex_int16_t yy_rule_linenum[223] =
     {   0,
       146,  148,  150,  155,  156,  161,  162,  163,  175,  178,
       183,  190,  199,  208,  217,  226,  235,  244,  253,  263,
@@ -2091,9 +2104,9 @@ static const flex_int16_t yy_rule_linenum[222] =
      1867, 1877, 1887, 1897, 1907, 1917, 1927, 1937, 1946, 1955,
      1964, 1973, 1984, 1995, 2008, 2021, 2034, 2043, 2052, 2061,
 
-     2070, 2079, 2089, 2190, 2206, 2255, 2263, 2278, 2279, 2280,
-     2281, 2282, 2283, 2285, 2303, 2316, 2321, 2325, 2327, 2329,
-     2331
+     2070, 2079, 2088, 2098, 2199, 2215, 2264, 2272, 2287, 2288,
+     2289, 2290, 2291, 2292, 2294, 2312, 2325, 2330, 2334, 2336,
+     2338, 2340
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -2147,7 +2160,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 2150 "dhcp4_lexer.cc"
+#line 2163 "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
@@ -2173,8 +2186,8 @@ using namespace isc::dhcp;
    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 2176 "dhcp4_lexer.cc"
-#line 2177 "dhcp4_lexer.cc"
+#line 2189 "dhcp4_lexer.cc"
+#line 2190 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2502,7 +2515,7 @@ YY_DECL
     }
 
 
-#line 2505 "dhcp4_lexer.cc"
+#line 2518 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2531,13 +2544,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 >= 2172 )
+                               if ( yy_current_state >= 2192 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 2171 );
+               while ( yy_current_state != 2191 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2556,13 +2569,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 < 222 )
+                       else if ( yy_act < 223 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 222 )
+                       else if ( yy_act == 223 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 223 )
+                       else if ( yy_act == 224 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -5137,7 +5150,19 @@ YY_RULE_SETUP
        YY_BREAK
 case 203:
 YY_RULE_SETUP
-#line 2089 "dhcp4_lexer.ll"
+#line 2088 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::COMPATIBILITY:
+        return isc::dhcp::Dhcp4Parser::make_EXCLUDE_FIRST_LAST_24(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("exclude-first-last-24", driver.loc_);
+    }
+}
+       YY_BREAK
+case 204:
+YY_RULE_SETUP
+#line 2098 "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.
@@ -5239,10 +5264,10 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 204:
-/* rule 204 can match eol */
+case 205:
+/* rule 205 can match eol */
 YY_RULE_SETUP
-#line 2190 "dhcp4_lexer.ll"
+#line 2199 "dhcp4_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     std::string raw(yytext+1);
@@ -5259,10 +5284,10 @@ YY_RULE_SETUP
                  pos + 1);
 }
        YY_BREAK
-case 205:
-/* rule 205 can match eol */
+case 206:
+/* rule 206 can match eol */
 YY_RULE_SETUP
-#line 2206 "dhcp4_lexer.ll"
+#line 2215 "dhcp4_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     std::string raw(yytext+1);
@@ -5312,9 +5337,9 @@ YY_RULE_SETUP
                  pos);
 }
        YY_BREAK
-case 206:
+case 207:
 YY_RULE_SETUP
-#line 2255 "dhcp4_lexer.ll"
+#line 2264 "dhcp4_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     std::string raw(yytext+1);
@@ -5323,9 +5348,9 @@ YY_RULE_SETUP
                  raw.size() + 1);
 }
        YY_BREAK
-case 207:
+case 208:
 YY_RULE_SETUP
-#line 2263 "dhcp4_lexer.ll"
+#line 2272 "dhcp4_lexer.ll"
 {
     /* Bad string with an open unicode escape at the end */
     std::string raw(yytext+1);
@@ -5341,39 +5366,39 @@ YY_RULE_SETUP
                  pos + 1);
 }
        YY_BREAK
-case 208:
+case 209:
 YY_RULE_SETUP
-#line 2278 "dhcp4_lexer.ll"
+#line 2287 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 209:
+case 210:
 YY_RULE_SETUP
-#line 2279 "dhcp4_lexer.ll"
+#line 2288 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 210:
+case 211:
 YY_RULE_SETUP
-#line 2280 "dhcp4_lexer.ll"
+#line 2289 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 211:
+case 212:
 YY_RULE_SETUP
-#line 2281 "dhcp4_lexer.ll"
+#line 2290 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 212:
+case 213:
 YY_RULE_SETUP
-#line 2282 "dhcp4_lexer.ll"
+#line 2291 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 213:
+case 214:
 YY_RULE_SETUP
-#line 2283 "dhcp4_lexer.ll"
+#line 2292 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 214:
+case 215:
 YY_RULE_SETUP
-#line 2285 "dhcp4_lexer.ll"
+#line 2294 "dhcp4_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -5392,9 +5417,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 215:
+case 216:
 YY_RULE_SETUP
-#line 2303 "dhcp4_lexer.ll"
+#line 2312 "dhcp4_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -5408,43 +5433,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 216:
+case 217:
 YY_RULE_SETUP
-#line 2316 "dhcp4_lexer.ll"
+#line 2325 "dhcp4_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 217:
+case 218:
 YY_RULE_SETUP
-#line 2321 "dhcp4_lexer.ll"
+#line 2330 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 218:
+case 219:
 YY_RULE_SETUP
-#line 2325 "dhcp4_lexer.ll"
+#line 2334 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 219:
+case 220:
 YY_RULE_SETUP
-#line 2327 "dhcp4_lexer.ll"
+#line 2336 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 220:
+case 221:
 YY_RULE_SETUP
-#line 2329 "dhcp4_lexer.ll"
+#line 2338 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 221:
+case 222:
 YY_RULE_SETUP
-#line 2331 "dhcp4_lexer.ll"
+#line 2340 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 2333 "dhcp4_lexer.ll"
+#line 2342 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -5468,12 +5493,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 222:
+case 223:
 YY_RULE_SETUP
-#line 2356 "dhcp4_lexer.ll"
+#line 2365 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 5476 "dhcp4_lexer.cc"
+#line 5501 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -5792,7 +5817,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 >= 2172 )
+                       if ( yy_current_state >= 2192 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5825,11 +5850,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 >= 2172 )
+               if ( yy_current_state >= 2192 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 2171);
+       yy_is_jam = (yy_current_state == 2191);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -6578,7 +6603,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 2356 "dhcp4_lexer.ll"
+#line 2365 "dhcp4_lexer.ll"
 
 
 using namespace isc::dhcp;
index 8a077634a3ee7d3ff9dd3710ae71b1367080512e..17b46ce86cdb2d4802b98f27c55a669fc05eb9d7 100644 (file)
@@ -402,79 +402,79 @@ namespace isc { namespace dhcp {
         switch (yykind)
     {
       case symbol_kind::S_STRING: // "constant string"
-#line 294 "dhcp4_parser.yy"
+#line 295 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 408 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_INTEGER: // "integer"
-#line 294 "dhcp4_parser.yy"
+#line 295 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 414 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_FLOAT: // "floating point"
-#line 294 "dhcp4_parser.yy"
+#line 295 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 420 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_BOOLEAN: // "boolean"
-#line 294 "dhcp4_parser.yy"
+#line 295 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 426 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_value: // value
-#line 294 "dhcp4_parser.yy"
+#line 295 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 432 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_map_value: // map_value
-#line 294 "dhcp4_parser.yy"
+#line 295 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 438 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-#line 294 "dhcp4_parser.yy"
+#line 295 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 444 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_socket_type: // socket_type
-#line 294 "dhcp4_parser.yy"
+#line 295 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 450 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_outbound_interface_value: // outbound_interface_value
-#line 294 "dhcp4_parser.yy"
+#line 295 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 456 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_db_type: // db_type
-#line 294 "dhcp4_parser.yy"
+#line 295 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 462 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_on_fail_mode: // on_fail_mode
-#line 294 "dhcp4_parser.yy"
+#line 295 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 468 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_hr_mode: // hr_mode
-#line 294 "dhcp4_parser.yy"
+#line 295 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 474 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-#line 294 "dhcp4_parser.yy"
+#line 295 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 480 "dhcp4_parser.cc"
         break;
@@ -755,127 +755,127 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2: // $@1: %empty
-#line 303 "dhcp4_parser.yy"
+#line 304 "dhcp4_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 761 "dhcp4_parser.cc"
     break;
 
   case 4: // $@2: %empty
-#line 304 "dhcp4_parser.yy"
+#line 305 "dhcp4_parser.yy"
                       { ctx.ctx_ = ctx.CONFIG; }
 #line 767 "dhcp4_parser.cc"
     break;
 
   case 6: // $@3: %empty
-#line 305 "dhcp4_parser.yy"
+#line 306 "dhcp4_parser.yy"
                  { ctx.ctx_ = ctx.DHCP4; }
 #line 773 "dhcp4_parser.cc"
     break;
 
   case 8: // $@4: %empty
-#line 306 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 779 "dhcp4_parser.cc"
     break;
 
   case 10: // $@5: %empty
-#line 307 "dhcp4_parser.yy"
+#line 308 "dhcp4_parser.yy"
                    { ctx.ctx_ = ctx.SUBNET4; }
 #line 785 "dhcp4_parser.cc"
     break;
 
   case 12: // $@6: %empty
-#line 308 "dhcp4_parser.yy"
+#line 309 "dhcp4_parser.yy"
                  { ctx.ctx_ = ctx.POOLS; }
 #line 791 "dhcp4_parser.cc"
     break;
 
   case 14: // $@7: %empty
-#line 309 "dhcp4_parser.yy"
+#line 310 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 797 "dhcp4_parser.cc"
     break;
 
   case 16: // $@8: %empty
-#line 310 "dhcp4_parser.yy"
+#line 311 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.DHCP4; }
 #line 803 "dhcp4_parser.cc"
     break;
 
   case 18: // $@9: %empty
-#line 311 "dhcp4_parser.yy"
+#line 312 "dhcp4_parser.yy"
                       { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 809 "dhcp4_parser.cc"
     break;
 
   case 20: // $@10: %empty
-#line 312 "dhcp4_parser.yy"
+#line 313 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 815 "dhcp4_parser.cc"
     break;
 
   case 22: // $@11: %empty
-#line 313 "dhcp4_parser.yy"
+#line 314 "dhcp4_parser.yy"
                          { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 821 "dhcp4_parser.cc"
     break;
 
   case 24: // $@12: %empty
-#line 314 "dhcp4_parser.yy"
+#line 315 "dhcp4_parser.yy"
                      { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 827 "dhcp4_parser.cc"
     break;
 
   case 26: // $@13: %empty
-#line 315 "dhcp4_parser.yy"
+#line 316 "dhcp4_parser.yy"
                           { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 833 "dhcp4_parser.cc"
     break;
 
   case 28: // value: "integer"
-#line 323 "dhcp4_parser.yy"
+#line 324 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 839 "dhcp4_parser.cc"
     break;
 
   case 29: // value: "floating point"
-#line 324 "dhcp4_parser.yy"
+#line 325 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 845 "dhcp4_parser.cc"
     break;
 
   case 30: // value: "boolean"
-#line 325 "dhcp4_parser.yy"
+#line 326 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 851 "dhcp4_parser.cc"
     break;
 
   case 31: // value: "constant string"
-#line 326 "dhcp4_parser.yy"
+#line 327 "dhcp4_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 857 "dhcp4_parser.cc"
     break;
 
   case 32: // value: "null"
-#line 327 "dhcp4_parser.yy"
+#line 328 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 863 "dhcp4_parser.cc"
     break;
 
   case 33: // value: map2
-#line 328 "dhcp4_parser.yy"
+#line 329 "dhcp4_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 869 "dhcp4_parser.cc"
     break;
 
   case 34: // value: list_generic
-#line 329 "dhcp4_parser.yy"
+#line 330 "dhcp4_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 875 "dhcp4_parser.cc"
     break;
 
   case 35: // sub_json: value
-#line 332 "dhcp4_parser.yy"
+#line 333 "dhcp4_parser.yy"
                 {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
@@ -884,7 +884,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 36: // $@14: %empty
-#line 337 "dhcp4_parser.yy"
+#line 338 "dhcp4_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -895,7 +895,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 37: // map2: "{" $@14 map_content "}"
-#line 342 "dhcp4_parser.yy"
+#line 343 "dhcp4_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -905,13 +905,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 38: // map_value: map2
-#line 348 "dhcp4_parser.yy"
+#line 349 "dhcp4_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 911 "dhcp4_parser.cc"
     break;
 
   case 41: // not_empty_map: "constant string" ":" value
-#line 355 "dhcp4_parser.yy"
+#line 356 "dhcp4_parser.yy"
                                   {
                   // map containing a single entry
                   ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
@@ -921,7 +921,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 42: // not_empty_map: not_empty_map "," "constant string" ":" value
-#line 360 "dhcp4_parser.yy"
+#line 361 "dhcp4_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -932,7 +932,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 43: // not_empty_map: not_empty_map ","
-#line 366 "dhcp4_parser.yy"
+#line 367 "dhcp4_parser.yy"
                                    {
                  ctx.warnAboutExtraCommas(yystack_[0].location);
                  }
@@ -940,7 +940,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44: // $@15: %empty
-#line 371 "dhcp4_parser.yy"
+#line 372 "dhcp4_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -949,7 +949,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45: // list_generic: "[" $@15 list_content "]"
-#line 374 "dhcp4_parser.yy"
+#line 375 "dhcp4_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
 }
@@ -957,7 +957,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 48: // not_empty_list: value
-#line 382 "dhcp4_parser.yy"
+#line 383 "dhcp4_parser.yy"
                       {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -966,7 +966,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 49: // not_empty_list: not_empty_list "," value
-#line 386 "dhcp4_parser.yy"
+#line 387 "dhcp4_parser.yy"
                                            {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -975,7 +975,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 50: // not_empty_list: not_empty_list ","
-#line 390 "dhcp4_parser.yy"
+#line 391 "dhcp4_parser.yy"
                                      {
                   ctx.warnAboutExtraCommas(yystack_[0].location);
                   }
@@ -983,7 +983,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51: // $@16: %empty
-#line 396 "dhcp4_parser.yy"
+#line 397 "dhcp4_parser.yy"
                               {
     // List parsing about to start
 }
@@ -991,7 +991,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52: // list_strings: "[" $@16 list_strings_content "]"
-#line 398 "dhcp4_parser.yy"
+#line 399 "dhcp4_parser.yy"
                                        {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -1000,7 +1000,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 55: // not_empty_list_strings: "constant string"
-#line 407 "dhcp4_parser.yy"
+#line 408 "dhcp4_parser.yy"
                                {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -1009,7 +1009,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 56: // not_empty_list_strings: not_empty_list_strings "," "constant string"
-#line 411 "dhcp4_parser.yy"
+#line 412 "dhcp4_parser.yy"
                                                             {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -1018,7 +1018,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57: // not_empty_list_strings: not_empty_list_strings ","
-#line 415 "dhcp4_parser.yy"
+#line 416 "dhcp4_parser.yy"
                                                      {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
@@ -1026,7 +1026,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 58: // unknown_map_entry: "constant string" ":"
-#line 425 "dhcp4_parser.yy"
+#line 426 "dhcp4_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
@@ -1037,7 +1037,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 59: // $@17: %empty
-#line 434 "dhcp4_parser.yy"
+#line 435 "dhcp4_parser.yy"
                            {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1048,7 +1048,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 60: // syntax_map: "{" $@17 global_object "}"
-#line 439 "dhcp4_parser.yy"
+#line 440 "dhcp4_parser.yy"
                                {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -1061,7 +1061,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 61: // $@18: %empty
-#line 449 "dhcp4_parser.yy"
+#line 450 "dhcp4_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1076,7 +1076,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 62: // global_object: "Dhcp4" $@18 ":" "{" global_params "}"
-#line 458 "dhcp4_parser.yy"
+#line 459 "dhcp4_parser.yy"
                                                     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -1086,7 +1086,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 64: // global_object_comma: global_object ","
-#line 466 "dhcp4_parser.yy"
+#line 467 "dhcp4_parser.yy"
                                          {
     ctx.warnAboutExtraCommas(yystack_[0].location);
 }
@@ -1094,7 +1094,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 65: // $@19: %empty
-#line 472 "dhcp4_parser.yy"
+#line 473 "dhcp4_parser.yy"
                           {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1104,7 +1104,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 66: // sub_dhcp4: "{" $@19 global_params "}"
-#line 476 "dhcp4_parser.yy"
+#line 477 "dhcp4_parser.yy"
                                {
     // No global parameter is required
     // parsing completed
@@ -1113,7 +1113,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 69: // global_params: global_params ","
-#line 483 "dhcp4_parser.yy"
+#line 484 "dhcp4_parser.yy"
                                    {
                  ctx.warnAboutExtraCommas(yystack_[0].location);
                  }
@@ -1121,7 +1121,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 135: // valid_lifetime: "valid-lifetime" ":" "integer"
-#line 557 "dhcp4_parser.yy"
+#line 558 "dhcp4_parser.yy"
                                              {
     ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1131,7 +1131,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 136: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
-#line 563 "dhcp4_parser.yy"
+#line 564 "dhcp4_parser.yy"
                                                      {
     ctx.unique("min-valid-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1141,7 +1141,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 137: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
-#line 569 "dhcp4_parser.yy"
+#line 570 "dhcp4_parser.yy"
                                                      {
     ctx.unique("max-valid-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1151,7 +1151,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 138: // renew_timer: "renew-timer" ":" "integer"
-#line 575 "dhcp4_parser.yy"
+#line 576 "dhcp4_parser.yy"
                                        {
     ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1161,7 +1161,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 139: // rebind_timer: "rebind-timer" ":" "integer"
-#line 581 "dhcp4_parser.yy"
+#line 582 "dhcp4_parser.yy"
                                          {
     ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1171,7 +1171,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 140: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
-#line 587 "dhcp4_parser.yy"
+#line 588 "dhcp4_parser.yy"
                                                        {
     ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location));
     ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1181,7 +1181,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 141: // t1_percent: "t1-percent" ":" "floating point"
-#line 593 "dhcp4_parser.yy"
+#line 594 "dhcp4_parser.yy"
                                    {
     ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1191,7 +1191,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 142: // t2_percent: "t2-percent" ":" "floating point"
-#line 599 "dhcp4_parser.yy"
+#line 600 "dhcp4_parser.yy"
                                    {
     ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1201,7 +1201,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 143: // cache_threshold: "cache-threshold" ":" "floating point"
-#line 605 "dhcp4_parser.yy"
+#line 606 "dhcp4_parser.yy"
                                              {
     ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location));
     ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1211,7 +1211,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 144: // cache_max_age: "cache-max-age" ":" "integer"
-#line 611 "dhcp4_parser.yy"
+#line 612 "dhcp4_parser.yy"
                                            {
     ctx.unique("cache-max-age", ctx.loc2pos(yystack_[2].location));
     ElementPtr cm(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1221,7 +1221,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 145: // decline_probation_period: "decline-probation-period" ":" "integer"
-#line 617 "dhcp4_parser.yy"
+#line 618 "dhcp4_parser.yy"
                                                                  {
     ctx.unique("decline-probation-period", ctx.loc2pos(yystack_[2].location));
     ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1231,7 +1231,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 146: // $@20: %empty
-#line 623 "dhcp4_parser.yy"
+#line 624 "dhcp4_parser.yy"
                        {
     ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1240,7 +1240,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 147: // server_tag: "server-tag" $@20 ":" "constant string"
-#line 626 "dhcp4_parser.yy"
+#line 627 "dhcp4_parser.yy"
                {
     ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-tag", stag);
@@ -1250,7 +1250,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 148: // parked_packet_limit: "parked-packet-limit" ":" "integer"
-#line 632 "dhcp4_parser.yy"
+#line 633 "dhcp4_parser.yy"
                                                        {
     ctx.unique("parked-packet-limit", ctx.loc2pos(yystack_[2].location));
     ElementPtr ppl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1260,7 +1260,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 149: // $@21: %empty
-#line 638 "dhcp4_parser.yy"
+#line 639 "dhcp4_parser.yy"
                      {
     ctx.unique("allocator", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1269,7 +1269,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 150: // allocator: "allocator" $@21 ":" "constant string"
-#line 641 "dhcp4_parser.yy"
+#line 642 "dhcp4_parser.yy"
                {
     ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("allocator", al);
@@ -1279,7 +1279,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 151: // echo_client_id: "echo-client-id" ":" "boolean"
-#line 647 "dhcp4_parser.yy"
+#line 648 "dhcp4_parser.yy"
                                              {
     ctx.unique("echo-client-id", ctx.loc2pos(yystack_[2].location));
     ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1289,7 +1289,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 152: // match_client_id: "match-client-id" ":" "boolean"
-#line 653 "dhcp4_parser.yy"
+#line 654 "dhcp4_parser.yy"
                                                {
     ctx.unique("match-client-id", ctx.loc2pos(yystack_[2].location));
     ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1299,7 +1299,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 153: // authoritative: "authoritative" ":" "boolean"
-#line 659 "dhcp4_parser.yy"
+#line 660 "dhcp4_parser.yy"
                                            {
     ctx.unique("authoritative", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1309,7 +1309,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 154: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
-#line 665 "dhcp4_parser.yy"
+#line 666 "dhcp4_parser.yy"
                                                    {
     ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1319,7 +1319,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 155: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
-#line 671 "dhcp4_parser.yy"
+#line 672 "dhcp4_parser.yy"
                                                                {
     ctx.unique("ddns-override-no-update", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1329,7 +1329,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 156: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
-#line 677 "dhcp4_parser.yy"
+#line 678 "dhcp4_parser.yy"
                                                                        {
     ctx.unique("ddns-override-client-update", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1339,7 +1339,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 157: // $@22: %empty
-#line 683 "dhcp4_parser.yy"
+#line 684 "dhcp4_parser.yy"
                                                    {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
     ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location));
@@ -1348,7 +1348,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 158: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value
-#line 686 "dhcp4_parser.yy"
+#line 687 "dhcp4_parser.yy"
                                        {
     ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1357,7 +1357,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 159: // ddns_replace_client_name_value: "when-present"
-#line 692 "dhcp4_parser.yy"
+#line 693 "dhcp4_parser.yy"
                  {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1365,7 +1365,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 160: // ddns_replace_client_name_value: "never"
-#line 695 "dhcp4_parser.yy"
+#line 696 "dhcp4_parser.yy"
           {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1373,7 +1373,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 161: // ddns_replace_client_name_value: "always"
-#line 698 "dhcp4_parser.yy"
+#line 699 "dhcp4_parser.yy"
            {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1381,7 +1381,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 162: // ddns_replace_client_name_value: "when-not-present"
-#line 701 "dhcp4_parser.yy"
+#line 702 "dhcp4_parser.yy"
                      {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1389,7 +1389,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 163: // ddns_replace_client_name_value: "boolean"
-#line 704 "dhcp4_parser.yy"
+#line 705 "dhcp4_parser.yy"
             {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
@@ -1398,7 +1398,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 164: // $@23: %empty
-#line 710 "dhcp4_parser.yy"
+#line 711 "dhcp4_parser.yy"
                                              {
     ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1407,7 +1407,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 165: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string"
-#line 713 "dhcp4_parser.yy"
+#line 714 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-generated-prefix", s);
@@ -1417,7 +1417,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 166: // $@24: %empty
-#line 719 "dhcp4_parser.yy"
+#line 720 "dhcp4_parser.yy"
                                                {
     ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1426,7 +1426,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 167: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string"
-#line 722 "dhcp4_parser.yy"
+#line 723 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-qualifying-suffix", s);
@@ -1436,7 +1436,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 168: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean"
-#line 728 "dhcp4_parser.yy"
+#line 729 "dhcp4_parser.yy"
                                                          {
     ctx.unique("ddns-update-on-renew", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1446,7 +1446,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 169: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean"
-#line 734 "dhcp4_parser.yy"
+#line 735 "dhcp4_parser.yy"
                                                                          {
     ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1456,7 +1456,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 170: // $@25: %empty
-#line 740 "dhcp4_parser.yy"
+#line 741 "dhcp4_parser.yy"
                                      {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1465,7 +1465,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 171: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string"
-#line 743 "dhcp4_parser.yy"
+#line 744 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
@@ -1475,7 +1475,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 172: // $@26: %empty
-#line 749 "dhcp4_parser.yy"
+#line 750 "dhcp4_parser.yy"
                                                      {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1484,7 +1484,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 173: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string"
-#line 752 "dhcp4_parser.yy"
+#line 753 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
@@ -1494,7 +1494,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 174: // store_extended_info: "store-extended-info" ":" "boolean"
-#line 758 "dhcp4_parser.yy"
+#line 759 "dhcp4_parser.yy"
                                                        {
     ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1504,7 +1504,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 175: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
-#line 764 "dhcp4_parser.yy"
+#line 765 "dhcp4_parser.yy"
                                                                              {
     ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location));
     ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1514,7 +1514,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 176: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
-#line 770 "dhcp4_parser.yy"
+#line 771 "dhcp4_parser.yy"
                                                                          {
     ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location));
     ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1524,7 +1524,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 177: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean"
-#line 776 "dhcp4_parser.yy"
+#line 777 "dhcp4_parser.yy"
                                                                                  {
     ctx.unique("early-global-reservations-lookup", ctx.loc2pos(yystack_[2].location));
     ElementPtr early(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1534,7 +1534,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 178: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean"
-#line 782 "dhcp4_parser.yy"
+#line 783 "dhcp4_parser.yy"
                                                              {
     ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location));
     ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1544,7 +1544,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 179: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean"
-#line 788 "dhcp4_parser.yy"
+#line 789 "dhcp4_parser.yy"
                                                                    {
     ctx.unique("reservations-lookup-first", ctx.loc2pos(yystack_[2].location));
     ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1554,7 +1554,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 180: // $@27: %empty
-#line 794 "dhcp4_parser.yy"
+#line 795 "dhcp4_parser.yy"
                                      {
     ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1566,7 +1566,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 181: // interfaces_config: "interfaces-config" $@27 ":" "{" interfaces_config_params "}"
-#line 800 "dhcp4_parser.yy"
+#line 801 "dhcp4_parser.yy"
                                                                {
     // No interfaces config param is required
     ctx.stack_.pop_back();
@@ -1576,7 +1576,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 184: // interfaces_config_params: interfaces_config_params ","
-#line 808 "dhcp4_parser.yy"
+#line 809 "dhcp4_parser.yy"
                                                          {
                             ctx.warnAboutExtraCommas(yystack_[0].location);
                             }
@@ -1584,7 +1584,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 195: // $@28: %empty
-#line 825 "dhcp4_parser.yy"
+#line 826 "dhcp4_parser.yy"
                                 {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1594,7 +1594,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 196: // sub_interfaces4: "{" $@28 interfaces_config_params "}"
-#line 829 "dhcp4_parser.yy"
+#line 830 "dhcp4_parser.yy"
                                           {
     // No interfaces config param is required
     // parsing completed
@@ -1603,7 +1603,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 197: // $@29: %empty
-#line 834 "dhcp4_parser.yy"
+#line 835 "dhcp4_parser.yy"
                             {
     ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1615,7 +1615,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 198: // interfaces_list: "interfaces" $@29 ":" list_strings
-#line 840 "dhcp4_parser.yy"
+#line 841 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1624,7 +1624,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 199: // $@30: %empty
-#line 845 "dhcp4_parser.yy"
+#line 846 "dhcp4_parser.yy"
                                    {
     ctx.unique("dhcp-socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
@@ -1633,7 +1633,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 200: // dhcp_socket_type: "dhcp-socket-type" $@30 ":" socket_type
-#line 848 "dhcp4_parser.yy"
+#line 849 "dhcp4_parser.yy"
                     {
     ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1642,19 +1642,19 @@ namespace isc { namespace dhcp {
     break;
 
   case 201: // socket_type: "raw"
-#line 853 "dhcp4_parser.yy"
+#line 854 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
 #line 1648 "dhcp4_parser.cc"
     break;
 
   case 202: // socket_type: "udp"
-#line 854 "dhcp4_parser.yy"
+#line 855 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
 #line 1654 "dhcp4_parser.cc"
     break;
 
   case 203: // $@31: %empty
-#line 857 "dhcp4_parser.yy"
+#line 858 "dhcp4_parser.yy"
                                        {
     ctx.unique("outbound-interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.OUTBOUND_INTERFACE);
@@ -1663,7 +1663,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 204: // outbound_interface: "outbound-interface" $@31 ":" outbound_interface_value
-#line 860 "dhcp4_parser.yy"
+#line 861 "dhcp4_parser.yy"
                                  {
     ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1672,7 +1672,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 205: // outbound_interface_value: "same-as-inbound"
-#line 865 "dhcp4_parser.yy"
+#line 866 "dhcp4_parser.yy"
                                           {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
 }
@@ -1680,7 +1680,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 206: // outbound_interface_value: "use-routing"
-#line 867 "dhcp4_parser.yy"
+#line 868 "dhcp4_parser.yy"
                 {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
     }
@@ -1688,7 +1688,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 207: // re_detect: "re-detect" ":" "boolean"
-#line 871 "dhcp4_parser.yy"
+#line 872 "dhcp4_parser.yy"
                                    {
     ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1698,7 +1698,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 208: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean"
-#line 877 "dhcp4_parser.yy"
+#line 878 "dhcp4_parser.yy"
                                                                        {
     ctx.unique("service-sockets-require-all", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1708,7 +1708,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 209: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer"
-#line 883 "dhcp4_parser.yy"
+#line 884 "dhcp4_parser.yy"
                                                                                {
     ctx.unique("service-sockets-retry-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1718,7 +1718,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 210: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer"
-#line 889 "dhcp4_parser.yy"
+#line 890 "dhcp4_parser.yy"
                                                                        {
     ctx.unique("service-sockets-max-retries", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1728,7 +1728,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 211: // $@32: %empty
-#line 895 "dhcp4_parser.yy"
+#line 896 "dhcp4_parser.yy"
                                {
     ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1740,7 +1740,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 212: // lease_database: "lease-database" $@32 ":" "{" database_map_params "}"
-#line 901 "dhcp4_parser.yy"
+#line 902 "dhcp4_parser.yy"
                                                           {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -1751,7 +1751,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 213: // $@33: %empty
-#line 908 "dhcp4_parser.yy"
+#line 909 "dhcp4_parser.yy"
                              {
     ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1763,7 +1763,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 214: // sanity_checks: "sanity-checks" $@33 ":" "{" sanity_checks_params "}"
-#line 914 "dhcp4_parser.yy"
+#line 915 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1772,7 +1772,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 217: // sanity_checks_params: sanity_checks_params ","
-#line 921 "dhcp4_parser.yy"
+#line 922 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
@@ -1780,7 +1780,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 220: // $@34: %empty
-#line 930 "dhcp4_parser.yy"
+#line 931 "dhcp4_parser.yy"
                            {
     ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1789,7 +1789,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 221: // lease_checks: "lease-checks" $@34 ":" "constant string"
-#line 933 "dhcp4_parser.yy"
+#line 934 "dhcp4_parser.yy"
                {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -1809,7 +1809,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 222: // $@35: %empty
-#line 949 "dhcp4_parser.yy"
+#line 950 "dhcp4_parser.yy"
                                            {
     ctx.unique("extended-info-checks", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1818,7 +1818,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 223: // extended_info_checks: "extended-info-checks" $@35 ":" "constant string"
-#line 952 "dhcp4_parser.yy"
+#line 953 "dhcp4_parser.yy"
                {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -1837,7 +1837,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 224: // $@36: %empty
-#line 967 "dhcp4_parser.yy"
+#line 968 "dhcp4_parser.yy"
                                {
     ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1849,7 +1849,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 225: // hosts_database: "hosts-database" $@36 ":" "{" database_map_params "}"
-#line 973 "dhcp4_parser.yy"
+#line 974 "dhcp4_parser.yy"
                                                           {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -1860,7 +1860,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 226: // $@37: %empty
-#line 980 "dhcp4_parser.yy"
+#line 981 "dhcp4_parser.yy"
                                  {
     ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1872,7 +1872,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 227: // hosts_databases: "hosts-databases" $@37 ":" "[" database_list "]"
-#line 986 "dhcp4_parser.yy"
+#line 987 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1881,7 +1881,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 232: // not_empty_database_list: not_empty_database_list ","
-#line 997 "dhcp4_parser.yy"
+#line 998 "dhcp4_parser.yy"
                                                        {
                            ctx.warnAboutExtraCommas(yystack_[0].location);
                            }
@@ -1889,7 +1889,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 233: // $@38: %empty
-#line 1002 "dhcp4_parser.yy"
+#line 1003 "dhcp4_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1899,7 +1899,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 234: // database: "{" $@38 database_map_params "}"
-#line 1006 "dhcp4_parser.yy"
+#line 1007 "dhcp4_parser.yy"
                                      {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -1909,7 +1909,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 237: // database_map_params: database_map_params ","
-#line 1014 "dhcp4_parser.yy"
+#line 1015 "dhcp4_parser.yy"
                                                {
                        ctx.warnAboutExtraCommas(yystack_[0].location);
                        }
@@ -1917,7 +1917,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 260: // $@39: %empty
-#line 1043 "dhcp4_parser.yy"
+#line 1044 "dhcp4_parser.yy"
                     {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DATABASE_TYPE);
@@ -1926,7 +1926,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 261: // database_type: "type" $@39 ":" db_type
-#line 1046 "dhcp4_parser.yy"
+#line 1047 "dhcp4_parser.yy"
                 {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1935,25 +1935,25 @@ namespace isc { namespace dhcp {
     break;
 
   case 262: // db_type: "memfile"
-#line 1051 "dhcp4_parser.yy"
+#line 1052 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1941 "dhcp4_parser.cc"
     break;
 
   case 263: // db_type: "mysql"
-#line 1052 "dhcp4_parser.yy"
+#line 1053 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1947 "dhcp4_parser.cc"
     break;
 
   case 264: // db_type: "postgresql"
-#line 1053 "dhcp4_parser.yy"
+#line 1054 "dhcp4_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1953 "dhcp4_parser.cc"
     break;
 
   case 265: // $@40: %empty
-#line 1056 "dhcp4_parser.yy"
+#line 1057 "dhcp4_parser.yy"
            {
     ctx.unique("user", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1962,7 +1962,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 266: // user: "user" $@40 ":" "constant string"
-#line 1059 "dhcp4_parser.yy"
+#line 1060 "dhcp4_parser.yy"
                {
     ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
@@ -1972,7 +1972,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 267: // $@41: %empty
-#line 1065 "dhcp4_parser.yy"
+#line 1066 "dhcp4_parser.yy"
                    {
     ctx.unique("password", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1981,7 +1981,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 268: // password: "password" $@41 ":" "constant string"
-#line 1068 "dhcp4_parser.yy"
+#line 1069 "dhcp4_parser.yy"
                {
     ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
@@ -1991,7 +1991,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 269: // $@42: %empty
-#line 1074 "dhcp4_parser.yy"
+#line 1075 "dhcp4_parser.yy"
            {
     ctx.unique("host", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2000,7 +2000,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 270: // host: "host" $@42 ":" "constant string"
-#line 1077 "dhcp4_parser.yy"
+#line 1078 "dhcp4_parser.yy"
                {
     ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
@@ -2010,7 +2010,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 271: // port: "port" ":" "integer"
-#line 1083 "dhcp4_parser.yy"
+#line 1084 "dhcp4_parser.yy"
                          {
     ctx.unique("port", ctx.loc2pos(yystack_[2].location));
     ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2020,7 +2020,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 272: // $@43: %empty
-#line 1089 "dhcp4_parser.yy"
+#line 1090 "dhcp4_parser.yy"
            {
     ctx.unique("name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2029,7 +2029,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 273: // name: "name" $@43 ":" "constant string"
-#line 1092 "dhcp4_parser.yy"
+#line 1093 "dhcp4_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
@@ -2039,7 +2039,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 274: // persist: "persist" ":" "boolean"
-#line 1098 "dhcp4_parser.yy"
+#line 1099 "dhcp4_parser.yy"
                                {
     ctx.unique("persist", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2049,7 +2049,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 275: // lfc_interval: "lfc-interval" ":" "integer"
-#line 1104 "dhcp4_parser.yy"
+#line 1105 "dhcp4_parser.yy"
                                          {
     ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2059,7 +2059,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 276: // readonly: "readonly" ":" "boolean"
-#line 1110 "dhcp4_parser.yy"
+#line 1111 "dhcp4_parser.yy"
                                  {
     ctx.unique("readonly", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2069,7 +2069,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 277: // connect_timeout: "connect-timeout" ":" "integer"
-#line 1116 "dhcp4_parser.yy"
+#line 1117 "dhcp4_parser.yy"
                                                {
     ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2079,7 +2079,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 278: // read_timeout: "read-timeout" ":" "integer"
-#line 1122 "dhcp4_parser.yy"
+#line 1123 "dhcp4_parser.yy"
                                          {
     ctx.unique("read-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2089,7 +2089,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 279: // write_timeout: "write-timeout" ":" "integer"
-#line 1128 "dhcp4_parser.yy"
+#line 1129 "dhcp4_parser.yy"
                                            {
     ctx.unique("write-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2099,7 +2099,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 280: // tcp_user_timeout: "tcp-user-timeout" ":" "integer"
-#line 1134 "dhcp4_parser.yy"
+#line 1135 "dhcp4_parser.yy"
                                                  {
     ctx.unique("tcp-user-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2109,7 +2109,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 281: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
-#line 1140 "dhcp4_parser.yy"
+#line 1141 "dhcp4_parser.yy"
                                                        {
     ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2119,7 +2119,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 282: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
-#line 1146 "dhcp4_parser.yy"
+#line 1147 "dhcp4_parser.yy"
                                                        {
     ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2129,7 +2129,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 283: // $@44: %empty
-#line 1152 "dhcp4_parser.yy"
+#line 1153 "dhcp4_parser.yy"
                  {
     ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DATABASE_ON_FAIL);
@@ -2138,7 +2138,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 284: // on_fail: "on-fail" $@44 ":" on_fail_mode
-#line 1155 "dhcp4_parser.yy"
+#line 1156 "dhcp4_parser.yy"
                      {
     ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -2147,25 +2147,25 @@ namespace isc { namespace dhcp {
     break;
 
   case 285: // on_fail_mode: "stop-retry-exit"
-#line 1160 "dhcp4_parser.yy"
+#line 1161 "dhcp4_parser.yy"
                               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); }
 #line 2153 "dhcp4_parser.cc"
     break;
 
   case 286: // on_fail_mode: "serve-retry-exit"
-#line 1161 "dhcp4_parser.yy"
+#line 1162 "dhcp4_parser.yy"
                                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); }
 #line 2159 "dhcp4_parser.cc"
     break;
 
   case 287: // on_fail_mode: "serve-retry-continue"
-#line 1162 "dhcp4_parser.yy"
+#line 1163 "dhcp4_parser.yy"
                                    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); }
 #line 2165 "dhcp4_parser.cc"
     break;
 
   case 288: // max_row_errors: "max-row-errors" ":" "integer"
-#line 1165 "dhcp4_parser.yy"
+#line 1166 "dhcp4_parser.yy"
                                              {
     ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2175,7 +2175,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 289: // $@45: %empty
-#line 1171 "dhcp4_parser.yy"
+#line 1172 "dhcp4_parser.yy"
                            {
     ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2184,7 +2184,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 290: // trust_anchor: "trust-anchor" $@45 ":" "constant string"
-#line 1174 "dhcp4_parser.yy"
+#line 1175 "dhcp4_parser.yy"
                {
     ElementPtr ca(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("trust-anchor", ca);
@@ -2194,7 +2194,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 291: // $@46: %empty
-#line 1180 "dhcp4_parser.yy"
+#line 1181 "dhcp4_parser.yy"
                      {
     ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2203,7 +2203,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 292: // cert_file: "cert-file" $@46 ":" "constant string"
-#line 1183 "dhcp4_parser.yy"
+#line 1184 "dhcp4_parser.yy"
                {
     ElementPtr cert(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("cert-file", cert);
@@ -2213,7 +2213,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 293: // $@47: %empty
-#line 1189 "dhcp4_parser.yy"
+#line 1190 "dhcp4_parser.yy"
                    {
     ctx.unique("key-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2222,7 +2222,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 294: // key_file: "key-file" $@47 ":" "constant string"
-#line 1192 "dhcp4_parser.yy"
+#line 1193 "dhcp4_parser.yy"
                {
     ElementPtr key(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("key-file", key);
@@ -2232,7 +2232,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 295: // $@48: %empty
-#line 1198 "dhcp4_parser.yy"
+#line 1199 "dhcp4_parser.yy"
                          {
     ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2241,7 +2241,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 296: // cipher_list: "cipher-list" $@48 ":" "constant string"
-#line 1201 "dhcp4_parser.yy"
+#line 1202 "dhcp4_parser.yy"
                {
     ElementPtr cl(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("cipher-list", cl);
@@ -2251,7 +2251,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 297: // $@49: %empty
-#line 1207 "dhcp4_parser.yy"
+#line 1208 "dhcp4_parser.yy"
                                                            {
     ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2263,7 +2263,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 298: // host_reservation_identifiers: "host-reservation-identifiers" $@49 ":" "[" host_reservation_identifiers_list "]"
-#line 1213 "dhcp4_parser.yy"
+#line 1214 "dhcp4_parser.yy"
                                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2272,7 +2272,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 301: // host_reservation_identifiers_list: host_reservation_identifiers_list ","
-#line 1220 "dhcp4_parser.yy"
+#line 1221 "dhcp4_parser.yy"
                                               {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -2280,7 +2280,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 307: // duid_id: "duid"
-#line 1232 "dhcp4_parser.yy"
+#line 1233 "dhcp4_parser.yy"
               {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
@@ -2289,7 +2289,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 308: // hw_address_id: "hw-address"
-#line 1237 "dhcp4_parser.yy"
+#line 1238 "dhcp4_parser.yy"
                           {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
@@ -2298,7 +2298,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 309: // circuit_id: "circuit-id"
-#line 1242 "dhcp4_parser.yy"
+#line 1243 "dhcp4_parser.yy"
                        {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
@@ -2307,7 +2307,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 310: // client_id: "client-id"
-#line 1247 "dhcp4_parser.yy"
+#line 1248 "dhcp4_parser.yy"
                      {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
@@ -2316,7 +2316,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 311: // flex_id: "flex-id"
-#line 1252 "dhcp4_parser.yy"
+#line 1253 "dhcp4_parser.yy"
                  {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
@@ -2325,7 +2325,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 312: // $@50: %empty
-#line 1259 "dhcp4_parser.yy"
+#line 1260 "dhcp4_parser.yy"
                                            {
     ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location));
     ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2337,7 +2337,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 313: // dhcp_multi_threading: "multi-threading" $@50 ":" "{" multi_threading_params "}"
-#line 1265 "dhcp4_parser.yy"
+#line 1266 "dhcp4_parser.yy"
                                                              {
     // The enable parameter is required.
     ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -2348,7 +2348,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 316: // multi_threading_params: multi_threading_params ","
-#line 1274 "dhcp4_parser.yy"
+#line 1275 "dhcp4_parser.yy"
                                                      {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
@@ -2356,7 +2356,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 323: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
-#line 1287 "dhcp4_parser.yy"
+#line 1288 "dhcp4_parser.yy"
                                                              {
     ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2366,7 +2366,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 324: // thread_pool_size: "thread-pool-size" ":" "integer"
-#line 1293 "dhcp4_parser.yy"
+#line 1294 "dhcp4_parser.yy"
                                                  {
     ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2376,7 +2376,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 325: // packet_queue_size: "packet-queue-size" ":" "integer"
-#line 1299 "dhcp4_parser.yy"
+#line 1300 "dhcp4_parser.yy"
                                                    {
     ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2386,7 +2386,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 326: // $@51: %empty
-#line 1305 "dhcp4_parser.yy"
+#line 1306 "dhcp4_parser.yy"
                                  {
     ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2398,7 +2398,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 327: // hooks_libraries: "hooks-libraries" $@51 ":" "[" hooks_libraries_list "]"
-#line 1311 "dhcp4_parser.yy"
+#line 1312 "dhcp4_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2407,7 +2407,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 332: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list ","
-#line 1322 "dhcp4_parser.yy"
+#line 1323 "dhcp4_parser.yy"
                                            {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -2415,7 +2415,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 333: // $@52: %empty
-#line 1327 "dhcp4_parser.yy"
+#line 1328 "dhcp4_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2425,7 +2425,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 334: // hooks_library: "{" $@52 hooks_params "}"
-#line 1331 "dhcp4_parser.yy"
+#line 1332 "dhcp4_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2435,7 +2435,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 335: // $@53: %empty
-#line 1337 "dhcp4_parser.yy"
+#line 1338 "dhcp4_parser.yy"
                                   {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2445,7 +2445,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 336: // sub_hooks_library: "{" $@53 hooks_params "}"
-#line 1341 "dhcp4_parser.yy"
+#line 1342 "dhcp4_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2455,7 +2455,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 339: // hooks_params: hooks_params ","
-#line 1349 "dhcp4_parser.yy"
+#line 1350 "dhcp4_parser.yy"
                                  {
                 ctx.warnAboutExtraCommas(yystack_[0].location);
                 }
@@ -2463,7 +2463,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 343: // $@54: %empty
-#line 1359 "dhcp4_parser.yy"
+#line 1360 "dhcp4_parser.yy"
                  {
     ctx.unique("library", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2472,7 +2472,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 344: // library: "library" $@54 ":" "constant string"
-#line 1362 "dhcp4_parser.yy"
+#line 1363 "dhcp4_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
@@ -2482,7 +2482,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 345: // $@55: %empty
-#line 1368 "dhcp4_parser.yy"
+#line 1369 "dhcp4_parser.yy"
                        {
     ctx.unique("parameters", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2491,7 +2491,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 346: // parameters: "parameters" $@55 ":" map_value
-#line 1371 "dhcp4_parser.yy"
+#line 1372 "dhcp4_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -2500,7 +2500,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 347: // $@56: %empty
-#line 1377 "dhcp4_parser.yy"
+#line 1378 "dhcp4_parser.yy"
                                                      {
     ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2512,7 +2512,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 348: // expired_leases_processing: "expired-leases-processing" $@56 ":" "{" expired_leases_params "}"
-#line 1383 "dhcp4_parser.yy"
+#line 1384 "dhcp4_parser.yy"
                                                             {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
@@ -2522,7 +2522,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 351: // expired_leases_params: expired_leases_params ","
-#line 1391 "dhcp4_parser.yy"
+#line 1392 "dhcp4_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
@@ -2530,7 +2530,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 358: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
-#line 1404 "dhcp4_parser.yy"
+#line 1405 "dhcp4_parser.yy"
                                                                {
     ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2540,7 +2540,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 359: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
-#line 1410 "dhcp4_parser.yy"
+#line 1411 "dhcp4_parser.yy"
                                                                                {
     ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2550,7 +2550,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 360: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
-#line 1416 "dhcp4_parser.yy"
+#line 1417 "dhcp4_parser.yy"
                                                        {
     ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2560,7 +2560,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 361: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
-#line 1422 "dhcp4_parser.yy"
+#line 1423 "dhcp4_parser.yy"
                                                      {
     ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2570,7 +2570,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 362: // max_reclaim_time: "max-reclaim-time" ":" "integer"
-#line 1428 "dhcp4_parser.yy"
+#line 1429 "dhcp4_parser.yy"
                                                  {
     ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2580,7 +2580,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 363: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
-#line 1434 "dhcp4_parser.yy"
+#line 1435 "dhcp4_parser.yy"
                                                                {
     ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2590,7 +2590,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 364: // $@57: %empty
-#line 1443 "dhcp4_parser.yy"
+#line 1444 "dhcp4_parser.yy"
                       {
     ctx.unique("subnet4", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2602,7 +2602,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 365: // subnet4_list: "subnet4" $@57 ":" "[" subnet4_list_content "]"
-#line 1449 "dhcp4_parser.yy"
+#line 1450 "dhcp4_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2611,7 +2611,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 370: // not_empty_subnet4_list: not_empty_subnet4_list ","
-#line 1463 "dhcp4_parser.yy"
+#line 1464 "dhcp4_parser.yy"
                                                      {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
@@ -2619,7 +2619,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 371: // $@58: %empty
-#line 1472 "dhcp4_parser.yy"
+#line 1473 "dhcp4_parser.yy"
                         {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2629,7 +2629,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 372: // subnet4: "{" $@58 subnet4_params "}"
-#line 1476 "dhcp4_parser.yy"
+#line 1477 "dhcp4_parser.yy"
                                 {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -2655,7 +2655,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 373: // $@59: %empty
-#line 1498 "dhcp4_parser.yy"
+#line 1499 "dhcp4_parser.yy"
                             {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2665,7 +2665,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 374: // sub_subnet4: "{" $@59 subnet4_params "}"
-#line 1502 "dhcp4_parser.yy"
+#line 1503 "dhcp4_parser.yy"
                                 {
     // The subnet subnet4 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2675,7 +2675,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 377: // subnet4_params: subnet4_params ","
-#line 1511 "dhcp4_parser.yy"
+#line 1512 "dhcp4_parser.yy"
                                      {
                   ctx.warnAboutExtraCommas(yystack_[0].location);
                   }
@@ -2683,7 +2683,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 424: // $@60: %empty
-#line 1565 "dhcp4_parser.yy"
+#line 1566 "dhcp4_parser.yy"
                {
     ctx.unique("subnet", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2692,7 +2692,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 425: // subnet: "subnet" $@60 ":" "constant string"
-#line 1568 "dhcp4_parser.yy"
+#line 1569 "dhcp4_parser.yy"
                {
     ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
@@ -2702,7 +2702,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 426: // $@61: %empty
-#line 1574 "dhcp4_parser.yy"
+#line 1575 "dhcp4_parser.yy"
                                            {
     ctx.unique("4o6-interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2711,7 +2711,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 427: // subnet_4o6_interface: "4o6-interface" $@61 ":" "constant string"
-#line 1577 "dhcp4_parser.yy"
+#line 1578 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface", iface);
@@ -2721,7 +2721,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 428: // $@62: %empty
-#line 1583 "dhcp4_parser.yy"
+#line 1584 "dhcp4_parser.yy"
                                                  {
     ctx.unique("4o6-interface-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2730,7 +2730,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 429: // subnet_4o6_interface_id: "4o6-interface-id" $@62 ":" "constant string"
-#line 1586 "dhcp4_parser.yy"
+#line 1587 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface-id", iface);
@@ -2740,7 +2740,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 430: // $@63: %empty
-#line 1592 "dhcp4_parser.yy"
+#line 1593 "dhcp4_parser.yy"
                                      {
     ctx.unique("4o6-subnet", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2749,7 +2749,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 431: // subnet_4o6_subnet: "4o6-subnet" $@63 ":" "constant string"
-#line 1595 "dhcp4_parser.yy"
+#line 1596 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-subnet", iface);
@@ -2759,7 +2759,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 432: // $@64: %empty
-#line 1601 "dhcp4_parser.yy"
+#line 1602 "dhcp4_parser.yy"
                      {
     ctx.unique("interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2768,7 +2768,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 433: // interface: "interface" $@64 ":" "constant string"
-#line 1604 "dhcp4_parser.yy"
+#line 1605 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
@@ -2778,7 +2778,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 434: // $@65: %empty
-#line 1610 "dhcp4_parser.yy"
+#line 1611 "dhcp4_parser.yy"
                            {
     ctx.unique("client-class", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2787,7 +2787,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 435: // client_class: "client-class" $@65 ":" "constant string"
-#line 1613 "dhcp4_parser.yy"
+#line 1614 "dhcp4_parser.yy"
                {
     ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
@@ -2797,7 +2797,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 436: // $@66: %empty
-#line 1619 "dhcp4_parser.yy"
+#line 1620 "dhcp4_parser.yy"
                                                {
     ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2809,7 +2809,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 437: // require_client_classes: "require-client-classes" $@66 ":" list_strings
-#line 1625 "dhcp4_parser.yy"
+#line 1626 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2818,7 +2818,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 438: // reservations_global: "reservations-global" ":" "boolean"
-#line 1630 "dhcp4_parser.yy"
+#line 1631 "dhcp4_parser.yy"
                                                        {
     ctx.unique("reservations-global", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2828,7 +2828,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 439: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean"
-#line 1636 "dhcp4_parser.yy"
+#line 1637 "dhcp4_parser.yy"
                                                              {
     ctx.unique("reservations-in-subnet", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2838,7 +2838,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 440: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean"
-#line 1642 "dhcp4_parser.yy"
+#line 1643 "dhcp4_parser.yy"
                                                                  {
     ctx.unique("reservations-out-of-pool", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2848,7 +2848,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 441: // $@67: %empty
-#line 1648 "dhcp4_parser.yy"
+#line 1649 "dhcp4_parser.yy"
                                    {
     ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.RESERVATION_MODE);
@@ -2857,7 +2857,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 442: // reservation_mode: "reservation-mode" $@67 ":" hr_mode
-#line 1651 "dhcp4_parser.yy"
+#line 1652 "dhcp4_parser.yy"
                 {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -2866,31 +2866,31 @@ namespace isc { namespace dhcp {
     break;
 
   case 443: // hr_mode: "disabled"
-#line 1656 "dhcp4_parser.yy"
+#line 1657 "dhcp4_parser.yy"
                   { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
 #line 2872 "dhcp4_parser.cc"
     break;
 
   case 444: // hr_mode: "out-of-pool"
-#line 1657 "dhcp4_parser.yy"
+#line 1658 "dhcp4_parser.yy"
                      { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
 #line 2878 "dhcp4_parser.cc"
     break;
 
   case 445: // hr_mode: "global"
-#line 1658 "dhcp4_parser.yy"
+#line 1659 "dhcp4_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
 #line 2884 "dhcp4_parser.cc"
     break;
 
   case 446: // hr_mode: "all"
-#line 1659 "dhcp4_parser.yy"
+#line 1660 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
 #line 2890 "dhcp4_parser.cc"
     break;
 
   case 447: // id: "id" ":" "integer"
-#line 1662 "dhcp4_parser.yy"
+#line 1663 "dhcp4_parser.yy"
                      {
     ctx.unique("id", ctx.loc2pos(yystack_[2].location));
     ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2900,7 +2900,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 448: // $@68: %empty
-#line 1670 "dhcp4_parser.yy"
+#line 1671 "dhcp4_parser.yy"
                                  {
     ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2912,7 +2912,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 449: // shared_networks: "shared-networks" $@68 ":" "[" shared_networks_content "]"
-#line 1676 "dhcp4_parser.yy"
+#line 1677 "dhcp4_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2921,7 +2921,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 454: // shared_networks_list: shared_networks_list ","
-#line 1689 "dhcp4_parser.yy"
+#line 1690 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
@@ -2929,7 +2929,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 455: // $@69: %empty
-#line 1694 "dhcp4_parser.yy"
+#line 1695 "dhcp4_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2939,7 +2939,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 456: // shared_network: "{" $@69 shared_network_params "}"
-#line 1698 "dhcp4_parser.yy"
+#line 1699 "dhcp4_parser.yy"
                                        {
     ctx.stack_.pop_back();
 }
@@ -2947,7 +2947,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 459: // shared_network_params: shared_network_params ","
-#line 1704 "dhcp4_parser.yy"
+#line 1705 "dhcp4_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
@@ -2955,7 +2955,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 501: // $@70: %empty
-#line 1756 "dhcp4_parser.yy"
+#line 1757 "dhcp4_parser.yy"
                             {
     ctx.unique("option-def", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2967,7 +2967,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 502: // option_def_list: "option-def" $@70 ":" "[" option_def_list_content "]"
-#line 1762 "dhcp4_parser.yy"
+#line 1763 "dhcp4_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2976,7 +2976,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 503: // $@71: %empty
-#line 1770 "dhcp4_parser.yy"
+#line 1771 "dhcp4_parser.yy"
                                     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
@@ -2985,7 +2985,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 504: // sub_option_def_list: "{" $@71 option_def_list "}"
-#line 1773 "dhcp4_parser.yy"
+#line 1774 "dhcp4_parser.yy"
                                  {
     // parsing completed
 }
@@ -2993,7 +2993,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 509: // not_empty_option_def_list: not_empty_option_def_list ","
-#line 1785 "dhcp4_parser.yy"
+#line 1786 "dhcp4_parser.yy"
                                                            {
                              ctx.warnAboutExtraCommas(yystack_[0].location);
                              }
@@ -3001,7 +3001,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 510: // $@72: %empty
-#line 1792 "dhcp4_parser.yy"
+#line 1793 "dhcp4_parser.yy"
                                  {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3011,7 +3011,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 511: // option_def_entry: "{" $@72 option_def_params "}"
-#line 1796 "dhcp4_parser.yy"
+#line 1797 "dhcp4_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3023,7 +3023,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 512: // $@73: %empty
-#line 1807 "dhcp4_parser.yy"
+#line 1808 "dhcp4_parser.yy"
                                {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3033,7 +3033,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 513: // sub_option_def: "{" $@73 option_def_params "}"
-#line 1811 "dhcp4_parser.yy"
+#line 1812 "dhcp4_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3045,7 +3045,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 518: // not_empty_option_def_params: not_empty_option_def_params ","
-#line 1827 "dhcp4_parser.yy"
+#line 1828 "dhcp4_parser.yy"
                                                                {
                                ctx.warnAboutExtraCommas(yystack_[0].location);
                                }
@@ -3053,7 +3053,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 530: // code: "code" ":" "integer"
-#line 1846 "dhcp4_parser.yy"
+#line 1847 "dhcp4_parser.yy"
                          {
     ctx.unique("code", ctx.loc2pos(yystack_[2].location));
     ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3063,7 +3063,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 532: // $@74: %empty
-#line 1854 "dhcp4_parser.yy"
+#line 1855 "dhcp4_parser.yy"
                       {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3072,7 +3072,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 533: // option_def_type: "type" $@74 ":" "constant string"
-#line 1857 "dhcp4_parser.yy"
+#line 1858 "dhcp4_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
@@ -3082,7 +3082,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 534: // $@75: %empty
-#line 1863 "dhcp4_parser.yy"
+#line 1864 "dhcp4_parser.yy"
                                       {
     ctx.unique("record-types", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3091,7 +3091,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 535: // option_def_record_types: "record-types" $@75 ":" "constant string"
-#line 1866 "dhcp4_parser.yy"
+#line 1867 "dhcp4_parser.yy"
                {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
@@ -3101,7 +3101,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 536: // $@76: %empty
-#line 1872 "dhcp4_parser.yy"
+#line 1873 "dhcp4_parser.yy"
              {
     ctx.unique("space", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3110,7 +3110,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 537: // space: "space" $@76 ":" "constant string"
-#line 1875 "dhcp4_parser.yy"
+#line 1876 "dhcp4_parser.yy"
                {
     ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
@@ -3120,7 +3120,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 539: // $@77: %empty
-#line 1883 "dhcp4_parser.yy"
+#line 1884 "dhcp4_parser.yy"
                                     {
     ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3129,7 +3129,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 540: // option_def_encapsulate: "encapsulate" $@77 ":" "constant string"
-#line 1886 "dhcp4_parser.yy"
+#line 1887 "dhcp4_parser.yy"
                {
     ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
@@ -3139,7 +3139,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 541: // option_def_array: "array" ":" "boolean"
-#line 1892 "dhcp4_parser.yy"
+#line 1893 "dhcp4_parser.yy"
                                       {
     ctx.unique("array", ctx.loc2pos(yystack_[2].location));
     ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3149,7 +3149,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 542: // $@78: %empty
-#line 1902 "dhcp4_parser.yy"
+#line 1903 "dhcp4_parser.yy"
                               {
     ctx.unique("option-data", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3161,7 +3161,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 543: // option_data_list: "option-data" $@78 ":" "[" option_data_list_content "]"
-#line 1908 "dhcp4_parser.yy"
+#line 1909 "dhcp4_parser.yy"
                                                                  {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3170,7 +3170,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 548: // not_empty_option_data_list: not_empty_option_data_list ","
-#line 1923 "dhcp4_parser.yy"
+#line 1924 "dhcp4_parser.yy"
                                                              {
                               ctx.warnAboutExtraCommas(yystack_[0].location);
                               }
@@ -3178,7 +3178,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 549: // $@79: %empty
-#line 1930 "dhcp4_parser.yy"
+#line 1931 "dhcp4_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3188,7 +3188,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 550: // option_data_entry: "{" $@79 option_data_params "}"
-#line 1934 "dhcp4_parser.yy"
+#line 1935 "dhcp4_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
@@ -3197,7 +3197,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 551: // $@80: %empty
-#line 1942 "dhcp4_parser.yy"
+#line 1943 "dhcp4_parser.yy"
                                 {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3207,7 +3207,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 552: // sub_option_data: "{" $@80 option_data_params "}"
-#line 1946 "dhcp4_parser.yy"
+#line 1947 "dhcp4_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     // parsing completed
@@ -3216,7 +3216,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 557: // not_empty_option_data_params: not_empty_option_data_params ","
-#line 1962 "dhcp4_parser.yy"
+#line 1963 "dhcp4_parser.yy"
                                          {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -3224,7 +3224,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 569: // $@81: %empty
-#line 1983 "dhcp4_parser.yy"
+#line 1984 "dhcp4_parser.yy"
                        {
     ctx.unique("data", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3233,7 +3233,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 570: // option_data_data: "data" $@81 ":" "constant string"
-#line 1986 "dhcp4_parser.yy"
+#line 1987 "dhcp4_parser.yy"
                {
     ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
@@ -3243,7 +3243,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 573: // option_data_csv_format: "csv-format" ":" "boolean"
-#line 1996 "dhcp4_parser.yy"
+#line 1997 "dhcp4_parser.yy"
                                                  {
     ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location));
     ElementPtr csv(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3253,7 +3253,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 574: // option_data_always_send: "always-send" ":" "boolean"
-#line 2002 "dhcp4_parser.yy"
+#line 2003 "dhcp4_parser.yy"
                                                    {
     ctx.unique("always-send", ctx.loc2pos(yystack_[2].location));
     ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3263,7 +3263,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 575: // option_data_never_send: "never-send" ":" "boolean"
-#line 2008 "dhcp4_parser.yy"
+#line 2009 "dhcp4_parser.yy"
                                                  {
     ctx.unique("never-send", ctx.loc2pos(yystack_[2].location));
     ElementPtr cancel(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3273,7 +3273,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 576: // $@82: %empty
-#line 2017 "dhcp4_parser.yy"
+#line 2018 "dhcp4_parser.yy"
                   {
     ctx.unique("pools", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3285,7 +3285,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 577: // pools_list: "pools" $@82 ":" "[" pools_list_content "]"
-#line 2023 "dhcp4_parser.yy"
+#line 2024 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3294,7 +3294,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 582: // not_empty_pools_list: not_empty_pools_list ","
-#line 2036 "dhcp4_parser.yy"
+#line 2037 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
@@ -3302,7 +3302,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 583: // $@83: %empty
-#line 2041 "dhcp4_parser.yy"
+#line 2042 "dhcp4_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3312,7 +3312,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 584: // pool_list_entry: "{" $@83 pool_params "}"
-#line 2045 "dhcp4_parser.yy"
+#line 2046 "dhcp4_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3322,7 +3322,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 585: // $@84: %empty
-#line 2051 "dhcp4_parser.yy"
+#line 2052 "dhcp4_parser.yy"
                           {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3332,7 +3332,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 586: // sub_pool4: "{" $@84 pool_params "}"
-#line 2055 "dhcp4_parser.yy"
+#line 2056 "dhcp4_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3342,7 +3342,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 589: // pool_params: pool_params ","
-#line 2063 "dhcp4_parser.yy"
+#line 2064 "dhcp4_parser.yy"
                                {
                ctx.warnAboutExtraCommas(yystack_[0].location);
                }
@@ -3350,7 +3350,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 597: // $@85: %empty
-#line 2077 "dhcp4_parser.yy"
+#line 2078 "dhcp4_parser.yy"
                  {
     ctx.unique("pool", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3359,7 +3359,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 598: // pool_entry: "pool" $@85 ":" "constant string"
-#line 2080 "dhcp4_parser.yy"
+#line 2081 "dhcp4_parser.yy"
                {
     ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
@@ -3369,7 +3369,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 599: // $@86: %empty
-#line 2086 "dhcp4_parser.yy"
+#line 2087 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -3377,7 +3377,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 600: // user_context: "user-context" $@86 ":" map_value
-#line 2088 "dhcp4_parser.yy"
+#line 2089 "dhcp4_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -3404,7 +3404,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 601: // $@87: %empty
-#line 2111 "dhcp4_parser.yy"
+#line 2112 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -3412,7 +3412,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 602: // comment: "comment" $@87 ":" "constant string"
-#line 2113 "dhcp4_parser.yy"
+#line 2114 "dhcp4_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -3441,7 +3441,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 603: // $@88: %empty
-#line 2141 "dhcp4_parser.yy"
+#line 2142 "dhcp4_parser.yy"
                            {
     ctx.unique("reservations", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3453,7 +3453,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 604: // reservations: "reservations" $@88 ":" "[" reservations_list "]"
-#line 2147 "dhcp4_parser.yy"
+#line 2148 "dhcp4_parser.yy"
                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3462,7 +3462,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 609: // not_empty_reservations_list: not_empty_reservations_list ","
-#line 2158 "dhcp4_parser.yy"
+#line 2159 "dhcp4_parser.yy"
                                                                {
                                ctx.warnAboutExtraCommas(yystack_[0].location);
                                }
@@ -3470,7 +3470,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 610: // $@89: %empty
-#line 2163 "dhcp4_parser.yy"
+#line 2164 "dhcp4_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3480,7 +3480,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 611: // reservation: "{" $@89 reservation_params "}"
-#line 2167 "dhcp4_parser.yy"
+#line 2168 "dhcp4_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
@@ -3489,7 +3489,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 612: // $@90: %empty
-#line 2172 "dhcp4_parser.yy"
+#line 2173 "dhcp4_parser.yy"
                                 {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3499,7 +3499,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 613: // sub_reservation: "{" $@90 reservation_params "}"
-#line 2176 "dhcp4_parser.yy"
+#line 2177 "dhcp4_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     // parsing completed
@@ -3508,7 +3508,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 618: // not_empty_reservation_params: not_empty_reservation_params ","
-#line 2187 "dhcp4_parser.yy"
+#line 2188 "dhcp4_parser.yy"
                                          {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -3516,7 +3516,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 634: // $@91: %empty
-#line 2210 "dhcp4_parser.yy"
+#line 2211 "dhcp4_parser.yy"
                          {
     ctx.unique("next-server", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3525,7 +3525,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 635: // next_server: "next-server" $@91 ":" "constant string"
-#line 2213 "dhcp4_parser.yy"
+#line 2214 "dhcp4_parser.yy"
                {
     ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("next-server", next_server);
@@ -3535,7 +3535,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 636: // $@92: %empty
-#line 2219 "dhcp4_parser.yy"
+#line 2220 "dhcp4_parser.yy"
                                  {
     ctx.unique("server-hostname", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3544,7 +3544,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 637: // server_hostname: "server-hostname" $@92 ":" "constant string"
-#line 2222 "dhcp4_parser.yy"
+#line 2223 "dhcp4_parser.yy"
                {
     ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-hostname", srv);
@@ -3554,7 +3554,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 638: // $@93: %empty
-#line 2228 "dhcp4_parser.yy"
+#line 2229 "dhcp4_parser.yy"
                                {
     ctx.unique("boot-file-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3563,7 +3563,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 639: // boot_file_name: "boot-file-name" $@93 ":" "constant string"
-#line 2231 "dhcp4_parser.yy"
+#line 2232 "dhcp4_parser.yy"
                {
     ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("boot-file-name", bootfile);
@@ -3573,7 +3573,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 640: // $@94: %empty
-#line 2237 "dhcp4_parser.yy"
+#line 2238 "dhcp4_parser.yy"
                        {
     ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3582,7 +3582,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 641: // ip_address: "ip-address" $@94 ":" "constant string"
-#line 2240 "dhcp4_parser.yy"
+#line 2241 "dhcp4_parser.yy"
                {
     ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
@@ -3592,7 +3592,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 642: // $@95: %empty
-#line 2246 "dhcp4_parser.yy"
+#line 2247 "dhcp4_parser.yy"
                            {
     ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3604,7 +3604,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 643: // ip_addresses: "ip-addresses" $@95 ":" list_strings
-#line 2252 "dhcp4_parser.yy"
+#line 2253 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3613,7 +3613,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 644: // $@96: %empty
-#line 2257 "dhcp4_parser.yy"
+#line 2258 "dhcp4_parser.yy"
            {
     ctx.unique("duid", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3622,7 +3622,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 645: // duid: "duid" $@96 ":" "constant string"
-#line 2260 "dhcp4_parser.yy"
+#line 2261 "dhcp4_parser.yy"
                {
     ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
@@ -3632,7 +3632,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 646: // $@97: %empty
-#line 2266 "dhcp4_parser.yy"
+#line 2267 "dhcp4_parser.yy"
                        {
     ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3641,7 +3641,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 647: // hw_address: "hw-address" $@97 ":" "constant string"
-#line 2269 "dhcp4_parser.yy"
+#line 2270 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
@@ -3651,7 +3651,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 648: // $@98: %empty
-#line 2275 "dhcp4_parser.yy"
+#line 2276 "dhcp4_parser.yy"
                            {
     ctx.unique("client-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3660,7 +3660,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 649: // client_id_value: "client-id" $@98 ":" "constant string"
-#line 2278 "dhcp4_parser.yy"
+#line 2279 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-id", hw);
@@ -3670,7 +3670,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 650: // $@99: %empty
-#line 2284 "dhcp4_parser.yy"
+#line 2285 "dhcp4_parser.yy"
                              {
     ctx.unique("circuit-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3679,7 +3679,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 651: // circuit_id_value: "circuit-id" $@99 ":" "constant string"
-#line 2287 "dhcp4_parser.yy"
+#line 2288 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("circuit-id", hw);
@@ -3689,7 +3689,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 652: // $@100: %empty
-#line 2293 "dhcp4_parser.yy"
+#line 2294 "dhcp4_parser.yy"
                        {
     ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3698,7 +3698,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 653: // flex_id_value: "flex-id" $@100 ":" "constant string"
-#line 2296 "dhcp4_parser.yy"
+#line 2297 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
@@ -3708,7 +3708,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 654: // $@101: %empty
-#line 2302 "dhcp4_parser.yy"
+#line 2303 "dhcp4_parser.yy"
                    {
     ctx.unique("hostname", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3717,7 +3717,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 655: // hostname: "hostname" $@101 ":" "constant string"
-#line 2305 "dhcp4_parser.yy"
+#line 2306 "dhcp4_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
@@ -3727,7 +3727,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 656: // $@102: %empty
-#line 2311 "dhcp4_parser.yy"
+#line 2312 "dhcp4_parser.yy"
                                            {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3739,7 +3739,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 657: // reservation_client_classes: "client-classes" $@102 ":" list_strings
-#line 2317 "dhcp4_parser.yy"
+#line 2318 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3748,7 +3748,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 658: // $@103: %empty
-#line 2325 "dhcp4_parser.yy"
+#line 2326 "dhcp4_parser.yy"
              {
     ctx.unique("relay", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3760,7 +3760,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 659: // relay: "relay" $@103 ":" "{" relay_map "}"
-#line 2331 "dhcp4_parser.yy"
+#line 2332 "dhcp4_parser.yy"
                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3769,7 +3769,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 662: // $@104: %empty
-#line 2343 "dhcp4_parser.yy"
+#line 2344 "dhcp4_parser.yy"
                                {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3781,7 +3781,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 663: // client_classes: "client-classes" $@104 ":" "[" client_classes_list "]"
-#line 2349 "dhcp4_parser.yy"
+#line 2350 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3790,7 +3790,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 666: // client_classes_list: client_classes_list ","
-#line 2356 "dhcp4_parser.yy"
+#line 2357 "dhcp4_parser.yy"
                                                {
                        ctx.warnAboutExtraCommas(yystack_[0].location);
                        }
@@ -3798,7 +3798,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 667: // $@105: %empty
-#line 2361 "dhcp4_parser.yy"
+#line 2362 "dhcp4_parser.yy"
                                    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3808,7 +3808,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 668: // client_class_entry: "{" $@105 client_class_params "}"
-#line 2365 "dhcp4_parser.yy"
+#line 2366 "dhcp4_parser.yy"
                                      {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3818,7 +3818,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 673: // not_empty_client_class_params: not_empty_client_class_params ","
-#line 2377 "dhcp4_parser.yy"
+#line 2378 "dhcp4_parser.yy"
                                           {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -3826,7 +3826,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 690: // $@106: %empty
-#line 2401 "dhcp4_parser.yy"
+#line 2402 "dhcp4_parser.yy"
                         {
     ctx.unique("test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3835,7 +3835,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 691: // client_class_test: "test" $@106 ":" "constant string"
-#line 2404 "dhcp4_parser.yy"
+#line 2405 "dhcp4_parser.yy"
                {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
@@ -3845,7 +3845,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 692: // $@107: %empty
-#line 2410 "dhcp4_parser.yy"
+#line 2411 "dhcp4_parser.yy"
                                           {
     ctx.unique("template-test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3854,7 +3854,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 693: // client_class_template_test: "template-test" $@107 ":" "constant string"
-#line 2413 "dhcp4_parser.yy"
+#line 2414 "dhcp4_parser.yy"
                {
     ElementPtr template_test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("template-test", template_test);
@@ -3864,7 +3864,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 694: // only_if_required: "only-if-required" ":" "boolean"
-#line 2419 "dhcp4_parser.yy"
+#line 2420 "dhcp4_parser.yy"
                                                  {
     ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3874,7 +3874,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 695: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
-#line 2427 "dhcp4_parser.yy"
+#line 2428 "dhcp4_parser.yy"
                                          {
     ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3884,7 +3884,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 696: // $@108: %empty
-#line 2435 "dhcp4_parser.yy"
+#line 2436 "dhcp4_parser.yy"
                                {
     ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3896,7 +3896,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 697: // control_socket: "control-socket" $@108 ":" "{" control_socket_params "}"
-#line 2441 "dhcp4_parser.yy"
+#line 2442 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3905,7 +3905,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 700: // control_socket_params: control_socket_params ","
-#line 2448 "dhcp4_parser.yy"
+#line 2449 "dhcp4_parser.yy"
                                                    {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
@@ -3913,7 +3913,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 706: // $@109: %empty
-#line 2460 "dhcp4_parser.yy"
+#line 2461 "dhcp4_parser.yy"
                                  {
     ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3922,7 +3922,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 707: // control_socket_type: "socket-type" $@109 ":" "constant string"
-#line 2463 "dhcp4_parser.yy"
+#line 2464 "dhcp4_parser.yy"
                {
     ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
@@ -3932,7 +3932,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 708: // $@110: %empty
-#line 2469 "dhcp4_parser.yy"
+#line 2470 "dhcp4_parser.yy"
                                  {
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3941,7 +3941,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 709: // control_socket_name: "socket-name" $@110 ":" "constant string"
-#line 2472 "dhcp4_parser.yy"
+#line 2473 "dhcp4_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
@@ -3951,7 +3951,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 710: // $@111: %empty
-#line 2481 "dhcp4_parser.yy"
+#line 2482 "dhcp4_parser.yy"
                                        {
     ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3963,7 +3963,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 711: // dhcp_queue_control: "dhcp-queue-control" $@111 ":" "{" queue_control_params "}"
-#line 2487 "dhcp4_parser.yy"
+#line 2488 "dhcp4_parser.yy"
                                                            {
     // The enable queue parameter is required.
     ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -3974,7 +3974,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 714: // queue_control_params: queue_control_params ","
-#line 2496 "dhcp4_parser.yy"
+#line 2497 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
@@ -3982,7 +3982,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 721: // enable_queue: "enable-queue" ":" "boolean"
-#line 2509 "dhcp4_parser.yy"
+#line 2510 "dhcp4_parser.yy"
                                          {
     ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3992,7 +3992,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 722: // $@112: %empty
-#line 2515 "dhcp4_parser.yy"
+#line 2516 "dhcp4_parser.yy"
                        {
     ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4001,7 +4001,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 723: // queue_type: "queue-type" $@112 ":" "constant string"
-#line 2518 "dhcp4_parser.yy"
+#line 2519 "dhcp4_parser.yy"
                {
     ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("queue-type", qt);
@@ -4011,7 +4011,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 724: // capacity: "capacity" ":" "integer"
-#line 2524 "dhcp4_parser.yy"
+#line 2525 "dhcp4_parser.yy"
                                  {
     ctx.unique("capacity", ctx.loc2pos(yystack_[2].location));
     ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4021,7 +4021,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 725: // $@113: %empty
-#line 2530 "dhcp4_parser.yy"
+#line 2531 "dhcp4_parser.yy"
                             {
     ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4030,7 +4030,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 726: // arbitrary_map_entry: "constant string" $@113 ":" value
-#line 2533 "dhcp4_parser.yy"
+#line 2534 "dhcp4_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4039,7 +4039,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 727: // $@114: %empty
-#line 2540 "dhcp4_parser.yy"
+#line 2541 "dhcp4_parser.yy"
                      {
     ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4051,7 +4051,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 728: // dhcp_ddns: "dhcp-ddns" $@114 ":" "{" dhcp_ddns_params "}"
-#line 2546 "dhcp4_parser.yy"
+#line 2547 "dhcp4_parser.yy"
                                                        {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -4062,7 +4062,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 729: // $@115: %empty
-#line 2553 "dhcp4_parser.yy"
+#line 2554 "dhcp4_parser.yy"
                               {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4072,7 +4072,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 730: // sub_dhcp_ddns: "{" $@115 dhcp_ddns_params "}"
-#line 2557 "dhcp4_parser.yy"
+#line 2558 "dhcp4_parser.yy"
                                   {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -4082,7 +4082,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 733: // dhcp_ddns_params: dhcp_ddns_params ","
-#line 2565 "dhcp4_parser.yy"
+#line 2566 "dhcp4_parser.yy"
                                          {
                     ctx.warnAboutExtraCommas(yystack_[0].location);
                     }
@@ -4090,7 +4090,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 752: // enable_updates: "enable-updates" ":" "boolean"
-#line 2590 "dhcp4_parser.yy"
+#line 2591 "dhcp4_parser.yy"
                                              {
     ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -4100,7 +4100,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 753: // $@116: %empty
-#line 2596 "dhcp4_parser.yy"
+#line 2597 "dhcp4_parser.yy"
                      {
     ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4109,7 +4109,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 754: // server_ip: "server-ip" $@116 ":" "constant string"
-#line 2599 "dhcp4_parser.yy"
+#line 2600 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
@@ -4119,7 +4119,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 755: // server_port: "server-port" ":" "integer"
-#line 2605 "dhcp4_parser.yy"
+#line 2606 "dhcp4_parser.yy"
                                        {
     ctx.unique("server-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4129,7 +4129,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 756: // $@117: %empty
-#line 2611 "dhcp4_parser.yy"
+#line 2612 "dhcp4_parser.yy"
                      {
     ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4138,7 +4138,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 757: // sender_ip: "sender-ip" $@117 ":" "constant string"
-#line 2614 "dhcp4_parser.yy"
+#line 2615 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
@@ -4148,7 +4148,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 758: // sender_port: "sender-port" ":" "integer"
-#line 2620 "dhcp4_parser.yy"
+#line 2621 "dhcp4_parser.yy"
                                        {
     ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4158,7 +4158,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 759: // max_queue_size: "max-queue-size" ":" "integer"
-#line 2626 "dhcp4_parser.yy"
+#line 2627 "dhcp4_parser.yy"
                                              {
     ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location));
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4168,7 +4168,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 760: // $@118: %empty
-#line 2632 "dhcp4_parser.yy"
+#line 2633 "dhcp4_parser.yy"
                            {
     ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_PROTOCOL);
@@ -4177,7 +4177,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 761: // ncr_protocol: "ncr-protocol" $@118 ":" ncr_protocol_value
-#line 2635 "dhcp4_parser.yy"
+#line 2636 "dhcp4_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4186,19 +4186,19 @@ namespace isc { namespace dhcp {
     break;
 
   case 762: // ncr_protocol_value: "udp"
-#line 2641 "dhcp4_parser.yy"
+#line 2642 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 4192 "dhcp4_parser.cc"
     break;
 
   case 763: // ncr_protocol_value: "tcp"
-#line 2642 "dhcp4_parser.yy"
+#line 2643 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 4198 "dhcp4_parser.cc"
     break;
 
   case 764: // $@119: %empty
-#line 2645 "dhcp4_parser.yy"
+#line 2646 "dhcp4_parser.yy"
                        {
     ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_FORMAT);
@@ -4207,7 +4207,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 765: // ncr_format: "ncr-format" $@119 ":" "JSON"
-#line 2648 "dhcp4_parser.yy"
+#line 2649 "dhcp4_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
@@ -4217,7 +4217,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 766: // $@120: %empty
-#line 2655 "dhcp4_parser.yy"
+#line 2656 "dhcp4_parser.yy"
                                          {
     ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4226,7 +4226,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 767: // dep_qualifying_suffix: "qualifying-suffix" $@120 ":" "constant string"
-#line 2658 "dhcp4_parser.yy"
+#line 2659 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
@@ -4236,7 +4236,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 768: // dep_override_no_update: "override-no-update" ":" "boolean"
-#line 2665 "dhcp4_parser.yy"
+#line 2666 "dhcp4_parser.yy"
                                                          {
     ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -4246,7 +4246,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 769: // dep_override_client_update: "override-client-update" ":" "boolean"
-#line 2672 "dhcp4_parser.yy"
+#line 2673 "dhcp4_parser.yy"
                                                                  {
     ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -4256,7 +4256,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 770: // $@121: %empty
-#line 2679 "dhcp4_parser.yy"
+#line 2680 "dhcp4_parser.yy"
                                              {
     ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
@@ -4265,7 +4265,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 771: // dep_replace_client_name: "replace-client-name" $@121 ":" ddns_replace_client_name_value
-#line 2682 "dhcp4_parser.yy"
+#line 2683 "dhcp4_parser.yy"
                                        {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4274,7 +4274,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 772: // $@122: %empty
-#line 2688 "dhcp4_parser.yy"
+#line 2689 "dhcp4_parser.yy"
                                        {
     ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4283,7 +4283,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 773: // dep_generated_prefix: "generated-prefix" $@122 ":" "constant string"
-#line 2691 "dhcp4_parser.yy"
+#line 2692 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
@@ -4293,7 +4293,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 774: // $@123: %empty
-#line 2698 "dhcp4_parser.yy"
+#line 2699 "dhcp4_parser.yy"
                                          {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4302,7 +4302,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 775: // dep_hostname_char_set: "hostname-char-set" $@123 ":" "constant string"
-#line 2701 "dhcp4_parser.yy"
+#line 2702 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
@@ -4312,7 +4312,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 776: // $@124: %empty
-#line 2708 "dhcp4_parser.yy"
+#line 2709 "dhcp4_parser.yy"
                                                          {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4321,7 +4321,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 777: // dep_hostname_char_replacement: "hostname-char-replacement" $@124 ":" "constant string"
-#line 2711 "dhcp4_parser.yy"
+#line 2712 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
@@ -4331,7 +4331,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 778: // $@125: %empty
-#line 2720 "dhcp4_parser.yy"
+#line 2721 "dhcp4_parser.yy"
                                {
     ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4343,7 +4343,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 779: // config_control: "config-control" $@125 ":" "{" config_control_params "}"
-#line 2726 "dhcp4_parser.yy"
+#line 2727 "dhcp4_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
@@ -4353,7 +4353,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 780: // $@126: %empty
-#line 2732 "dhcp4_parser.yy"
+#line 2733 "dhcp4_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4363,7 +4363,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 781: // sub_config_control: "{" $@126 config_control_params "}"
-#line 2736 "dhcp4_parser.yy"
+#line 2737 "dhcp4_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
@@ -4372,7 +4372,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 784: // config_control_params: config_control_params ","
-#line 2744 "dhcp4_parser.yy"
+#line 2745 "dhcp4_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
@@ -4380,7 +4380,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 787: // $@127: %empty
-#line 2754 "dhcp4_parser.yy"
+#line 2755 "dhcp4_parser.yy"
                                    {
     ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4392,7 +4392,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 788: // config_databases: "config-databases" $@127 ":" "[" database_list "]"
-#line 2760 "dhcp4_parser.yy"
+#line 2761 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4401,7 +4401,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 789: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 2765 "dhcp4_parser.yy"
+#line 2766 "dhcp4_parser.yy"
                                                              {
     ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4411,7 +4411,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 790: // $@128: %empty
-#line 2773 "dhcp4_parser.yy"
+#line 2774 "dhcp4_parser.yy"
                  {
     ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4423,7 +4423,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 791: // loggers: "loggers" $@128 ":" "[" loggers_entries "]"
-#line 2779 "dhcp4_parser.yy"
+#line 2780 "dhcp4_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4432,7 +4432,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 794: // loggers_entries: loggers_entries ","
-#line 2788 "dhcp4_parser.yy"
+#line 2789 "dhcp4_parser.yy"
                                        {
                    ctx.warnAboutExtraCommas(yystack_[0].location);
                    }
@@ -4440,7 +4440,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 795: // $@129: %empty
-#line 2794 "dhcp4_parser.yy"
+#line 2795 "dhcp4_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
@@ -4450,7 +4450,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 796: // logger_entry: "{" $@129 logger_params "}"
-#line 2798 "dhcp4_parser.yy"
+#line 2799 "dhcp4_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
@@ -4458,7 +4458,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 799: // logger_params: logger_params ","
-#line 2804 "dhcp4_parser.yy"
+#line 2805 "dhcp4_parser.yy"
                                    {
                  ctx.warnAboutExtraCommas(yystack_[0].location);
                  }
@@ -4466,7 +4466,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 807: // debuglevel: "debuglevel" ":" "integer"
-#line 2818 "dhcp4_parser.yy"
+#line 2819 "dhcp4_parser.yy"
                                      {
     ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location));
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4476,7 +4476,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 808: // $@130: %empty
-#line 2824 "dhcp4_parser.yy"
+#line 2825 "dhcp4_parser.yy"
                    {
     ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4485,7 +4485,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 809: // severity: "severity" $@130 ":" "constant string"
-#line 2827 "dhcp4_parser.yy"
+#line 2828 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
@@ -4495,7 +4495,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 810: // $@131: %empty
-#line 2833 "dhcp4_parser.yy"
+#line 2834 "dhcp4_parser.yy"
                                     {
     ctx.unique("output_options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4507,7 +4507,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 811: // output_options_list: "output_options" $@131 ":" "[" output_options_list_content "]"
-#line 2839 "dhcp4_parser.yy"
+#line 2840 "dhcp4_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4516,7 +4516,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 814: // output_options_list_content: output_options_list_content ","
-#line 2846 "dhcp4_parser.yy"
+#line 2847 "dhcp4_parser.yy"
                                                                {
                                ctx.warnAboutExtraCommas(yystack_[0].location);
                                }
@@ -4524,7 +4524,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 815: // $@132: %empty
-#line 2851 "dhcp4_parser.yy"
+#line 2852 "dhcp4_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -4534,7 +4534,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 816: // output_entry: "{" $@132 output_params_list "}"
-#line 2855 "dhcp4_parser.yy"
+#line 2856 "dhcp4_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
@@ -4542,7 +4542,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 819: // output_params_list: output_params_list ","
-#line 2861 "dhcp4_parser.yy"
+#line 2862 "dhcp4_parser.yy"
                                              {
                       ctx.warnAboutExtraCommas(yystack_[0].location);
                       }
@@ -4550,7 +4550,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 825: // $@133: %empty
-#line 2873 "dhcp4_parser.yy"
+#line 2874 "dhcp4_parser.yy"
                {
     ctx.unique("output", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4559,7 +4559,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 826: // output: "output" $@133 ":" "constant string"
-#line 2876 "dhcp4_parser.yy"
+#line 2877 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
@@ -4569,7 +4569,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 827: // flush: "flush" ":" "boolean"
-#line 2882 "dhcp4_parser.yy"
+#line 2883 "dhcp4_parser.yy"
                            {
     ctx.unique("flush", ctx.loc2pos(yystack_[2].location));
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -4579,7 +4579,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 828: // maxsize: "maxsize" ":" "integer"
-#line 2888 "dhcp4_parser.yy"
+#line 2889 "dhcp4_parser.yy"
                                {
     ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location));
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4589,7 +4589,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 829: // maxver: "maxver" ":" "integer"
-#line 2894 "dhcp4_parser.yy"
+#line 2895 "dhcp4_parser.yy"
                              {
     ctx.unique("maxver", ctx.loc2pos(yystack_[2].location));
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4599,7 +4599,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 830: // $@134: %empty
-#line 2900 "dhcp4_parser.yy"
+#line 2901 "dhcp4_parser.yy"
                  {
     ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4608,7 +4608,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 831: // pattern: "pattern" $@134 ":" "constant string"
-#line 2903 "dhcp4_parser.yy"
+#line 2904 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
@@ -4618,7 +4618,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 832: // $@135: %empty
-#line 2909 "dhcp4_parser.yy"
+#line 2910 "dhcp4_parser.yy"
                              {
     ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4630,7 +4630,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 833: // compatibility: "compatibility" $@135 ":" "{" compatibility_params "}"
-#line 2915 "dhcp4_parser.yy"
+#line 2916 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4639,15 +4639,15 @@ namespace isc { namespace dhcp {
     break;
 
   case 836: // compatibility_params: compatibility_params ","
-#line 2922 "dhcp4_parser.yy"
+#line 2923 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
 #line 4647 "dhcp4_parser.cc"
     break;
 
-  case 840: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
-#line 2932 "dhcp4_parser.yy"
+  case 841: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
+#line 2934 "dhcp4_parser.yy"
                                                              {
     ctx.unique("lenient-option-parsing", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -4656,8 +4656,8 @@ namespace isc { namespace dhcp {
 #line 4657 "dhcp4_parser.cc"
     break;
 
-  case 841: // ignore-rai-link-selection: "ignore-rai-link-selection" ":" "boolean"
-#line 2938 "dhcp4_parser.yy"
+  case 842: // ignore-rai-link-selection: "ignore-rai-link-selection" ":" "boolean"
+#line 2940 "dhcp4_parser.yy"
                                                              {
     ctx.unique("ignore-rai-link-selection", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -4666,8 +4666,18 @@ namespace isc { namespace dhcp {
 #line 4667 "dhcp4_parser.cc"
     break;
 
+  case 843: // exclude_first_last_24: "exclude-first-last-24" ":" "boolean"
+#line 2946 "dhcp4_parser.yy"
+                                                           {
+    ctx.unique("exclude-first-last-24", ctx.loc2pos(yystack_[2].location));
+    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("exclude-first-last-24", b);
+}
+#line 4677 "dhcp4_parser.cc"
+    break;
 
-#line 4671 "dhcp4_parser.cc"
+
+#line 4681 "dhcp4_parser.cc"
 
             default:
               break;
@@ -5019,143 +5029,143 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp4Parser::yypact_ninf_ = -993;
+  const short Dhcp4Parser::yypact_ninf_ = -992;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp4Parser::yypact_[] =
   {
-     409,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,    22,    39,    23,    29,    34,    46,
-      59,    62,    84,    88,   124,   144,   197,   209,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,    39,  -172,   101,   189,    36,   642,
-     224,   272,   -41,    85,   319,   -68,   424,    44,  -993,   109,
-     150,   223,   229,   276,  -993,    71,  -993,  -993,  -993,  -993,
-     241,   281,   299,  -993,  -993,  -993,  -993,  -993,  -993,   308,
-     321,   335,   342,   358,   364,   380,   384,   385,   386,   387,
-    -993,   388,   389,   391,   392,   393,  -993,  -993,  -993,   394,
-     396,   403,  -993,  -993,  -993,   405,  -993,  -993,  -993,  -993,
-    -993,   406,   407,   415,  -993,  -993,  -993,  -993,  -993,   416,
-    -993,  -993,  -993,  -993,  -993,  -993,   418,   421,   422,  -993,
-    -993,   425,  -993,    77,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,   427,   428,   429,   431,  -993,   102,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,   432,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,   105,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,   117,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,   315,   434,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,   430,  -993,  -993,   436,  -993,  -993,  -993,   437,
-    -993,  -993,   435,   439,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,   440,   442,   443,
-    -993,  -993,  -993,  -993,   441,   445,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,   118,
-    -993,  -993,  -993,   446,  -993,  -993,   448,  -993,   449,   451,
-    -993,  -993,   452,   453,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,   125,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,   454,
-     140,  -993,  -993,  -993,  -993,    39,    39,  -993,   249,   456,
-    -993,  -993,   460,   463,   464,   257,   258,   259,   470,   473,
-     479,   480,   485,   486,   282,   284,   287,   288,   291,   292,
-     295,   296,   297,   300,   302,   500,   303,   305,   304,   306,
-     307,   514,   517,   526,   324,   327,   331,   527,   530,   535,
-     336,   542,   545,   546,   548,   550,   343,   344,   354,   555,
-     556,   560,   565,   566,   361,   570,   571,   573,   578,   594,
-     595,   390,   408,   410,   596,   597,  -993,   189,  -993,   598,
-     615,   616,   411,   412,   417,   419,    36,  -993,   618,   622,
-     623,   625,   627,   628,   426,   629,   631,   632,   642,  -993,
-     634,   224,  -993,   635,   636,   637,   639,   641,   643,   644,
-     646,  -993,   272,  -993,   647,   648,   444,   649,   650,   652,
-     433,  -993,    85,   653,   447,   450,   455,  -993,   319,   654,
-     655,   108,  -993,   457,   657,   658,   458,   660,   466,   467,
-     661,   663,   468,   471,   667,   679,   681,   683,   424,  -993,
-     684,   478,    44,  -993,  -993,  -993,   686,   685,   687,   688,
-     689,  -993,  -993,  -993,   481,   483,   487,   691,   692,   695,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,   506,  -993,  -993,  -993,  -993,  -993,   -95,   507,   508,
-    -993,  -993,  -993,   714,   724,   728,  -993,   525,   731,   730,
-     528,    75,  -993,  -993,  -993,   734,   739,   740,   742,   749,
-    -993,   750,   751,   752,   756,   539,   554,  -993,  -993,  -993,
-     761,   760,  -993,   763,   159,   279,  -993,  -993,  -993,  -993,
-    -993,   561,   562,   563,   769,   568,   569,  -993,   763,   572,
-     768,  -993,   574,  -993,   763,   575,   576,   577,   579,   580,
-     581,   582,  -993,   583,   584,  -993,   585,   586,   587,  -993,
-    -993,   588,  -993,  -993,  -993,  -993,   589,   730,  -993,  -993,
-     590,   591,  -993,   592,  -993,  -993,    14,   601,  -993,  -993,
-     -95,   593,   599,   600,  -993,   775,  -993,  -993,    39,   189,
-      44,    36,   348,  -993,  -993,  -993,   112,   112,   774,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,   776,   781,
-     797,  -993,   798,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,   157,   799,   800,   801,    64,   -11,    -8,    74,   424,
-    -993,  -993,   804,  -103,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,   805,  -993,  -993,  -993,  -993,
-     242,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,   774,
-    -993,   176,   274,   275,  -993,  -993,   293,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,   809,   810,   811,   812,   813,   814,
-     815,   816,   817,   820,  -993,   821,  -993,  -993,  -993,  -993,
-    -993,   310,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,   312,  -993,   822,   823,  -993,  -993,
-     824,   826,  -993,  -993,   825,   829,  -993,  -993,   827,   831,
-    -993,  -993,   830,   832,  -993,  -993,  -993,  -993,  -993,  -993,
-     146,  -993,  -993,  -993,  -993,  -993,  -993,  -993,   195,  -993,
-    -993,   833,   834,  -993,  -993,   835,   837,  -993,   838,   839,
-     840,   841,   842,   843,   316,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,   844,   845,   846,  -993,   318,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,   326,  -993,
-    -993,  -993,   847,  -993,   849,  -993,  -993,  -993,   332,  -993,
-    -993,  -993,  -993,  -993,   333,  -993,   211,  -993,   850,   851,
-    -993,   345,  -993,  -993,  -993,   617,  -993,   852,   853,  -993,
-    -993,  -993,  -993,   854,   855,  -993,  -993,  -993,   856,   859,
-     348,  -993,   860,   861,   862,   863,   659,   656,   662,   664,
-     665,   668,   669,   670,   671,   672,   864,   673,   867,   868,
-     870,   871,   112,  -993,  -993,   112,  -993,   774,   642,  -993,
-     776,    85,  -993,   781,   319,  -993,   797,  1263,  -993,   798,
-     157,  -993,   104,   799,  -993,   272,  -993,   800,   -68,  -993,
-     801,   674,   675,   676,   677,   678,   680,    64,  -993,   682,
-     690,   693,   -11,  -993,   874,   886,    -8,  -993,   694,   888,
-     697,   889,    74,  -993,  -993,   235,   804,  -993,   696,   698,
-    -103,  -993,  -993,   890,   891,   224,  -993,   805,   893,  -993,
-    -993,   700,   702,  -993,   346,   703,   704,   705,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,    31,  -993,
-     706,   707,   708,   709,  -993,   347,  -993,   349,  -993,   892,
-    -993,   894,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,   351,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-     895,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,   897,   900,  -993,  -993,  -993,  -993,  -993,
-    -993,   898,  -993,   353,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,   710,   711,  -993,  -993,
-     712,  -993,    39,  -993,  -993,   919,  -993,  -993,  -993,  -993,
-    -993,   355,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,   715,   357,  -993,   763,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  1263,  -993,   920,   922,
-     716,  -993,   104,  -993,  -993,  -993,  -993,  -993,  -993,   923,
-     717,   926,   235,  -993,  -993,  -993,  -993,  -993,   722,   723,
-    -993,  -993,   930,  -993,   726,  -993,  -993,  -993,   932,  -993,
-    -993,   233,  -993,    51,   932,  -993,  -993,   943,   950,   954,
-    -993,   374,  -993,  -993,  -993,  -993,  -993,  -993,  -993,   957,
-     766,   783,   785,   970,    51,  -993,   789,  -993,  -993,  -993,
-     807,  -993,  -993,  -993
+     219,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,    36,    42,    43,    64,   130,   133,
+     136,   143,   156,   162,   178,   204,   245,   255,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,    42,  -177,    35,   122,   149,   257,
+     191,   490,   -43,   172,   300,  -108,   648,   102,  -992,    56,
+      61,    54,    77,    72,  -992,    34,  -992,  -992,  -992,  -992,
+      92,   100,   265,  -992,  -992,  -992,  -992,  -992,  -992,   291,
+     313,   315,   330,   340,   346,   354,   358,   367,   374,   387,
+    -992,   399,   400,   406,   407,   409,  -992,  -992,  -992,   429,
+     430,   437,  -992,  -992,  -992,   438,  -992,  -992,  -992,  -992,
+    -992,   439,   440,   441,  -992,  -992,  -992,  -992,  -992,   442,
+    -992,  -992,  -992,  -992,  -992,  -992,   446,   448,   449,  -992,
+    -992,   451,  -992,    71,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,   454,   455,   456,   458,  -992,    74,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,   459,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,    78,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,    80,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,   139,   290,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,   382,  -992,  -992,   462,  -992,  -992,  -992,   463,
+    -992,  -992,   428,   379,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,   466,   467,   469,
+    -992,  -992,  -992,  -992,   470,   471,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,    89,
+    -992,  -992,  -992,   473,  -992,  -992,   476,  -992,   478,   481,
+    -992,  -992,   482,   485,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,    91,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,   488,
+      97,  -992,  -992,  -992,  -992,    42,    42,  -992,  -138,   492,
+    -992,  -992,   494,   496,   500,   295,   299,   301,   501,   503,
+     512,   516,   522,   523,   318,   319,   320,   321,   325,   327,
+     322,   329,   331,   333,   336,   539,   337,   341,   338,   342,
+     343,   556,   557,   559,   350,   357,   364,   564,   575,   581,
+     377,   582,   586,   588,   589,   591,   388,   389,   390,   592,
+     596,   597,   601,   602,   395,   604,   605,   606,   607,   609,
+     610,   401,   402,   403,   614,   621,  -992,   122,  -992,   623,
+     624,   625,   416,   417,   420,   421,   149,  -992,   630,   631,
+     632,   633,   634,   635,   431,   636,   637,   641,   257,  -992,
+     643,   191,  -992,   644,   645,   646,   647,   649,   650,   652,
+     653,  -992,   490,  -992,   654,   655,   434,   656,   657,   659,
+     450,  -992,   172,   661,   452,   453,   457,  -992,   300,   664,
+     665,    27,  -992,   464,   666,   673,   472,   679,   475,   477,
+     681,   684,   479,   480,   686,   687,   688,   691,   648,  -992,
+     692,   491,   102,  -992,  -992,  -992,   698,   697,   723,   724,
+     725,  -992,  -992,  -992,   525,   526,   527,   726,   732,   700,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,   529,  -992,  -992,  -992,  -992,  -992,  -124,   530,   531,
+    -992,  -992,  -992,   739,   740,   742,  -992,   532,   743,   745,
+     538,    67,  -992,  -992,  -992,   749,   753,   754,   758,   757,
+    -992,   759,   760,   761,   763,   560,   561,  -992,  -992,  -992,
+     768,   767,  -992,   770,   231,   311,  -992,  -992,  -992,  -992,
+    -992,   567,   568,   583,   790,   585,   593,  -992,   770,   594,
+     795,  -992,   595,  -992,   770,   613,   615,   616,   619,   622,
+     626,   627,  -992,   628,   629,  -992,   638,   639,   640,  -992,
+    -992,   651,  -992,  -992,  -992,  -992,   658,   745,  -992,  -992,
+     660,   662,  -992,   663,  -992,  -992,    38,   667,  -992,  -992,
+    -124,   668,   669,   670,  -992,   798,  -992,  -992,    42,   122,
+     102,   149,   218,  -992,  -992,  -992,   738,   738,   800,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,   801,   818,
+     825,  -992,   827,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,    86,   828,   829,   834,   166,    10,    68,    21,   648,
+    -992,  -992,   836,  -127,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,   837,  -992,  -992,  -992,  -992,
+     140,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,   800,
+    -992,   104,   138,   141,  -992,  -992,   167,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,   841,   842,   843,   844,   848,   850,
+     851,   852,   853,   854,  -992,   856,  -992,  -992,  -992,  -992,
+    -992,   216,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,   225,  -992,   855,   860,  -992,  -992,
+     858,   862,  -992,  -992,   861,   863,  -992,  -992,   864,   865,
+    -992,  -992,   866,   872,  -992,  -992,  -992,  -992,  -992,  -992,
+      57,  -992,  -992,  -992,  -992,  -992,  -992,  -992,   105,  -992,
+    -992,   870,   874,  -992,  -992,   876,   875,  -992,   879,   880,
+     881,   882,   883,   884,   226,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,   885,   886,   887,  -992,   256,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,   258,  -992,
+    -992,  -992,   888,  -992,   889,  -992,  -992,  -992,   289,  -992,
+    -992,  -992,  -992,  -992,   293,  -992,   119,  -992,   890,   891,
+     892,  -992,   312,  -992,  -992,  -992,  -992,   689,  -992,   893,
+     894,  -992,  -992,  -992,  -992,   895,   896,  -992,  -992,  -992,
+     897,   900,   218,  -992,   901,   902,   903,   904,   699,   695,
+     701,   696,   702,   703,   704,   705,   706,   707,   908,   708,
+     917,   918,   919,   920,   738,  -992,  -992,   738,  -992,   800,
+     257,  -992,   801,   172,  -992,   818,   300,  -992,   825,   642,
+    -992,   827,    86,  -992,   323,   828,  -992,   490,  -992,   829,
+    -108,  -992,   834,   713,   714,   715,   716,   717,   718,   166,
+    -992,   720,   719,   728,    10,  -992,   928,   931,    68,  -992,
+     727,   933,   744,   934,    21,  -992,  -992,   386,   836,  -992,
+     748,   764,   769,  -127,  -992,  -992,   953,   960,   191,  -992,
+     837,   968,  -992,  -992,   766,   771,  -992,   197,   783,   789,
+     804,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,   228,  -992,   808,   812,   815,   819,  -992,   356,  -992,
+     371,  -992,   966,  -992,   973,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+     378,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  1041,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  1069,  1077,  -992,  -992,
+    -992,  -992,  -992,  -992,  1073,  -992,   397,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,   873,
+     877,  -992,  -992,   878,  -992,    42,  -992,  -992,  1082,  -992,
+    -992,  -992,  -992,  -992,   398,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,   898,   404,  -992,   770,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+     642,  -992,  1083,  1086,   899,  -992,   323,  -992,  -992,  -992,
+    -992,  -992,  -992,  1087,   905,  1088,   386,  -992,  -992,  -992,
+    -992,  -992,   907,   909,  -992,  -992,  1089,  -992,   910,  -992,
+    -992,  -992,  1090,  -992,  -992,   120,  -992,   161,  1090,  -992,
+    -992,  1091,  1092,  1094,  -992,   432,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  1095,   911,   912,   914,  1096,   161,  -992,
+     916,  -992,  -992,  -992,   922,  -992,  -992,  -992
   };
 
   const short
@@ -5256,90 +5266,90 @@ namespace isc { namespace dhcp {
      319,   320,   321,   706,   708,   705,   703,   704,     0,   698,
      701,   702,     0,   722,     0,   725,   718,   719,     0,   712,
      715,   716,   717,   720,     0,   795,     0,   792,     0,     0,
-     839,     0,   834,   837,   838,    53,   583,     0,   579,   580,
-     642,   660,   661,     0,     0,    62,   779,   181,     0,     0,
-     217,   214,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   840,     0,   834,   837,   838,   839,    53,   583,     0,
+     579,   580,   642,   660,   661,     0,     0,    62,   779,   181,
+       0,     0,   217,   214,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   237,   212,   225,     0,   227,   232,     0,   365,
-     370,   514,   502,   509,   553,   543,   548,     0,   449,   454,
-     301,   298,   669,   666,   663,   614,   604,   609,     0,   327,
-     332,     0,     0,     0,     0,     0,     0,   351,   348,     0,
-       0,     0,   316,   313,     0,     0,   700,   697,     0,     0,
-       0,     0,   714,   711,   728,     0,   794,   791,     0,     0,
-     836,   833,    55,     0,    54,     0,   577,   582,     0,   659,
-     788,     0,     0,   216,     0,     0,     0,     0,   271,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,     0,   288,
-       0,     0,     0,     0,   236,     0,   231,     0,   369,     0,
-     508,     0,   547,   500,   478,   479,   480,   463,   464,   483,
-     484,   485,   486,   487,   499,   466,   467,   488,   489,   490,
-     491,   492,   493,   494,   495,   496,   497,   498,   460,   461,
-     462,   476,   477,   473,   474,   475,   472,     0,   457,   465,
-     481,   482,   468,   469,   470,   471,   453,   300,   690,   692,
-       0,   685,   686,   687,   688,   689,   678,   679,   683,   684,
-     680,   681,   682,     0,   670,   671,   674,   675,   676,   677,
-     665,     0,   608,     0,   331,   358,   359,   360,   361,   362,
-     363,   350,   323,   324,   325,   315,     0,     0,   699,   721,
-       0,   724,     0,   713,   810,     0,   808,   806,   800,   804,
-     805,     0,   797,   802,   803,   801,   793,   840,   841,   835,
-      52,    57,     0,   581,     0,   221,   223,   262,   263,   264,
-     261,   266,   268,   270,   285,   286,   287,   284,   290,   292,
-     294,   296,   234,   372,   511,   550,   459,   456,     0,     0,
-       0,   668,   673,   611,   334,   707,   709,   723,   726,     0,
-       0,     0,   799,   796,    56,   584,   643,   458,     0,     0,
-     694,   672,     0,   807,     0,   798,   691,   693,     0,   809,
-     815,     0,   812,     0,   814,   811,   825,     0,     0,     0,
-     830,     0,   817,   820,   821,   822,   823,   824,   813,     0,
-       0,     0,     0,     0,   819,   816,     0,   827,   828,   829,
-       0,   818,   826,   831
+       0,     0,     0,     0,   237,   212,   225,     0,   227,   232,
+       0,   365,   370,   514,   502,   509,   553,   543,   548,     0,
+     449,   454,   301,   298,   669,   666,   663,   614,   604,   609,
+       0,   327,   332,     0,     0,     0,     0,     0,     0,   351,
+     348,     0,     0,     0,   316,   313,     0,     0,   700,   697,
+       0,     0,     0,     0,   714,   711,   728,     0,   794,   791,
+       0,     0,     0,   836,   833,    55,     0,    54,     0,   577,
+     582,     0,   659,   788,     0,     0,   216,     0,     0,     0,
+       0,   271,   274,   275,   276,   277,   278,   279,   280,   281,
+     282,     0,   288,     0,     0,     0,     0,   236,     0,   231,
+       0,   369,     0,   508,     0,   547,   500,   478,   479,   480,
+     463,   464,   483,   484,   485,   486,   487,   499,   466,   467,
+     488,   489,   490,   491,   492,   493,   494,   495,   496,   497,
+     498,   460,   461,   462,   476,   477,   473,   474,   475,   472,
+       0,   457,   465,   481,   482,   468,   469,   470,   471,   453,
+     300,   690,   692,     0,   685,   686,   687,   688,   689,   678,
+     679,   683,   684,   680,   681,   682,     0,   670,   671,   674,
+     675,   676,   677,   665,     0,   608,     0,   331,   358,   359,
+     360,   361,   362,   363,   350,   323,   324,   325,   315,     0,
+       0,   699,   721,     0,   724,     0,   713,   810,     0,   808,
+     806,   800,   804,   805,     0,   797,   802,   803,   801,   793,
+     841,   842,   843,   835,    52,    57,     0,   581,     0,   221,
+     223,   262,   263,   264,   261,   266,   268,   270,   285,   286,
+     287,   284,   290,   292,   294,   296,   234,   372,   511,   550,
+     459,   456,     0,     0,     0,   668,   673,   611,   334,   707,
+     709,   723,   726,     0,     0,     0,   799,   796,    56,   584,
+     643,   458,     0,     0,   694,   672,     0,   807,     0,   798,
+     691,   693,     0,   809,   815,     0,   812,     0,   814,   811,
+     825,     0,     0,     0,   830,     0,   817,   820,   821,   822,
+     823,   824,   813,     0,     0,     0,     0,     0,   819,   816,
+       0,   827,   828,   829,     0,   818,   826,   831
   };
 
   const short
   Dhcp4Parser::yypgoto_[] =
   {
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,   -59,  -993,  -584,  -993,   151,
-    -993,  -993,  -993,  -993,  -993,  -993,  -624,  -993,  -993,  -993,
-     -67,  -993,  -993,  -993,  -993,  -993,  -993,  -993,   148,   362,
-     -55,     7,    17,   -32,   -30,   -27,     4,     9,    25,    27,
-    -993,  -993,  -993,  -993,    30,  -993,  -993,    33,    35,    37,
-      40,    43,    45,  -993,   198,    47,  -993,    48,  -993,    50,
-      53,    55,  -993,    58,  -993,    60,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,   309,   502,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,    52,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,   267,  -993,    72,  -993,  -705,    79,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,   -63,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,    67,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,    42,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,    56,  -993,  -993,  -993,    68,   529,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,    54,  -993,  -993,  -993,  -993,
-    -993,  -993,  -992,  -993,  -993,  -993,    78,  -993,  -993,  -993,
-      81,   564,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -991,  -993,   -43,  -993,    20,  -993,    61,    63,    65,    66,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,    76,  -993,  -993,
-    -143,   -39,  -993,  -993,  -993,  -993,  -993,    86,  -993,  -993,
-    -993,    83,  -993,   549,  -993,   -54,  -993,  -993,  -993,  -993,
-    -993,   -20,  -993,  -993,  -993,  -993,  -993,   -52,  -993,  -993,
-    -993,    82,  -993,  -993,  -993,    89,  -993,   544,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-      38,  -993,  -993,  -993,    32,   603,  -993,  -993,   -45,  -993,
-      -6,  -993,   -56,  -993,  -993,  -993,    73,  -993,  -993,  -993,
-      87,  -993,   567,   -26,  -993,   -22,  -993,     6,  -993,   328,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -986,  -993,  -993,
-    -993,  -993,  -993,    90,  -993,  -993,  -993,  -138,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,    69,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,    70,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,   352,   532,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,   397,   524,
-    -993,  -993,  -993,  -993,  -993,  -993,    80,  -993,  -993,  -145,
-    -993,  -993,  -993,  -993,  -993,  -993,  -160,  -993,  -993,  -178,
-    -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,  -993,
-      91,  -993,  -993
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,   -53,  -992,  -586,  -992,   -35,
+    -992,  -992,  -992,  -992,  -992,  -992,  -641,  -992,  -992,  -992,
+     -67,  -992,  -992,  -992,  -992,  -992,  -992,  -992,   189,   608,
+      -8,    11,    29,   -54,   -34,   -12,   -10,     3,    33,    37,
+    -992,  -992,  -992,  -992,    40,  -992,  -992,    41,    44,    47,
+      48,    51,    52,  -992,   393,    55,  -992,    58,  -992,    59,
+      62,    63,  -992,    65,  -992,    66,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,   391,   598,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,   129,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,   304,  -992,   107,  -992,  -703,   113,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,   -45,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,    96,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,    81,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,    88,  -992,  -992,  -992,    94,   565,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,    82,  -992,  -992,  -992,  -992,
+    -992,  -992,  -991,  -992,  -992,  -992,   110,  -992,  -992,  -992,
+     123,   611,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -983,  -992,   -65,  -992,    25,  -992,    69,    70,    73,    76,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,   108,  -992,  -992,
+    -102,   -62,  -992,  -992,  -992,  -992,  -992,   117,  -992,  -992,
+    -992,   127,  -992,   599,  -992,   -61,  -992,  -992,  -992,  -992,
+    -992,   -58,  -992,  -992,  -992,  -992,  -992,    -4,  -992,  -992,
+    -992,   126,  -992,  -992,  -992,   125,  -992,   587,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+      79,  -992,  -992,  -992,    84,   617,  -992,  -992,   -49,  -992,
+     -30,  -992,   -57,  -992,  -992,  -992,   118,  -992,  -992,  -992,
+     128,  -992,   612,     7,  -992,    18,  -992,    22,  -992,   366,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -979,  -992,  -992,
+    -992,  -992,  -992,   131,  -992,  -992,  -992,   -96,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,   109,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,    99,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,   405,   580,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,   443,   577,
+    -992,  -992,  -992,  -992,  -992,  -992,   103,  -992,  -992,   -94,
+    -992,  -992,  -992,  -992,  -992,  -992,  -118,  -992,  -992,  -133,
+    -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,  -992,
+     106,  -992,  -992,  -992
   };
 
   const short
@@ -5347,7 +5357,7 @@ namespace isc { namespace dhcp {
   {
        0,    14,    15,    16,    17,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    36,    37,    38,    65,   734,
-      82,    83,    39,    64,    79,    80,   755,   955,  1053,  1054,
+      82,    83,    39,    64,    79,    80,   755,   957,  1056,  1057,
      830,    41,    66,    85,   429,    86,    43,    67,   153,   154,
      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
      165,   166,   455,   167,   168,   471,   169,   170,   171,   172,
@@ -5355,571 +5365,537 @@ namespace isc { namespace dhcp {
      179,   180,   489,   181,   490,   182,   183,   184,   185,   186,
      187,   188,   433,   227,   228,    45,    68,   229,   499,   230,
      500,   758,   231,   501,   761,   232,   233,   234,   235,   189,
-     441,   190,   434,   806,   807,   808,   968,   809,   969,   191,
-     442,   192,   443,   856,   857,   858,   995,   831,   832,   833,
-     972,  1210,   834,   973,   835,   974,   836,   975,   837,   838,
+     441,   190,   434,   806,   807,   808,   970,   809,   971,   191,
+     442,   192,   443,   856,   857,   858,   997,   831,   832,   833,
+     974,  1214,   834,   975,   835,   976,   836,   977,   837,   838,
      535,   839,   840,   841,   842,   843,   844,   845,   846,   847,
-     848,   986,  1217,   849,   850,   988,   851,   989,   852,   990,
-     853,   991,   193,   479,   880,   881,   882,   883,   884,   885,
+     848,   988,  1221,   849,   850,   990,   851,   991,   852,   992,
+     853,   993,   193,   479,   880,   881,   882,   883,   884,   885,
      886,   194,   485,   916,   917,   918,   919,   920,   195,   482,
-     895,   896,   897,  1018,    59,    75,   379,   380,   381,   549,
+     895,   896,   897,  1020,    59,    75,   379,   380,   381,   549,
      382,   550,   196,   483,   904,   905,   906,   907,   908,   909,
-     910,   911,   197,   467,   860,   861,   862,   998,    47,    69,
+     910,   911,   197,   467,   860,   861,   862,  1000,    47,    69,
      273,   274,   275,   512,   276,   508,   277,   509,   278,   510,
      279,   513,   280,   516,   281,   515,   198,   199,   200,   201,
-     475,   740,   286,   202,   472,   872,   873,   874,  1007,  1127,
-    1128,   203,   468,    53,    72,   864,   865,   866,  1001,    55,
+     475,   740,   286,   202,   472,   872,   873,   874,  1009,  1130,
+    1131,   203,   468,    53,    72,   864,   865,   866,  1003,    55,
       73,   342,   343,   344,   345,   346,   347,   348,   534,   349,
      538,   350,   537,   351,   352,   539,   353,   204,   469,   868,
-     869,   870,  1004,    57,    74,   364,   365,   366,   367,   368,
-     543,   369,   370,   371,   372,   373,   288,   511,   957,   958,
-     959,  1055,    49,    70,   301,   302,   303,   520,   205,   473,
-     206,   474,   207,   481,   891,   892,   893,  1015,    51,    71,
+     869,   870,  1006,    57,    74,   364,   365,   366,   367,   368,
+     543,   369,   370,   371,   372,   373,   288,   511,   959,   960,
+     961,  1058,    49,    70,   301,   302,   303,   520,   205,   473,
+     206,   474,   207,   481,   891,   892,   893,  1017,    51,    71,
      318,   319,   320,   208,   438,   209,   439,   210,   440,   324,
-     530,   962,  1058,   325,   524,   326,   525,   327,   527,   328,
-     526,   329,   529,   330,   528,   331,   523,   295,   517,   963,
-     211,   480,   888,   889,  1012,  1153,  1154,  1155,  1156,  1157,
-    1228,  1158,  1229,  1159,   212,   213,   486,   928,   929,   930,
-    1034,   931,  1035,   214,   487,   938,   939,   940,   941,  1039,
-     942,   943,  1041,   215,   488,    61,    76,   401,   402,   403,
+     530,   964,  1061,   325,   524,   326,   525,   327,   527,   328,
+     526,   329,   529,   330,   528,   331,   523,   295,   517,   965,
+     211,   480,   888,   889,  1014,  1156,  1157,  1158,  1159,  1160,
+    1232,  1161,  1233,  1162,   212,   213,   486,   928,   929,   930,
+    1036,   931,  1037,   214,   487,   938,   939,   940,   941,  1041,
+     942,   943,  1043,   215,   488,    61,    76,   401,   402,   403,
      404,   555,   405,   406,   557,   407,   408,   409,   560,   793,
      410,   561,   411,   554,   412,   413,   414,   564,   415,   565,
      416,   566,   417,   567,   216,   432,    63,    77,   420,   421,
-     422,   570,   423,   217,   494,   946,   947,  1045,  1191,  1192,
-    1193,  1194,  1241,  1195,  1239,  1261,  1262,  1263,  1271,  1272,
-    1273,  1279,  1274,  1275,  1276,  1277,  1283,   218,   495,   951,
-     952,   953,   954
+     422,   570,   423,   217,   494,   946,   947,  1047,  1194,  1195,
+    1196,  1197,  1245,  1198,  1243,  1265,  1266,  1267,  1275,  1276,
+    1277,  1283,  1278,  1279,  1280,  1281,  1287,   218,   495,   952,
+     953,   954,   955,   956
   };
 
   const short
   Dhcp4Parser::yytable_[] =
   {
-     152,   226,   248,   297,   314,    78,   340,   360,   378,   398,
-     341,   361,   854,   291,   249,  1119,  1120,   287,   300,   315,
-     362,  1135,    28,   236,   289,   304,   316,   298,   354,   374,
-      40,   399,   791,   332,   768,   733,    42,   252,    81,   253,
-     772,    44,   254,   292,    29,   321,    30,   293,    31,   322,
-     123,   219,   220,    46,   363,   221,   418,   419,   222,   223,
-     224,   225,   237,   290,   305,   317,    48,   355,   375,    50,
-     400,   376,   377,   255,   430,   294,   250,   323,   256,   431,
-     497,   720,   721,   722,   723,   498,   251,  1214,  1215,  1216,
-     299,    52,   948,   949,   257,    54,   258,   128,   129,   259,
-     128,   129,   260,   733,   261,   506,   262,   151,   518,   263,
-     507,    84,   264,   519,   265,   424,   266,   267,   724,   268,
-     521,   551,   269,   333,   270,   522,   552,   271,   568,   272,
-     282,    56,   283,   569,   284,   285,    93,    94,    95,   912,
-     913,   914,   151,   572,   128,   129,   923,   924,   573,  1010,
-     810,    58,  1011,   425,   811,   812,   813,   814,   815,   816,
-     817,   818,   819,   820,   821,   822,   823,   824,    99,   100,
-     101,   825,   826,   827,   828,   829,   756,   757,   334,   497,
-     335,   336,   128,   129,   965,   337,   338,   339,   792,   736,
-     737,   738,   739,   128,   129,   123,   124,   334,  1013,   151,
-      87,  1014,   151,    88,    60,   334,   898,   899,   900,   901,
-     902,   903,   128,   129,  1046,    89,    62,  1047,    90,    91,
-      92,    93,    94,    95,    96,    97,    98,   426,  1138,  1139,
-    1140,   932,   933,   934,  1119,  1120,  1264,   427,  1266,  1265,
-    1135,  1267,  1268,  1269,  1270,   435,   151,   376,   377,    32,
-      33,    34,    35,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   572,   506,   428,
-     123,   124,   966,   967,   935,   436,   875,   876,   877,   878,
-    1085,   879,   125,   126,   127,   151,   970,   128,   129,   759,
-     760,   971,   130,   437,    93,    94,    95,   131,   132,   133,
-     134,   135,   444,   992,   151,   992,   124,   136,   993,  1027,
-     994,  1032,   151,   531,  1028,   445,  1033,   137,   334,  1036,
-     138,   296,   128,   129,  1037,  1042,   568,   139,   140,   446,
-    1043,  1044,   141,   128,   129,   142,   447,   245,  1050,   143,
-     992,   246,   518,  1051,  1226,  1222,   551,  1223,  1242,  1227,
-     521,  1234,   448,  1243,   124,  1245,   574,   575,   449,   144,
-     145,   146,   147,   148,   149,   804,   805,  1284,   313,   960,
-     128,   129,  1285,   150,   450,  1207,  1208,  1209,   451,   452,
-     453,   454,   456,   457,   306,   458,   459,   460,   464,   151,
-     465,   307,   308,   309,   310,   311,   312,   466,   313,   470,
-     476,   477,   334,   356,   335,   336,   357,   358,   359,   478,
-     484,  1184,   491,  1185,  1186,   492,   493,   128,   129,   496,
-     152,   502,   503,   504,   151,   505,   514,   532,   533,   226,
-     536,   540,   542,   541,   544,   151,   545,   546,   548,   547,
-     553,   248,   556,   558,   297,   559,   562,   563,   571,   576,
-     577,   236,   291,   249,   578,   314,   287,   579,   580,   300,
-     581,   582,   583,   289,   584,   340,   304,   585,   298,   341,
-     315,   360,   151,   586,   587,   361,   252,   316,   253,   588,
-     589,   254,   292,   590,   362,   591,   293,   354,   592,   593,
-     237,   398,   594,   374,   601,   595,   321,   596,   597,   598,
-     322,   599,   290,   600,   602,   305,   603,   604,   607,   605,
-     606,   608,   255,   399,   294,   250,   317,   256,   363,   151,
-     609,   613,   128,   129,   614,   251,   355,   610,   323,   615,
-     611,   299,   375,   257,   612,   258,   617,   616,   259,   618,
-     619,   260,   620,   261,   621,   262,   622,   623,   263,   625,
-     626,   264,   400,   265,   627,   266,   267,   624,   268,   628,
-     629,   269,   630,   270,   631,   632,   271,   633,   272,   282,
-    1246,   283,   634,   284,   285,   383,   384,   385,   386,   387,
-     388,   389,   390,   391,   392,   393,   394,   395,   635,   636,
-     640,   641,   643,   637,   396,   397,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,   644,
-     645,   638,   651,   639,   646,   647,   652,   653,   648,   654,
-     649,   655,   656,   658,   151,   659,   660,   657,   662,   664,
-     665,   666,   152,   667,   226,   668,   679,   669,   670,   800,
-     671,   673,   674,   676,   677,   675,   678,   681,   686,   687,
-     682,   690,   691,   683,   693,   696,   236,   697,   684,   692,
-     689,   700,    91,    92,    93,    94,    95,   694,   695,   915,
-     925,   698,   398,   701,   699,   702,   950,   703,   705,   706,
-     708,   713,   709,   714,   710,   711,   712,   715,   716,   717,
-     718,   921,   926,   936,   399,   237,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   719,   726,   727,   728,
-     113,   114,   115,   116,   117,   118,   119,   120,   121,   729,
-     238,   239,   240,   730,   124,   731,   732,    30,   735,   741,
-     922,   927,   937,   400,   742,   743,   126,   744,   241,   750,
-     128,   129,   242,   243,   244,   130,   745,   746,   747,   748,
-     131,   132,   133,   749,   751,   245,   752,   753,   754,   246,
-     136,   762,   763,   764,   765,   770,   794,   247,   766,   767,
-     799,   855,   769,   859,   771,   773,   774,   775,   863,   776,
-     777,   778,   779,   780,   781,   782,   783,   784,   785,   786,
-     788,   789,   790,   796,   867,   871,   887,   890,   894,   797,
-     798,   945,   956,   976,   977,   978,   979,   980,   981,   982,
-     983,   984,   144,   145,   985,   987,   997,  1052,   996,  1000,
-     999,  1002,  1003,  1005,  1006,  1009,  1008,  1017,   787,  1016,
-    1020,  1019,  1021,  1022,  1023,  1024,  1025,  1026,  1029,  1030,
-    1031,  1038,   151,  1040,  1048,  1049,  1057,   801,  1056,   642,
-    1061,  1060,  1059,  1062,  1064,  1065,  1066,  1067,  1078,  1069,
-    1068,  1080,  1081,  1070,  1082,  1083,  1072,  1071,  1176,  1073,
-    1074,  1075,  1076,  1077,  1079,  1165,  1166,  1167,  1168,  1169,
-    1177,  1170,  1180,  1182,  1201,  1172,  1200,  1204,   795,  1230,
-    1224,  1173,  1225,  1232,  1174,  1231,  1233,  1179,  1181,  1197,
-    1205,  1198,  1206,  1211,  1212,  1213,  1218,  1219,  1220,  1221,
-    1235,  1236,  1237,  1240,  1248,  1244,  1249,  1252,  1253,  1250,
-    1254,   248,  1256,  1257,   340,  1258,  1259,   360,   341,  1260,
-    1093,   361,   291,   249,  1118,  1141,   287,  1280,   314,  1145,
-     362,   378,  1094,   289,  1281,  1129,   354,  1142,  1282,   374,
-    1147,  1286,  1130,   315,  1121,   915,   252,  1148,   253,   925,
-     316,   254,   292,  1146,  1290,  1097,   293,  1098,  1187,  1287,
-    1099,  1132,  1188,   950,   363,  1133,  1150,   921,   297,   321,
-    1151,   926,   290,   322,  1288,   355,  1289,   936,   375,  1292,
-    1189,  1131,   255,   300,   294,   250,  1149,   256,   650,   317,
-     304,  1100,   298,  1134,  1095,   251,  1101,  1293,  1152,  1143,
-     803,   323,  1063,   257,  1096,   258,   922,  1122,   259,  1144,
-     927,   260,  1102,   261,  1103,   262,   937,  1104,   263,  1190,
-    1105,   264,  1106,   265,  1107,   266,   267,  1108,   268,   305,
-    1109,   269,  1110,   270,  1111,  1112,   271,  1113,   272,   282,
-    1114,   283,  1115,   284,   285,  1116,   964,  1117,  1123,  1086,
-    1124,  1084,  1125,  1126,  1175,   299,  1164,  1137,  1088,  1087,
-     688,  1171,   661,  1247,  1089,  1136,  1163,  1202,  1092,  1090,
-    1162,   680,   685,  1091,  1251,  1203,   707,  1255,   961,   672,
-     704,   944,  1161,  1160,  1278,  1178,  1291,   802,     0,     0,
-       0,     0,  1183,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,  1238,   663,     0,  1196,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,  1199,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,  1093,
-       0,     0,     0,  1118,     0,  1141,     0,     0,     0,  1145,
-       0,  1094,     0,     0,  1129,  1187,     0,  1142,     0,  1188,
-    1147,  1130,     0,  1121,     0,     0,     0,  1148,     0,     0,
-       0,     0,     0,  1146,  1097,     0,  1098,  1189,     0,  1099,
-    1132,     0,     0,     0,  1133,     0,  1150,     0,     0,     0,
-    1151,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    1131,     0,     0,     0,     0,     0,  1149,     0,     0,     0,
-    1100,     0,  1134,  1095,     0,  1101,  1190,     0,  1152,  1143,
-       0,     0,     0,  1096,     0,     0,  1122,     0,     0,  1144,
-       0,  1102,     0,  1103,     0,     0,  1104,     0,     0,  1105,
-       0,  1106,     0,  1107,     0,     0,  1108,     0,     0,  1109,
-       0,  1110,     0,  1111,  1112,     0,  1113,     0,     0,  1114,
-       0,  1115,     0,     0,  1116,     0,  1117,  1123,     0,  1124,
-       0,  1125,  1126,    91,    92,    93,    94,    95,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    99,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,     0,     0,     0,
-       0,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,     0,     0,     0,     0,   124,   334,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   126,     0,     0,
-       0,   128,   129,     0,   243,     0,   130,     0,     0,     0,
-       0,   131,   132,   133,     0,     0,   245,     0,     0,     0,
-     246,     0,     0,     0,     0,     0,     0,     0,   247,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   144,   145,     0,     0,     0,     0,     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
+     152,   226,   248,   297,   314,   298,   340,   360,   378,   398,
+     332,    78,   291,   362,   854,   252,   363,   768,  1122,   236,
+     289,   304,   316,   772,   354,   374,  1123,   399,   341,   361,
+    1138,   376,   377,   733,    81,   253,    28,   430,   237,   290,
+     305,   317,   431,   355,   375,    84,   400,    29,   123,    30,
+      40,    31,   720,   721,   722,   723,   791,   254,   426,   255,
+    1012,   249,   424,  1013,   425,   287,   300,   315,   948,   949,
+     950,    42,   256,   576,   497,   428,   292,   506,   321,   498,
+     250,   518,   507,   521,   151,   427,   519,   293,   522,   322,
+     724,   294,   551,   323,   568,   299,   435,   552,   251,   569,
+     572,   733,   257,   151,   436,   573,   258,   497,  1015,   259,
+     260,  1016,   967,   261,   418,   419,   262,   263,   128,   129,
+     264,   265,  1048,  1268,   266,  1049,  1269,   267,   268,   128,
+     129,   269,   270,    87,   271,   272,    88,    44,   282,   283,
+      46,   572,   284,    48,   506,   285,   968,   531,    89,   969,
+      50,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+     912,   913,   914,    52,   219,   220,   376,   377,   221,    54,
+     972,   222,   223,   224,   225,   973,   128,   129,   932,   933,
+     934,   736,   737,   738,   739,    56,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     333,    58,   792,   123,   124,   875,   876,   877,   878,   994,
+     879,   151,   923,   924,   995,   125,   126,   127,   994,  1029,
+     128,   129,   935,   996,  1030,   130,  1211,  1212,  1213,  1122,
+     131,   132,   133,   134,   135,   804,   805,  1123,   756,   757,
+     136,  1138,    60,    32,    33,    34,    35,   128,   129,  1034,
+     137,  1038,    62,   138,  1035,   334,  1039,   335,   336,   437,
+     139,   140,   337,   338,   339,   141,   313,   962,   142,   151,
+     128,   129,   143,   124,  1218,  1219,  1220,    91,    92,    93,
+      94,    95,  1044,   532,  1088,   444,   568,  1045,   296,   128,
+     129,  1046,   144,   145,   146,   147,   148,   149,   898,   899,
+     900,   901,   902,   903,   245,  1053,   150,   445,   246,   446,
+    1054,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   759,   760,   151,   447,   113,   114,   115,   116,   117,
+     118,   119,   120,   121,   448,   238,   239,   240,  1270,   124,
+     449,  1271,  1272,  1273,  1274,    93,    94,    95,   450,   994,
+     151,   126,   451,   241,  1226,   128,   129,   242,   243,   244,
+     130,   452,   574,   575,   518,   131,   132,   133,   453,  1227,
+     245,  1230,   542,   151,   246,   136,  1231,    99,   100,   101,
+     533,   454,   247,   334,   356,   335,   336,   357,   358,   359,
+     551,  1246,   151,   456,   457,  1238,  1247,   521,   128,   129,
+     458,   459,  1249,   460,   123,   124,   334,     1,     2,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+     152,   128,   129,   464,   465,  1288,   541,   144,   145,   226,
+    1289,   466,   470,   476,   477,   478,   484,  1141,  1142,  1143,
+     491,   248,   492,   493,   297,   496,   298,   236,   502,   503,
+     504,   291,   505,   514,   252,   314,   536,   540,   151,   289,
+     544,   545,   304,   546,   548,   340,   237,   553,   547,   334,
+     556,   360,   558,   316,   253,   559,   562,   362,   290,   563,
+     363,   305,   571,   354,   128,   129,   577,   341,   578,   374,
+     579,   398,   317,   361,   580,   584,   254,   585,   255,   581,
+     249,   151,   355,   582,   287,   583,   586,   300,   375,   399,
+     587,   256,    93,    94,    95,   292,   588,   589,   315,   250,
+     590,   591,   592,   593,   151,   596,   293,   594,   400,   321,
+     294,   595,   597,   601,   598,   599,   299,   251,   600,   602,
+     322,   257,   604,   603,   323,   258,   605,   606,   259,   260,
+     607,   608,   261,   609,   610,   262,   263,  1250,   613,   264,
+     265,   611,  1187,   266,  1188,  1189,   267,   268,   612,   614,
+     269,   270,   124,   271,   272,   615,   617,   282,   283,   616,
+     618,   284,   619,   620,   285,   621,   625,   151,   128,   129,
+     626,   627,   622,   623,   624,   628,   629,   630,   631,   632,
+     633,   634,   306,   635,   636,   637,   638,   639,   640,   307,
+     308,   309,   310,   311,   312,   641,   313,   643,   644,   645,
+     646,   647,   648,   649,   651,   652,   653,   654,   655,   656,
+     658,   659,   152,   657,   226,   660,   675,   662,   664,   665,
+     666,   667,   787,   668,   669,   800,   670,   671,   673,   674,
+     676,   677,   236,   678,   679,   681,   682,   683,   686,   687,
+     690,   684,    91,    92,    93,    94,    95,   691,   689,   915,
+     925,   237,   398,   693,   692,   696,   951,   694,   697,   695,
+     700,   701,   702,   698,   699,   703,   705,   921,   926,   936,
+     399,   151,   708,   706,   709,   718,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   922,   927,   937,   400,
+     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     710,   711,   712,   716,   124,   334,   713,   714,   715,   717,
+     719,   726,   727,   731,   728,   729,   126,   730,   732,   735,
+     128,   129,    30,   243,   741,   130,   128,   129,   742,   743,
+     131,   132,   133,   744,   745,   245,   746,   747,   748,   246,
+     749,   750,   751,   752,   753,   754,   810,   247,   762,   763,
+     811,   812,   813,   814,   815,   816,   817,   818,   819,   820,
+     821,   822,   823,   824,   764,   765,   766,   825,   826,   827,
+     828,   829,   770,   799,   767,   769,   771,   855,   859,   383,
+     384,   385,   386,   387,   388,   389,   390,   391,   392,   393,
+     394,   395,   144,   145,   773,   863,   774,   775,   396,   397,
+     776,   334,   867,   777,   871,   887,   890,   778,   779,   780,
+     781,   894,   794,   945,   958,   978,   979,   980,   981,   782,
+     783,   784,   982,   151,   983,   984,   985,   986,   987,   151,
+     989,   998,   785,   999,  1001,  1002,  1005,  1004,  1008,   786,
+    1007,   788,  1010,   789,   790,  1011,  1018,  1019,  1022,   796,
+     797,   798,  1021,  1023,  1024,  1025,  1026,  1027,  1028,  1031,
+    1032,  1033,  1040,  1042,  1050,  1051,  1052,  1060,   801,  1059,
+    1055,  1064,  1063,  1062,  1065,  1067,  1068,  1069,  1070,  1072,
+    1074,  1071,  1081,  1073,  1075,  1076,  1077,  1078,  1079,  1080,
+    1082,  1083,  1084,  1085,  1086,  1168,  1169,  1170,  1171,  1172,
+    1173,  1176,  1179,   248,  1175,  1180,   340,  1183,  1185,   360,
+    1177,  1182,  1096,   291,  1124,   362,   252,  1144,   363,   151,
+     314,   289,  1149,   378,   354,  1100,  1184,   374,   341,  1204,
+    1133,   361,  1200,  1205,  1121,  1151,   253,   915,   316,  1148,
+     290,   925,  1208,   355,  1228,  1101,   375,  1209,  1201,  1134,
+    1190,  1229,  1210,  1202,  1152,   921,   951,   317,   254,   926,
+     255,   297,   249,   298,  1215,   936,   287,  1102,  1192,  1103,
+    1216,  1097,  1191,   256,   922,  1132,  1145,   292,   927,   304,
+    1150,   250,  1104,   315,   937,  1217,  1135,  1193,   293,  1222,
+    1098,  1153,   294,  1223,   321,  1146,  1224,  1136,   305,   251,
+    1225,  1137,  1154,   257,  1125,   322,  1155,   258,  1099,   323,
+     259,   260,  1105,  1147,   261,  1234,  1106,   262,   263,  1107,
+    1108,   264,   265,  1109,   300,   266,  1110,  1111,   267,   268,
+    1112,  1113,   269,   270,  1114,   271,   272,  1115,  1116,   282,
+     283,  1117,  1118,   284,  1119,  1120,   285,  1235,  1126,  1127,
+    1236,  1237,  1128,   299,  1239,  1129,  1244,  1252,  1240,  1241,
+    1253,  1256,  1258,   795,  1262,  1284,  1285,  1264,  1286,  1290,
+    1294,  1066,   803,   966,   650,   642,  1089,  1087,  1140,  1248,
+    1167,  1174,  1091,  1254,  1166,  1178,   688,  1257,  1260,  1139,
+    1261,  1263,  1093,  1090,  1292,  1291,  1293,  1296,  1251,   661,
+    1092,  1094,  1242,  1297,  1095,   685,   963,  1165,   663,  1207,
+    1255,   680,  1206,  1186,   672,  1164,  1163,  1181,   704,   707,
+    1282,  1199,  1259,   802,   944,  1295,     0,     0,     0,  1203,
+       0,     0,     0,  1096,     0,  1124,     0,     0,     0,  1144,
+       0,     0,     0,     0,  1149,     0,  1100,     0,     0,  1190,
+       0,  1133,     0,     0,     0,  1121,     0,  1151,     0,     0,
+       0,  1148,     0,     0,     0,     0,  1101,  1192,     0,     0,
+    1134,  1191,     0,     0,     0,     0,  1152,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,  1193,     0,  1102,     0,
+    1103,     0,  1097,     0,     0,     0,  1132,     0,  1145,     0,
+       0,     0,  1150,  1104,     0,     0,     0,  1135,     0,     0,
+       0,  1098,     0,  1153,     0,     0,     0,  1146,  1136,     0,
+       0,     0,  1137,     0,  1154,  1125,     0,     0,  1155,  1099,
+       0,     0,     0,  1105,     0,  1147,     0,  1106,     0,     0,
+    1107,  1108,     0,     0,  1109,     0,     0,  1110,  1111,     0,
+       0,  1112,  1113,     0,     0,  1114,     0,     0,  1115,  1116,
+       0,     0,  1117,  1118,     0,  1119,  1120,     0,     0,  1126,
+    1127,     0,     0,  1128,     0,     0,  1129
   };
 
   const short
   Dhcp4Parser::yycheck_[] =
   {
-      67,    68,    69,    70,    71,    64,    73,    74,    75,    76,
-      73,    74,   717,    69,    69,  1007,  1007,    69,    70,    71,
-      74,  1007,     0,    68,    69,    70,    71,    70,    73,    74,
-       7,    76,    18,    72,   658,   619,     7,    69,   210,    69,
-     664,     7,    69,    69,     5,    71,     7,    69,     9,    71,
-      91,    15,    16,     7,    74,    19,    12,    13,    22,    23,
-      24,    25,    68,    69,    70,    71,     7,    73,    74,     7,
-      76,   139,   140,    69,     3,    69,    69,    71,    69,     8,
-       3,   176,   177,   178,   179,     8,    69,    56,    57,    58,
-      70,     7,   195,   196,    69,     7,    69,   108,   109,    69,
-     108,   109,    69,   687,    69,     3,    69,   210,     3,    69,
-       8,    10,    69,     8,    69,     6,    69,    69,   213,    69,
-       3,     3,    69,    38,    69,     8,     8,    69,     3,    69,
-      69,     7,    69,     8,    69,    69,    32,    33,    34,   150,
-     151,   152,   210,     3,   108,   109,   154,   155,     8,     3,
-      38,     7,     6,     3,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    64,    65,
-      66,    59,    60,    61,    62,    63,    17,    18,    93,     3,
-      95,    96,   108,   109,     8,   100,   101,   102,   174,   114,
-     115,   116,   117,   108,   109,    91,    92,    93,     3,   210,
-      11,     6,   210,    14,     7,    93,   142,   143,   144,   145,
-     146,   147,   108,   109,     3,    26,     7,     6,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,     4,   124,   125,
-     126,   157,   158,   159,  1226,  1226,     3,     8,   187,     6,
-    1226,   190,   191,   192,   193,     4,   210,   139,   140,   210,
-     211,   212,   213,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    82,    83,    84,    85,    86,    87,     3,     3,     3,
-      91,    92,     8,     8,   210,     4,   129,   130,   131,   132,
-     995,   134,   103,   104,   105,   210,     3,   108,   109,    20,
-      21,     8,   113,     4,    32,    33,    34,   118,   119,   120,
-     121,   122,     4,     3,   210,     3,    92,   128,     8,     3,
-       8,     3,   210,     8,     8,     4,     8,   138,    93,     3,
-     141,   107,   108,   109,     8,     3,     3,   148,   149,     4,
-       8,     8,   153,   108,   109,   156,     4,   123,     3,   160,
-       3,   127,     3,     8,     3,     8,     3,     8,     3,     8,
-       3,     8,     4,     8,    92,     8,   425,   426,     4,   180,
-     181,   182,   183,   184,   185,    27,    28,     3,   136,   137,
-     108,   109,     8,   194,     4,    39,    40,    41,     4,     4,
-       4,     4,     4,     4,   122,     4,     4,     4,     4,   210,
-       4,   129,   130,   131,   132,   133,   134,     4,   136,     4,
-       4,     4,    93,    94,    95,    96,    97,    98,    99,     4,
-       4,   186,     4,   188,   189,     4,     4,   108,   109,     4,
-     497,     4,     4,     4,   210,     4,     4,     3,     8,   506,
-       4,     4,     3,     8,     4,   210,     4,     4,     3,     8,
-       4,   518,     4,     4,   521,     4,     4,     4,     4,   210,
-       4,   506,   518,   518,     4,   532,   518,     4,     4,   521,
-     213,   213,   213,   518,     4,   542,   521,     4,   521,   542,
-     532,   548,   210,     4,     4,   548,   518,   532,   518,     4,
-       4,   518,   518,   211,   548,   211,   518,   542,   211,   211,
-     506,   568,   211,   548,     4,   213,   532,   212,   212,   212,
-     532,   211,   518,   211,   211,   521,   211,   213,     4,   213,
-     213,     4,   518,   568,   518,   518,   532,   518,   548,   210,
-       4,     4,   108,   109,     4,   518,   542,   213,   532,     4,
-     213,   521,   548,   518,   213,   518,     4,   211,   518,     4,
-       4,   518,     4,   518,     4,   518,   213,   213,   518,     4,
-       4,   518,   568,   518,     4,   518,   518,   213,   518,     4,
-       4,   518,   211,   518,     4,     4,   518,     4,   518,   518,
-    1204,   518,     4,   518,   518,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,     4,     4,
-       4,     4,     4,   213,   180,   181,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,     4,
-       4,   213,     4,   213,   213,   213,     4,     4,   211,     4,
-     211,     4,     4,     4,   210,     4,     4,   211,     4,     4,
-       4,     4,   709,     4,   711,     4,   213,     4,     4,   708,
-       4,     4,     4,     4,     4,   211,     4,     4,     4,     4,
-     213,     4,     4,   213,     4,     4,   711,     4,   213,   211,
-     213,     4,    30,    31,    32,    33,    34,   211,   211,   746,
-     747,   213,   749,     4,   213,     4,   753,     4,     4,   211,
-       4,   210,     7,   210,     7,     7,     7,   210,     7,     7,
-       5,   746,   747,   748,   749,   711,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,   210,   210,   210,     5,
-      78,    79,    80,    81,    82,    83,    84,    85,    86,     5,
-      88,    89,    90,     5,    92,   210,     5,     7,   210,     5,
-     746,   747,   748,   749,     5,     5,   104,     5,   106,   210,
-     108,   109,   110,   111,   112,   113,     7,     7,     7,     7,
-     118,   119,   120,     7,   210,   123,     5,     7,     5,   127,
-     128,   210,   210,   210,     5,     7,   175,   135,   210,   210,
-       5,     7,   210,     7,   210,   210,   210,   210,     7,   210,
-     210,   210,   210,   210,   210,   210,   210,   210,   210,   210,
-     210,   210,   210,   210,     7,     7,     7,     7,     7,   210,
-     210,     7,     7,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,   180,   181,     4,     4,     3,   210,     6,     3,
-       6,     6,     3,     6,     3,     3,     6,     3,   687,     6,
-       3,     6,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,   210,     4,     4,     4,     3,   709,     6,   497,
-       4,     6,     8,     4,     4,     4,     4,     4,     4,   213,
-     211,     4,     4,   211,     4,     4,   211,   213,     4,   211,
-     211,   211,   211,   211,   211,   211,   211,   211,   211,   211,
-       4,   211,     4,     4,     3,   213,     6,     4,   700,     4,
-       8,   211,     8,     3,   211,     8,     8,   213,   211,   213,
-     210,   213,   210,   210,   210,   210,   210,   210,   210,   210,
-     210,   210,   210,     4,     4,   210,     4,     4,   211,   213,
-       4,   998,   210,   210,  1001,     5,   210,  1004,  1001,     7,
-    1007,  1004,   998,   998,  1007,  1012,   998,     4,  1015,  1012,
-    1004,  1018,  1007,   998,     4,  1007,  1001,  1012,     4,  1004,
-    1012,     4,  1007,  1015,  1007,  1032,   998,  1012,   998,  1036,
-    1015,   998,   998,  1012,     4,  1007,   998,  1007,  1045,   213,
-    1007,  1007,  1045,  1050,  1004,  1007,  1012,  1032,  1055,  1015,
-    1012,  1036,   998,  1015,   211,  1001,   211,  1042,  1004,   210,
-    1045,  1007,   998,  1055,   998,   998,  1012,   998,   506,  1015,
-    1055,  1007,  1055,  1007,  1007,   998,  1007,   210,  1012,  1012,
-     711,  1015,   970,   998,  1007,   998,  1032,  1007,   998,  1012,
-    1036,   998,  1007,   998,  1007,   998,  1042,  1007,   998,  1045,
-    1007,   998,  1007,   998,  1007,   998,   998,  1007,   998,  1055,
-    1007,   998,  1007,   998,  1007,  1007,   998,  1007,   998,   998,
-    1007,   998,  1007,   998,   998,  1007,   799,  1007,  1007,   997,
-    1007,   992,  1007,  1007,  1032,  1055,  1020,  1010,  1000,   998,
-     551,  1027,   518,  1226,  1001,  1009,  1018,  1055,  1006,  1003,
-    1017,   542,   548,  1004,  1232,  1057,   572,  1242,   770,   532,
-     568,   749,  1015,  1013,  1264,  1036,  1284,   710,    -1,    -1,
-      -1,    -1,  1042,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1182,   521,    -1,  1046,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1050,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1226,
-      -1,    -1,    -1,  1226,    -1,  1232,    -1,    -1,    -1,  1232,
-      -1,  1226,    -1,    -1,  1226,  1242,    -1,  1232,    -1,  1242,
-    1232,  1226,    -1,  1226,    -1,    -1,    -1,  1232,    -1,    -1,
-      -1,    -1,    -1,  1232,  1226,    -1,  1226,  1242,    -1,  1226,
-    1226,    -1,    -1,    -1,  1226,    -1,  1232,    -1,    -1,    -1,
-    1232,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1226,    -1,    -1,    -1,    -1,    -1,  1232,    -1,    -1,    -1,
-    1226,    -1,  1226,  1226,    -1,  1226,  1242,    -1,  1232,  1232,
-      -1,    -1,    -1,  1226,    -1,    -1,  1226,    -1,    -1,  1232,
-      -1,  1226,    -1,  1226,    -1,    -1,  1226,    -1,    -1,  1226,
-      -1,  1226,    -1,  1226,    -1,    -1,  1226,    -1,    -1,  1226,
-      -1,  1226,    -1,  1226,  1226,    -1,  1226,    -1,    -1,  1226,
-      -1,  1226,    -1,    -1,  1226,    -1,  1226,  1226,    -1,  1226,
-      -1,  1226,  1226,    30,    31,    32,    33,    34,    -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,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    -1,    -1,    -1,
-      -1,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-      87,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,
-      -1,   108,   109,    -1,   111,    -1,   113,    -1,    -1,    -1,
-      -1,   118,   119,   120,    -1,    -1,   123,    -1,    -1,    -1,
-     127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   135,    -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,   180,   181,    -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,   210
+      67,    68,    69,    70,    71,    70,    73,    74,    75,    76,
+      72,    64,    69,    74,   717,    69,    74,   658,  1009,    68,
+      69,    70,    71,   664,    73,    74,  1009,    76,    73,    74,
+    1009,   139,   140,   619,   211,    69,     0,     3,    68,    69,
+      70,    71,     8,    73,    74,    10,    76,     5,    91,     7,
+       7,     9,   176,   177,   178,   179,    18,    69,     4,    69,
+       3,    69,     6,     6,     3,    69,    70,    71,   195,   196,
+     197,     7,    69,   211,     3,     3,    69,     3,    71,     8,
+      69,     3,     8,     3,   211,     8,     8,    69,     8,    71,
+     214,    69,     3,    71,     3,    70,     4,     8,    69,     8,
+       3,   687,    69,   211,     4,     8,    69,     3,     3,    69,
+      69,     6,     8,    69,    12,    13,    69,    69,   108,   109,
+      69,    69,     3,     3,    69,     6,     6,    69,    69,   108,
+     109,    69,    69,    11,    69,    69,    14,     7,    69,    69,
+       7,     3,    69,     7,     3,    69,     8,     8,    26,     8,
+       7,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+     150,   151,   152,     7,    15,    16,   139,   140,    19,     7,
+       3,    22,    23,    24,    25,     8,   108,   109,   157,   158,
+     159,   114,   115,   116,   117,     7,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
+      38,     7,   174,    91,    92,   129,   130,   131,   132,     3,
+     134,   211,   154,   155,     8,   103,   104,   105,     3,     3,
+     108,   109,   211,     8,     8,   113,    39,    40,    41,  1230,
+     118,   119,   120,   121,   122,    27,    28,  1230,    17,    18,
+     128,  1230,     7,   211,   212,   213,   214,   108,   109,     3,
+     138,     3,     7,   141,     8,    93,     8,    95,    96,     4,
+     148,   149,   100,   101,   102,   153,   136,   137,   156,   211,
+     108,   109,   160,    92,    56,    57,    58,    30,    31,    32,
+      33,    34,     3,     3,   997,     4,     3,     8,   107,   108,
+     109,     8,   180,   181,   182,   183,   184,   185,   142,   143,
+     144,   145,   146,   147,   123,     3,   194,     4,   127,     4,
+       8,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    20,    21,   211,     4,    78,    79,    80,    81,    82,
+      83,    84,    85,    86,     4,    88,    89,    90,   187,    92,
+       4,   190,   191,   192,   193,    32,    33,    34,     4,     3,
+     211,   104,     4,   106,     8,   108,   109,   110,   111,   112,
+     113,     4,   425,   426,     3,   118,   119,   120,     4,     8,
+     123,     3,     3,   211,   127,   128,     8,    64,    65,    66,
+       8,     4,   135,    93,    94,    95,    96,    97,    98,    99,
+       3,     3,   211,     4,     4,     8,     8,     3,   108,   109,
+       4,     4,     8,     4,    91,    92,    93,   198,   199,   200,
+     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
+     497,   108,   109,     4,     4,     3,     8,   180,   181,   506,
+       8,     4,     4,     4,     4,     4,     4,   124,   125,   126,
+       4,   518,     4,     4,   521,     4,   521,   506,     4,     4,
+       4,   518,     4,     4,   518,   532,     4,     4,   211,   518,
+       4,     4,   521,     4,     3,   542,   506,     4,     8,    93,
+       4,   548,     4,   532,   518,     4,     4,   548,   518,     4,
+     548,   521,     4,   542,   108,   109,     4,   542,     4,   548,
+       4,   568,   532,   548,     4,     4,   518,     4,   518,   214,
+     518,   211,   542,   214,   518,   214,     4,   521,   548,   568,
+       4,   518,    32,    33,    34,   518,     4,     4,   532,   518,
+     212,   212,   212,   212,   211,   213,   518,   212,   568,   532,
+     518,   214,   213,     4,   213,   212,   521,   518,   212,   212,
+     532,   518,   214,   212,   532,   518,   214,   214,   518,   518,
+       4,     4,   518,     4,   214,   518,   518,  1208,     4,   518,
+     518,   214,   186,   518,   188,   189,   518,   518,   214,     4,
+     518,   518,    92,   518,   518,     4,     4,   518,   518,   212,
+       4,   518,     4,     4,   518,     4,     4,   211,   108,   109,
+       4,     4,   214,   214,   214,     4,     4,   212,     4,     4,
+       4,     4,   122,     4,     4,   214,   214,   214,     4,   129,
+     130,   131,   132,   133,   134,     4,   136,     4,     4,     4,
+     214,   214,   212,   212,     4,     4,     4,     4,     4,     4,
+       4,     4,   709,   212,   711,     4,   212,     4,     4,     4,
+       4,     4,   687,     4,     4,   708,     4,     4,     4,     4,
+       4,     4,   711,     4,   214,     4,   214,   214,     4,     4,
+       4,   214,    30,    31,    32,    33,    34,     4,   214,   746,
+     747,   711,   749,     4,   212,     4,   753,   212,     4,   212,
+       4,     4,     4,   214,   214,     4,     4,   746,   747,   748,
+     749,   211,     4,   212,     7,     5,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,   746,   747,   748,   749,
+      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
+       7,     7,     7,     7,    92,    93,   211,   211,   211,     7,
+     211,   211,   211,   211,     5,     5,   104,     5,     5,   211,
+     108,   109,     7,   111,     5,   113,   108,   109,     5,     5,
+     118,   119,   120,     5,     7,   123,     7,     7,     7,   127,
+       7,   211,   211,     5,     7,     5,    38,   135,   211,   211,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,   211,     5,   211,    59,    60,    61,
+      62,    63,     7,     5,   211,   211,   211,     7,     7,   161,
+     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+     172,   173,   180,   181,   211,     7,   211,   211,   180,   181,
+     211,    93,     7,   211,     7,     7,     7,   211,   211,   211,
+     211,     7,   175,     7,     7,     4,     4,     4,     4,   211,
+     211,   211,     4,   211,     4,     4,     4,     4,     4,   211,
+       4,     6,   211,     3,     6,     3,     3,     6,     3,   211,
+       6,   211,     6,   211,   211,     3,     6,     3,     3,   211,
+     211,   211,     6,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     3,   709,     6,
+     211,     4,     6,     8,     4,     4,     4,     4,     4,   214,
+     214,   212,     4,   212,   212,   212,   212,   212,   212,   212,
+     212,     4,     4,     4,     4,   212,   212,   212,   212,   212,
+     212,   212,     4,  1000,   214,     4,  1003,     4,     4,  1006,
+     212,   214,  1009,  1000,  1009,  1006,  1000,  1014,  1006,   211,
+    1017,  1000,  1014,  1020,  1003,  1009,   212,  1006,  1003,     6,
+    1009,  1006,   214,     3,  1009,  1014,  1000,  1034,  1017,  1014,
+    1000,  1038,     4,  1003,     8,  1009,  1006,   211,   214,  1009,
+    1047,     8,   211,   214,  1014,  1034,  1053,  1017,  1000,  1038,
+    1000,  1058,  1000,  1058,   211,  1044,  1000,  1009,  1047,  1009,
+     211,  1009,  1047,  1000,  1034,  1009,  1014,  1000,  1038,  1058,
+    1014,  1000,  1009,  1017,  1044,   211,  1009,  1047,  1000,   211,
+    1009,  1014,  1000,   211,  1017,  1014,   211,  1009,  1058,  1000,
+     211,  1009,  1014,  1000,  1009,  1017,  1014,  1000,  1009,  1017,
+    1000,  1000,  1009,  1014,  1000,     4,  1009,  1000,  1000,  1009,
+    1009,  1000,  1000,  1009,  1058,  1000,  1009,  1009,  1000,  1000,
+    1009,  1009,  1000,  1000,  1009,  1000,  1000,  1009,  1009,  1000,
+    1000,  1009,  1009,  1000,  1009,  1009,  1000,     8,  1009,  1009,
+       3,     8,  1009,  1058,   211,  1009,     4,     4,   211,   211,
+       4,     4,     4,   700,     5,     4,     4,     7,     4,     4,
+       4,   972,   711,   799,   506,   497,   999,   994,  1012,   211,
+    1022,  1029,  1002,   214,  1020,  1034,   551,   212,   211,  1011,
+     211,   211,  1005,  1000,   212,   214,   212,   211,  1230,   518,
+    1003,  1006,  1185,   211,  1008,   548,   770,  1019,   521,  1060,
+    1236,   542,  1058,  1044,   532,  1017,  1015,  1038,   568,   572,
+    1268,  1048,  1246,   710,   749,  1288,    -1,    -1,    -1,  1053,
+      -1,    -1,    -1,  1230,    -1,  1230,    -1,    -1,    -1,  1236,
+      -1,    -1,    -1,    -1,  1236,    -1,  1230,    -1,    -1,  1246,
+      -1,  1230,    -1,    -1,    -1,  1230,    -1,  1236,    -1,    -1,
+      -1,  1236,    -1,    -1,    -1,    -1,  1230,  1246,    -1,    -1,
+    1230,  1246,    -1,    -1,    -1,    -1,  1236,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1246,    -1,  1230,    -1,
+    1230,    -1,  1230,    -1,    -1,    -1,  1230,    -1,  1236,    -1,
+      -1,    -1,  1236,  1230,    -1,    -1,    -1,  1230,    -1,    -1,
+      -1,  1230,    -1,  1236,    -1,    -1,    -1,  1236,  1230,    -1,
+      -1,    -1,  1230,    -1,  1236,  1230,    -1,    -1,  1236,  1230,
+      -1,    -1,    -1,  1230,    -1,  1236,    -1,  1230,    -1,    -1,
+    1230,  1230,    -1,    -1,  1230,    -1,    -1,  1230,  1230,    -1,
+      -1,  1230,  1230,    -1,    -1,  1230,    -1,    -1,  1230,  1230,
+      -1,    -1,  1230,  1230,    -1,  1230,  1230,    -1,    -1,  1230,
+    1230,    -1,    -1,  1230,    -1,    -1,  1230
   };
 
   const short
   Dhcp4Parser::yystos_[] =
   {
-       0,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,     0,     5,
-       7,     9,   210,   211,   212,   213,   229,   230,   231,   236,
-       7,   245,     7,   250,     7,   299,     7,   412,     7,   496,
-       7,   512,     7,   447,     7,   453,     7,   477,     7,   388,
-       7,   579,     7,   610,   237,   232,   246,   251,   300,   413,
-     497,   513,   448,   454,   478,   389,   580,   611,   229,   238,
-     239,   210,   234,   235,    10,   247,   249,    11,    14,    26,
+       0,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   216,   217,   218,   219,   220,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,     0,     5,
+       7,     9,   211,   212,   213,   214,   230,   231,   232,   237,
+       7,   246,     7,   251,     7,   300,     7,   413,     7,   497,
+       7,   513,     7,   448,     7,   454,     7,   478,     7,   389,
+       7,   580,     7,   611,   238,   233,   247,   252,   301,   414,
+     498,   514,   449,   455,   479,   390,   581,   612,   230,   239,
+     240,   211,   235,   236,    10,   248,   250,    11,    14,    26,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
       85,    86,    87,    91,    92,   103,   104,   105,   108,   109,
      113,   118,   119,   120,   121,   122,   128,   138,   141,   148,
      149,   153,   156,   160,   180,   181,   182,   183,   184,   185,
-     194,   210,   244,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   267,   268,   270,
-     271,   272,   273,   274,   275,   276,   279,   281,   283,   284,
-     285,   287,   289,   290,   291,   292,   293,   294,   295,   313,
-     315,   323,   325,   366,   375,   382,   396,   406,   430,   431,
-     432,   433,   437,   445,   471,   502,   504,   506,   517,   519,
-     521,   544,   558,   559,   567,   577,   608,   617,   641,    15,
-      16,    19,    22,    23,    24,    25,   244,   297,   298,   301,
-     303,   306,   309,   310,   311,   312,   502,   504,    88,    89,
-      90,   106,   110,   111,   112,   123,   127,   135,   244,   254,
-     255,   256,   257,   258,   259,   260,   261,   262,   263,   268,
-     271,   272,   273,   274,   275,   276,   279,   281,   283,   284,
-     285,   287,   289,   414,   415,   416,   418,   420,   422,   424,
-     426,   428,   430,   431,   432,   433,   436,   471,   490,   502,
-     504,   506,   517,   519,   521,   541,   107,   244,   426,   428,
-     471,   498,   499,   500,   502,   504,   122,   129,   130,   131,
-     132,   133,   134,   136,   244,   471,   502,   504,   514,   515,
-     516,   517,   519,   521,   523,   527,   529,   531,   533,   535,
-     537,   539,   445,    38,    93,    95,    96,   100,   101,   102,
-     244,   343,   455,   456,   457,   458,   459,   460,   461,   463,
-     465,   467,   468,   470,   502,   504,    94,    97,    98,    99,
-     244,   343,   459,   465,   479,   480,   481,   482,   483,   485,
-     486,   487,   488,   489,   502,   504,   139,   140,   244,   390,
-     391,   392,   394,   161,   162,   163,   164,   165,   166,   167,
-     168,   169,   170,   171,   172,   173,   180,   181,   244,   502,
-     504,   581,   582,   583,   584,   586,   587,   589,   590,   591,
-     594,   596,   598,   599,   600,   602,   604,   606,    12,    13,
-     612,   613,   614,   616,     6,     3,     4,     8,     3,   248,
-       3,     8,   609,   296,   316,     4,     4,     4,   518,   520,
-     522,   314,   324,   326,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,   266,     4,     4,     4,     4,
-       4,   277,   280,   282,     4,     4,     4,   407,   446,   472,
-       4,   269,   438,   503,   505,   434,     4,     4,     4,   367,
-     545,   507,   383,   397,     4,   376,   560,   568,   578,   286,
-     288,     4,     4,     4,   618,   642,     4,     3,     8,   302,
-     304,   307,     4,     4,     4,     4,     3,     8,   419,   421,
-     423,   491,   417,   425,     4,   429,   427,   542,     3,     8,
-     501,     3,     8,   540,   528,   530,   534,   532,   538,   536,
-     524,     8,     3,     8,   462,   344,     4,   466,   464,   469,
-       4,     8,     3,   484,     4,     4,     4,     8,     3,   393,
-     395,     3,     8,     4,   597,   585,     4,   588,     4,     4,
-     592,   595,     4,     4,   601,   603,   605,   607,     3,     8,
-     615,     4,     3,     8,   229,   229,   210,     4,     4,     4,
-       4,   213,   213,   213,     4,     4,     4,     4,     4,     4,
-     211,   211,   211,   211,   211,   213,   212,   212,   212,   211,
-     211,     4,   211,   211,   213,   213,   213,     4,     4,     4,
-     213,   213,   213,     4,     4,     4,   211,     4,     4,     4,
-       4,     4,   213,   213,   213,     4,     4,     4,     4,     4,
-     211,     4,     4,     4,     4,     4,     4,   213,   213,   213,
-       4,     4,   253,     4,     4,     4,   213,   213,   211,   211,
-     298,     4,     4,     4,     4,     4,     4,   211,     4,     4,
-       4,   415,     4,   499,     4,     4,     4,     4,     4,     4,
-       4,     4,   516,     4,     4,   211,     4,     4,     4,   213,
-     457,     4,   213,   213,   213,   481,     4,     4,   391,   213,
-       4,     4,   211,     4,   211,   211,     4,     4,   213,   213,
-       4,     4,     4,     4,   582,     4,   211,   613,     4,     7,
-       7,     7,     7,   210,   210,   210,     7,     7,     5,   210,
-     176,   177,   178,   179,   213,   278,   210,   210,     5,     5,
-       5,   210,     5,   231,   233,   210,   114,   115,   116,   117,
-     435,     5,     5,     5,     5,     7,     7,     7,     7,     7,
-     210,   210,     5,     7,     5,   240,    17,    18,   305,    20,
-      21,   308,   210,   210,   210,     5,   210,   210,   240,   210,
-       7,   210,   240,   210,   210,   210,   210,   210,   210,   210,
-     210,   210,   210,   210,   210,   210,   210,   233,   210,   210,
-     210,    18,   174,   593,   175,   278,   210,   210,   210,     5,
-     229,   252,   612,   297,    27,    28,   317,   318,   319,   321,
+     194,   211,   245,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   268,   269,   271,
+     272,   273,   274,   275,   276,   277,   280,   282,   284,   285,
+     286,   288,   290,   291,   292,   293,   294,   295,   296,   314,
+     316,   324,   326,   367,   376,   383,   397,   407,   431,   432,
+     433,   434,   438,   446,   472,   503,   505,   507,   518,   520,
+     522,   545,   559,   560,   568,   578,   609,   618,   642,    15,
+      16,    19,    22,    23,    24,    25,   245,   298,   299,   302,
+     304,   307,   310,   311,   312,   313,   503,   505,    88,    89,
+      90,   106,   110,   111,   112,   123,   127,   135,   245,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   269,
+     272,   273,   274,   275,   276,   277,   280,   282,   284,   285,
+     286,   288,   290,   415,   416,   417,   419,   421,   423,   425,
+     427,   429,   431,   432,   433,   434,   437,   472,   491,   503,
+     505,   507,   518,   520,   522,   542,   107,   245,   427,   429,
+     472,   499,   500,   501,   503,   505,   122,   129,   130,   131,
+     132,   133,   134,   136,   245,   472,   503,   505,   515,   516,
+     517,   518,   520,   522,   524,   528,   530,   532,   534,   536,
+     538,   540,   446,    38,    93,    95,    96,   100,   101,   102,
+     245,   344,   456,   457,   458,   459,   460,   461,   462,   464,
+     466,   468,   469,   471,   503,   505,    94,    97,    98,    99,
+     245,   344,   460,   466,   480,   481,   482,   483,   484,   486,
+     487,   488,   489,   490,   503,   505,   139,   140,   245,   391,
+     392,   393,   395,   161,   162,   163,   164,   165,   166,   167,
+     168,   169,   170,   171,   172,   173,   180,   181,   245,   503,
+     505,   582,   583,   584,   585,   587,   588,   590,   591,   592,
+     595,   597,   599,   600,   601,   603,   605,   607,    12,    13,
+     613,   614,   615,   617,     6,     3,     4,     8,     3,   249,
+       3,     8,   610,   297,   317,     4,     4,     4,   519,   521,
+     523,   315,   325,   327,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,   267,     4,     4,     4,     4,
+       4,   278,   281,   283,     4,     4,     4,   408,   447,   473,
+       4,   270,   439,   504,   506,   435,     4,     4,     4,   368,
+     546,   508,   384,   398,     4,   377,   561,   569,   579,   287,
+     289,     4,     4,     4,   619,   643,     4,     3,     8,   303,
+     305,   308,     4,     4,     4,     4,     3,     8,   420,   422,
+     424,   492,   418,   426,     4,   430,   428,   543,     3,     8,
+     502,     3,     8,   541,   529,   531,   535,   533,   539,   537,
+     525,     8,     3,     8,   463,   345,     4,   467,   465,   470,
+       4,     8,     3,   485,     4,     4,     4,     8,     3,   394,
+     396,     3,     8,     4,   598,   586,     4,   589,     4,     4,
+     593,   596,     4,     4,   602,   604,   606,   608,     3,     8,
+     616,     4,     3,     8,   230,   230,   211,     4,     4,     4,
+       4,   214,   214,   214,     4,     4,     4,     4,     4,     4,
+     212,   212,   212,   212,   212,   214,   213,   213,   213,   212,
+     212,     4,   212,   212,   214,   214,   214,     4,     4,     4,
+     214,   214,   214,     4,     4,     4,   212,     4,     4,     4,
+       4,     4,   214,   214,   214,     4,     4,     4,     4,     4,
+     212,     4,     4,     4,     4,     4,     4,   214,   214,   214,
+       4,     4,   254,     4,     4,     4,   214,   214,   212,   212,
+     299,     4,     4,     4,     4,     4,     4,   212,     4,     4,
+       4,   416,     4,   500,     4,     4,     4,     4,     4,     4,
+       4,     4,   517,     4,     4,   212,     4,     4,     4,   214,
+     458,     4,   214,   214,   214,   482,     4,     4,   392,   214,
+       4,     4,   212,     4,   212,   212,     4,     4,   214,   214,
+       4,     4,     4,     4,   583,     4,   212,   614,     4,     7,
+       7,     7,     7,   211,   211,   211,     7,     7,     5,   211,
+     176,   177,   178,   179,   214,   279,   211,   211,     5,     5,
+       5,   211,     5,   232,   234,   211,   114,   115,   116,   117,
+     436,     5,     5,     5,     5,     7,     7,     7,     7,     7,
+     211,   211,     5,     7,     5,   241,    17,    18,   306,    20,
+      21,   309,   211,   211,   211,     5,   211,   211,   241,   211,
+       7,   211,   241,   211,   211,   211,   211,   211,   211,   211,
+     211,   211,   211,   211,   211,   211,   211,   234,   211,   211,
+     211,    18,   174,   594,   175,   279,   211,   211,   211,     5,
+     230,   253,   613,   298,    27,    28,   318,   319,   320,   322,
       38,    42,    43,    44,    45,    46,    47,    48,    49,    50,
       51,    52,    53,    54,    55,    59,    60,    61,    62,    63,
-     244,   331,   332,   333,   336,   338,   340,   342,   343,   345,
-     346,   347,   348,   349,   350,   351,   352,   353,   354,   357,
-     358,   360,   362,   364,   331,     7,   327,   328,   329,     7,
-     408,   409,   410,     7,   449,   450,   451,     7,   473,   474,
-     475,     7,   439,   440,   441,   129,   130,   131,   132,   134,
-     368,   369,   370,   371,   372,   373,   374,     7,   546,   547,
-       7,   508,   509,   510,     7,   384,   385,   386,   142,   143,
-     144,   145,   146,   147,   398,   399,   400,   401,   402,   403,
-     404,   405,   150,   151,   152,   244,   377,   378,   379,   380,
-     381,   502,   504,   154,   155,   244,   502,   504,   561,   562,
-     563,   565,   157,   158,   159,   210,   502,   504,   569,   570,
-     571,   572,   574,   575,   581,     7,   619,   620,   195,   196,
-     244,   643,   644,   645,   646,   241,     7,   492,   493,   494,
-     137,   523,   525,   543,   327,     8,     8,     8,   320,   322,
-       3,     8,   334,   337,   339,   341,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,   355,     4,   359,   361,
-     363,   365,     3,     8,     8,   330,     6,     3,   411,     6,
-       3,   452,     6,     3,   476,     6,     3,   442,     6,     3,
-       3,     6,   548,     3,     6,   511,     6,     3,   387,     6,
-       3,     4,     4,     4,     4,     4,     4,     3,     8,     4,
-       4,     4,     3,     8,   564,   566,     3,     8,     4,   573,
-       4,   576,     3,     8,     8,   621,     3,     6,     4,     4,
-       3,     8,   210,   242,   243,   495,     6,     3,   526,     8,
-       6,     4,     4,   318,     4,     4,     4,     4,   211,   213,
-     211,   213,   211,   211,   211,   211,   211,   211,     4,   211,
-       4,     4,     4,     4,   332,   331,   329,   414,   410,   455,
-     451,   479,   475,   244,   254,   255,   256,   257,   258,   259,
-     260,   261,   262,   263,   268,   271,   272,   273,   274,   275,
-     276,   279,   281,   283,   284,   285,   287,   289,   343,   406,
-     424,   426,   428,   430,   431,   432,   433,   443,   444,   471,
-     502,   504,   517,   519,   521,   541,   441,   369,   124,   125,
-     126,   244,   254,   255,   256,   343,   445,   471,   502,   504,
-     517,   519,   521,   549,   550,   551,   552,   553,   555,   557,
-     547,   514,   510,   390,   386,   211,   211,   211,   211,   211,
-     211,   399,   213,   211,   211,   378,     4,     4,   562,   213,
-       4,   211,     4,   570,   186,   188,   189,   244,   343,   502,
-     504,   622,   623,   624,   625,   627,   620,   213,   213,   644,
-       6,     3,   498,   494,     4,   210,   210,    39,    40,    41,
-     335,   210,   210,   210,    56,    57,    58,   356,   210,   210,
-     210,   210,     8,     8,     8,     8,     3,     8,   554,   556,
-       4,     8,     3,     8,     8,   210,   210,   210,   229,   628,
-       4,   626,     3,     8,   210,     8,   240,   444,     4,     4,
-     213,   551,     4,   211,     4,   623,   210,   210,     5,   210,
-       7,   629,   630,   631,     3,     6,   187,   190,   191,   192,
-     193,   632,   633,   634,   636,   637,   638,   639,   630,   635,
-       4,     4,     4,   640,     3,     8,     4,   213,   211,   211,
-       4,   633,   210,   210
+     245,   332,   333,   334,   337,   339,   341,   343,   344,   346,
+     347,   348,   349,   350,   351,   352,   353,   354,   355,   358,
+     359,   361,   363,   365,   332,     7,   328,   329,   330,     7,
+     409,   410,   411,     7,   450,   451,   452,     7,   474,   475,
+     476,     7,   440,   441,   442,   129,   130,   131,   132,   134,
+     369,   370,   371,   372,   373,   374,   375,     7,   547,   548,
+       7,   509,   510,   511,     7,   385,   386,   387,   142,   143,
+     144,   145,   146,   147,   399,   400,   401,   402,   403,   404,
+     405,   406,   150,   151,   152,   245,   378,   379,   380,   381,
+     382,   503,   505,   154,   155,   245,   503,   505,   562,   563,
+     564,   566,   157,   158,   159,   211,   503,   505,   570,   571,
+     572,   573,   575,   576,   582,     7,   620,   621,   195,   196,
+     197,   245,   644,   645,   646,   647,   648,   242,     7,   493,
+     494,   495,   137,   524,   526,   544,   328,     8,     8,     8,
+     321,   323,     3,     8,   335,   338,   340,   342,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,   356,     4,
+     360,   362,   364,   366,     3,     8,     8,   331,     6,     3,
+     412,     6,     3,   453,     6,     3,   477,     6,     3,   443,
+       6,     3,     3,     6,   549,     3,     6,   512,     6,     3,
+     388,     6,     3,     4,     4,     4,     4,     4,     4,     3,
+       8,     4,     4,     4,     3,     8,   565,   567,     3,     8,
+       4,   574,     4,   577,     3,     8,     8,   622,     3,     6,
+       4,     4,     4,     3,     8,   211,   243,   244,   496,     6,
+       3,   527,     8,     6,     4,     4,   319,     4,     4,     4,
+       4,   212,   214,   212,   214,   212,   212,   212,   212,   212,
+     212,     4,   212,     4,     4,     4,     4,   333,   332,   330,
+     415,   411,   456,   452,   480,   476,   245,   255,   256,   257,
+     258,   259,   260,   261,   262,   263,   264,   269,   272,   273,
+     274,   275,   276,   277,   280,   282,   284,   285,   286,   288,
+     290,   344,   407,   425,   427,   429,   431,   432,   433,   434,
+     444,   445,   472,   503,   505,   518,   520,   522,   542,   442,
+     370,   124,   125,   126,   245,   255,   256,   257,   344,   446,
+     472,   503,   505,   518,   520,   522,   550,   551,   552,   553,
+     554,   556,   558,   548,   515,   511,   391,   387,   212,   212,
+     212,   212,   212,   212,   400,   214,   212,   212,   379,     4,
+       4,   563,   214,     4,   212,     4,   571,   186,   188,   189,
+     245,   344,   503,   505,   623,   624,   625,   626,   628,   621,
+     214,   214,   214,   645,     6,     3,   499,   495,     4,   211,
+     211,    39,    40,    41,   336,   211,   211,   211,    56,    57,
+      58,   357,   211,   211,   211,   211,     8,     8,     8,     8,
+       3,     8,   555,   557,     4,     8,     3,     8,     8,   211,
+     211,   211,   230,   629,     4,   627,     3,     8,   211,     8,
+     241,   445,     4,     4,   214,   552,     4,   212,     4,   624,
+     211,   211,     5,   211,     7,   630,   631,   632,     3,     6,
+     187,   190,   191,   192,   193,   633,   634,   635,   637,   638,
+     639,   640,   631,   636,     4,     4,     4,   641,     3,     8,
+       4,   214,   212,   212,     4,   634,   211,   211
   };
 
   const short
   Dhcp4Parser::yyr1_[] =
   {
-       0,   214,   216,   215,   217,   215,   218,   215,   219,   215,
-     220,   215,   221,   215,   222,   215,   223,   215,   224,   215,
-     225,   215,   226,   215,   227,   215,   228,   215,   229,   229,
-     229,   229,   229,   229,   229,   230,   232,   231,   233,   234,
-     234,   235,   235,   235,   237,   236,   238,   238,   239,   239,
-     239,   241,   240,   242,   242,   243,   243,   243,   244,   246,
-     245,   248,   247,   247,   249,   251,   250,   252,   252,   252,
-     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
-     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
-     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
-     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
-     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
-     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
-     253,   253,   253,   253,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   266,   265,   267,   269,
-     268,   270,   271,   272,   273,   274,   275,   277,   276,   278,
-     278,   278,   278,   278,   280,   279,   282,   281,   283,   284,
-     286,   285,   288,   287,   289,   290,   291,   292,   293,   294,
-     296,   295,   297,   297,   297,   298,   298,   298,   298,   298,
-     298,   298,   298,   298,   298,   300,   299,   302,   301,   304,
-     303,   305,   305,   307,   306,   308,   308,   309,   310,   311,
-     312,   314,   313,   316,   315,   317,   317,   317,   318,   318,
-     320,   319,   322,   321,   324,   323,   326,   325,   327,   327,
-     328,   328,   328,   330,   329,   331,   331,   331,   332,   332,
-     332,   332,   332,   332,   332,   332,   332,   332,   332,   332,
-     332,   332,   332,   332,   332,   332,   332,   332,   332,   332,
-     334,   333,   335,   335,   335,   337,   336,   339,   338,   341,
-     340,   342,   344,   343,   345,   346,   347,   348,   349,   350,
-     351,   352,   353,   355,   354,   356,   356,   356,   357,   359,
-     358,   361,   360,   363,   362,   365,   364,   367,   366,   368,
-     368,   368,   369,   369,   369,   369,   369,   370,   371,   372,
-     373,   374,   376,   375,   377,   377,   377,   378,   378,   378,
-     378,   378,   378,   379,   380,   381,   383,   382,   384,   384,
-     385,   385,   385,   387,   386,   389,   388,   390,   390,   390,
-     390,   391,   391,   393,   392,   395,   394,   397,   396,   398,
-     398,   398,   399,   399,   399,   399,   399,   399,   400,   401,
-     402,   403,   404,   405,   407,   406,   408,   408,   409,   409,
-     409,   411,   410,   413,   412,   414,   414,   414,   415,   415,
-     415,   415,   415,   415,   415,   415,   415,   415,   415,   415,
-     415,   415,   415,   415,   415,   415,   415,   415,   415,   415,
-     415,   415,   415,   415,   415,   415,   415,   415,   415,   415,
-     415,   415,   415,   415,   415,   415,   415,   415,   415,   415,
-     415,   415,   415,   415,   417,   416,   419,   418,   421,   420,
-     423,   422,   425,   424,   427,   426,   429,   428,   430,   431,
-     432,   434,   433,   435,   435,   435,   435,   436,   438,   437,
-     439,   439,   440,   440,   440,   442,   441,   443,   443,   443,
-     444,   444,   444,   444,   444,   444,   444,   444,   444,   444,
-     444,   444,   444,   444,   444,   444,   444,   444,   444,   444,
-     444,   444,   444,   444,   444,   444,   444,   444,   444,   444,
-     444,   444,   444,   444,   444,   444,   444,   444,   444,   444,
-     444,   446,   445,   448,   447,   449,   449,   450,   450,   450,
-     452,   451,   454,   453,   455,   455,   456,   456,   456,   457,
-     457,   457,   457,   457,   457,   457,   457,   457,   457,   458,
-     459,   460,   462,   461,   464,   463,   466,   465,   467,   469,
-     468,   470,   472,   471,   473,   473,   474,   474,   474,   476,
-     475,   478,   477,   479,   479,   480,   480,   480,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   482,   484,
-     483,   485,   486,   487,   488,   489,   491,   490,   492,   492,
-     493,   493,   493,   495,   494,   497,   496,   498,   498,   498,
-     499,   499,   499,   499,   499,   499,   499,   501,   500,   503,
-     502,   505,   504,   507,   506,   508,   508,   509,   509,   509,
-     511,   510,   513,   512,   514,   514,   515,   515,   515,   516,
-     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
-     516,   516,   516,   516,   518,   517,   520,   519,   522,   521,
-     524,   523,   526,   525,   528,   527,   530,   529,   532,   531,
-     534,   533,   536,   535,   538,   537,   540,   539,   542,   541,
-     543,   543,   545,   544,   546,   546,   546,   548,   547,   549,
-     549,   550,   550,   550,   551,   551,   551,   551,   551,   551,
-     551,   551,   551,   551,   551,   551,   551,   551,   551,   552,
-     554,   553,   556,   555,   557,   558,   560,   559,   561,   561,
-     561,   562,   562,   562,   562,   562,   564,   563,   566,   565,
-     568,   567,   569,   569,   569,   570,   570,   570,   570,   570,
-     570,   571,   573,   572,   574,   576,   575,   578,   577,   580,
-     579,   581,   581,   581,   582,   582,   582,   582,   582,   582,
-     582,   582,   582,   582,   582,   582,   582,   582,   582,   582,
-     582,   582,   583,   585,   584,   586,   588,   587,   589,   590,
-     592,   591,   593,   593,   595,   594,   597,   596,   598,   599,
-     601,   600,   603,   602,   605,   604,   607,   606,   609,   608,
-     611,   610,   612,   612,   612,   613,   613,   615,   614,   616,
-     618,   617,   619,   619,   619,   621,   620,   622,   622,   622,
-     623,   623,   623,   623,   623,   623,   623,   624,   626,   625,
-     628,   627,   629,   629,   629,   631,   630,   632,   632,   632,
-     633,   633,   633,   633,   633,   635,   634,   636,   637,   638,
-     640,   639,   642,   641,   643,   643,   643,   644,   644,   644,
-     645,   646
+       0,   215,   217,   216,   218,   216,   219,   216,   220,   216,
+     221,   216,   222,   216,   223,   216,   224,   216,   225,   216,
+     226,   216,   227,   216,   228,   216,   229,   216,   230,   230,
+     230,   230,   230,   230,   230,   231,   233,   232,   234,   235,
+     235,   236,   236,   236,   238,   237,   239,   239,   240,   240,
+     240,   242,   241,   243,   243,   244,   244,   244,   245,   247,
+     246,   249,   248,   248,   250,   252,   251,   253,   253,   253,
+     254,   254,   254,   254,   254,   254,   254,   254,   254,   254,
+     254,   254,   254,   254,   254,   254,   254,   254,   254,   254,
+     254,   254,   254,   254,   254,   254,   254,   254,   254,   254,
+     254,   254,   254,   254,   254,   254,   254,   254,   254,   254,
+     254,   254,   254,   254,   254,   254,   254,   254,   254,   254,
+     254,   254,   254,   254,   254,   254,   254,   254,   254,   254,
+     254,   254,   254,   254,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   267,   266,   268,   270,
+     269,   271,   272,   273,   274,   275,   276,   278,   277,   279,
+     279,   279,   279,   279,   281,   280,   283,   282,   284,   285,
+     287,   286,   289,   288,   290,   291,   292,   293,   294,   295,
+     297,   296,   298,   298,   298,   299,   299,   299,   299,   299,
+     299,   299,   299,   299,   299,   301,   300,   303,   302,   305,
+     304,   306,   306,   308,   307,   309,   309,   310,   311,   312,
+     313,   315,   314,   317,   316,   318,   318,   318,   319,   319,
+     321,   320,   323,   322,   325,   324,   327,   326,   328,   328,
+     329,   329,   329,   331,   330,   332,   332,   332,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     335,   334,   336,   336,   336,   338,   337,   340,   339,   342,
+     341,   343,   345,   344,   346,   347,   348,   349,   350,   351,
+     352,   353,   354,   356,   355,   357,   357,   357,   358,   360,
+     359,   362,   361,   364,   363,   366,   365,   368,   367,   369,
+     369,   369,   370,   370,   370,   370,   370,   371,   372,   373,
+     374,   375,   377,   376,   378,   378,   378,   379,   379,   379,
+     379,   379,   379,   380,   381,   382,   384,   383,   385,   385,
+     386,   386,   386,   388,   387,   390,   389,   391,   391,   391,
+     391,   392,   392,   394,   393,   396,   395,   398,   397,   399,
+     399,   399,   400,   400,   400,   400,   400,   400,   401,   402,
+     403,   404,   405,   406,   408,   407,   409,   409,   410,   410,
+     410,   412,   411,   414,   413,   415,   415,   415,   416,   416,
+     416,   416,   416,   416,   416,   416,   416,   416,   416,   416,
+     416,   416,   416,   416,   416,   416,   416,   416,   416,   416,
+     416,   416,   416,   416,   416,   416,   416,   416,   416,   416,
+     416,   416,   416,   416,   416,   416,   416,   416,   416,   416,
+     416,   416,   416,   416,   418,   417,   420,   419,   422,   421,
+     424,   423,   426,   425,   428,   427,   430,   429,   431,   432,
+     433,   435,   434,   436,   436,   436,   436,   437,   439,   438,
+     440,   440,   441,   441,   441,   443,   442,   444,   444,   444,
+     445,   445,   445,   445,   445,   445,   445,   445,   445,   445,
+     445,   445,   445,   445,   445,   445,   445,   445,   445,   445,
+     445,   445,   445,   445,   445,   445,   445,   445,   445,   445,
+     445,   445,   445,   445,   445,   445,   445,   445,   445,   445,
+     445,   447,   446,   449,   448,   450,   450,   451,   451,   451,
+     453,   452,   455,   454,   456,   456,   457,   457,   457,   458,
+     458,   458,   458,   458,   458,   458,   458,   458,   458,   459,
+     460,   461,   463,   462,   465,   464,   467,   466,   468,   470,
+     469,   471,   473,   472,   474,   474,   475,   475,   475,   477,
+     476,   479,   478,   480,   480,   481,   481,   481,   482,   482,
+     482,   482,   482,   482,   482,   482,   482,   482,   483,   485,
+     484,   486,   487,   488,   489,   490,   492,   491,   493,   493,
+     494,   494,   494,   496,   495,   498,   497,   499,   499,   499,
+     500,   500,   500,   500,   500,   500,   500,   502,   501,   504,
+     503,   506,   505,   508,   507,   509,   509,   510,   510,   510,
+     512,   511,   514,   513,   515,   515,   516,   516,   516,   517,
+     517,   517,   517,   517,   517,   517,   517,   517,   517,   517,
+     517,   517,   517,   517,   519,   518,   521,   520,   523,   522,
+     525,   524,   527,   526,   529,   528,   531,   530,   533,   532,
+     535,   534,   537,   536,   539,   538,   541,   540,   543,   542,
+     544,   544,   546,   545,   547,   547,   547,   549,   548,   550,
+     550,   551,   551,   551,   552,   552,   552,   552,   552,   552,
+     552,   552,   552,   552,   552,   552,   552,   552,   552,   553,
+     555,   554,   557,   556,   558,   559,   561,   560,   562,   562,
+     562,   563,   563,   563,   563,   563,   565,   564,   567,   566,
+     569,   568,   570,   570,   570,   571,   571,   571,   571,   571,
+     571,   572,   574,   573,   575,   577,   576,   579,   578,   581,
+     580,   582,   582,   582,   583,   583,   583,   583,   583,   583,
+     583,   583,   583,   583,   583,   583,   583,   583,   583,   583,
+     583,   583,   584,   586,   585,   587,   589,   588,   590,   591,
+     593,   592,   594,   594,   596,   595,   598,   597,   599,   600,
+     602,   601,   604,   603,   606,   605,   608,   607,   610,   609,
+     612,   611,   613,   613,   613,   614,   614,   616,   615,   617,
+     619,   618,   620,   620,   620,   622,   621,   623,   623,   623,
+     624,   624,   624,   624,   624,   624,   624,   625,   627,   626,
+     629,   628,   630,   630,   630,   632,   631,   633,   633,   633,
+     634,   634,   634,   634,   634,   636,   635,   637,   638,   639,
+     641,   640,   643,   642,   644,   644,   644,   645,   645,   645,
+     645,   646,   647,   648
   };
 
   const signed char
@@ -6009,7 +5985,7 @@ namespace isc { namespace dhcp {
        0,     6,     1,     3,     2,     0,     4,     1,     3,     2,
        1,     1,     1,     1,     1,     0,     4,     3,     3,     3,
        0,     4,     0,     6,     1,     3,     2,     1,     1,     1,
-       3,     3
+       1,     3,     3,     3
   };
 
 
@@ -6083,14 +6059,15 @@ namespace isc { namespace dhcp {
   "\"output\"", "\"debuglevel\"", "\"severity\"", "\"flush\"",
   "\"maxsize\"", "\"maxver\"", "\"pattern\"", "\"compatibility\"",
   "\"lenient-option-parsing\"", "\"ignore-rai-link-selection\"",
-  "TOPLEVEL_JSON", "TOPLEVEL_DHCP4", "SUB_DHCP4", "SUB_INTERFACES4",
-  "SUB_SUBNET4", "SUB_POOL4", "SUB_RESERVATION", "SUB_OPTION_DEFS",
-  "SUB_OPTION_DEF", "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY",
-  "SUB_DHCP_DDNS", "SUB_CONFIG_CONTROL", "\"constant string\"",
-  "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start",
-  "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10",
-  "$@11", "$@12", "$@13", "value", "sub_json", "map2", "$@14", "map_value",
-  "map_content", "not_empty_map", "list_generic", "$@15", "list_content",
+  "\"exclude-first-last-24\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP4",
+  "SUB_DHCP4", "SUB_INTERFACES4", "SUB_SUBNET4", "SUB_POOL4",
+  "SUB_RESERVATION", "SUB_OPTION_DEFS", "SUB_OPTION_DEF",
+  "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS",
+  "SUB_CONFIG_CONTROL", "\"constant string\"", "\"integer\"",
+  "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2",
+  "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "$@12",
+  "$@13", "value", "sub_json", "map2", "$@14", "map_value", "map_content",
+  "not_empty_map", "list_generic", "$@15", "list_content",
   "not_empty_list", "list_strings", "$@16", "list_strings_content",
   "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@17",
   "global_object", "$@18", "global_object_comma", "sub_dhcp4", "$@19",
@@ -6196,7 +6173,7 @@ namespace isc { namespace dhcp {
   "output_params_list", "output_params", "output", "$@133", "flush",
   "maxsize", "maxver", "pattern", "$@134", "compatibility", "$@135",
   "compatibility_params", "compatibility_param", "lenient_option_parsing",
-  "ignore-rai-link-selection", YY_NULLPTR
+  "ignore-rai-link-selection", "exclude_first_last_24", YY_NULLPTR
   };
 #endif
 
@@ -6205,91 +6182,91 @@ namespace isc { namespace dhcp {
   const short
   Dhcp4Parser::yyrline_[] =
   {
-       0,   303,   303,   303,   304,   304,   305,   305,   306,   306,
-     307,   307,   308,   308,   309,   309,   310,   310,   311,   311,
-     312,   312,   313,   313,   314,   314,   315,   315,   323,   324,
-     325,   326,   327,   328,   329,   332,   337,   337,   348,   351,
-     352,   355,   360,   366,   371,   371,   378,   379,   382,   386,
-     390,   396,   396,   403,   404,   407,   411,   415,   425,   434,
-     434,   449,   449,   463,   466,   472,   472,   481,   482,   483,
-     490,   491,   492,   493,   494,   495,   496,   497,   498,   499,
-     500,   501,   502,   503,   504,   505,   506,   507,   508,   509,
-     510,   511,   512,   513,   514,   515,   516,   517,   518,   519,
-     520,   521,   522,   523,   524,   525,   526,   527,   528,   529,
-     530,   531,   532,   533,   534,   535,   536,   537,   538,   539,
-     540,   541,   542,   543,   544,   545,   546,   547,   548,   549,
-     550,   551,   552,   553,   554,   557,   563,   569,   575,   581,
-     587,   593,   599,   605,   611,   617,   623,   623,   632,   638,
-     638,   647,   653,   659,   665,   671,   677,   683,   683,   692,
-     695,   698,   701,   704,   710,   710,   719,   719,   728,   734,
-     740,   740,   749,   749,   758,   764,   770,   776,   782,   788,
-     794,   794,   806,   807,   808,   813,   814,   815,   816,   817,
-     818,   819,   820,   821,   822,   825,   825,   834,   834,   845,
-     845,   853,   854,   857,   857,   865,   867,   871,   877,   883,
-     889,   895,   895,   908,   908,   919,   920,   921,   926,   927,
-     930,   930,   949,   949,   967,   967,   980,   980,   991,   992,
-     995,   996,   997,  1002,  1002,  1012,  1013,  1014,  1019,  1020,
-    1021,  1022,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,
-    1031,  1032,  1033,  1034,  1035,  1036,  1037,  1038,  1039,  1040,
-    1043,  1043,  1051,  1052,  1053,  1056,  1056,  1065,  1065,  1074,
-    1074,  1083,  1089,  1089,  1098,  1104,  1110,  1116,  1122,  1128,
-    1134,  1140,  1146,  1152,  1152,  1160,  1161,  1162,  1165,  1171,
-    1171,  1180,  1180,  1189,  1189,  1198,  1198,  1207,  1207,  1218,
-    1219,  1220,  1225,  1226,  1227,  1228,  1229,  1232,  1237,  1242,
-    1247,  1252,  1259,  1259,  1272,  1273,  1274,  1279,  1280,  1281,
-    1282,  1283,  1284,  1287,  1293,  1299,  1305,  1305,  1316,  1317,
-    1320,  1321,  1322,  1327,  1327,  1337,  1337,  1347,  1348,  1349,
-    1352,  1355,  1356,  1359,  1359,  1368,  1368,  1377,  1377,  1389,
-    1390,  1391,  1396,  1397,  1398,  1399,  1400,  1401,  1404,  1410,
-    1416,  1422,  1428,  1434,  1443,  1443,  1457,  1458,  1461,  1462,
-    1463,  1472,  1472,  1498,  1498,  1509,  1510,  1511,  1517,  1518,
-    1519,  1520,  1521,  1522,  1523,  1524,  1525,  1526,  1527,  1528,
-    1529,  1530,  1531,  1532,  1533,  1534,  1535,  1536,  1537,  1538,
-    1539,  1540,  1541,  1542,  1543,  1544,  1545,  1546,  1547,  1548,
-    1549,  1550,  1551,  1552,  1553,  1554,  1555,  1556,  1557,  1558,
-    1559,  1560,  1561,  1562,  1565,  1565,  1574,  1574,  1583,  1583,
-    1592,  1592,  1601,  1601,  1610,  1610,  1619,  1619,  1630,  1636,
-    1642,  1648,  1648,  1656,  1657,  1658,  1659,  1662,  1670,  1670,
-    1682,  1683,  1687,  1688,  1689,  1694,  1694,  1702,  1703,  1704,
-    1709,  1710,  1711,  1712,  1713,  1714,  1715,  1716,  1717,  1718,
-    1719,  1720,  1721,  1722,  1723,  1724,  1725,  1726,  1727,  1728,
-    1729,  1730,  1731,  1732,  1733,  1734,  1735,  1736,  1737,  1738,
-    1739,  1740,  1741,  1742,  1743,  1744,  1745,  1746,  1747,  1748,
-    1749,  1756,  1756,  1770,  1770,  1779,  1780,  1783,  1784,  1785,
-    1792,  1792,  1807,  1807,  1821,  1822,  1825,  1826,  1827,  1832,
-    1833,  1834,  1835,  1836,  1837,  1838,  1839,  1840,  1841,  1844,
-    1846,  1852,  1854,  1854,  1863,  1863,  1872,  1872,  1881,  1883,
-    1883,  1892,  1902,  1902,  1915,  1916,  1921,  1922,  1923,  1930,
-    1930,  1942,  1942,  1954,  1955,  1960,  1961,  1962,  1969,  1970,
-    1971,  1972,  1973,  1974,  1975,  1976,  1977,  1978,  1981,  1983,
-    1983,  1992,  1994,  1996,  2002,  2008,  2017,  2017,  2030,  2031,
-    2034,  2035,  2036,  2041,  2041,  2051,  2051,  2061,  2062,  2063,
-    2068,  2069,  2070,  2071,  2072,  2073,  2074,  2077,  2077,  2086,
-    2086,  2111,  2111,  2141,  2141,  2152,  2153,  2156,  2157,  2158,
-    2163,  2163,  2172,  2172,  2181,  2182,  2185,  2186,  2187,  2193,
-    2194,  2195,  2196,  2197,  2198,  2199,  2200,  2201,  2202,  2203,
-    2204,  2205,  2206,  2207,  2210,  2210,  2219,  2219,  2228,  2228,
-    2237,  2237,  2246,  2246,  2257,  2257,  2266,  2266,  2275,  2275,
-    2284,  2284,  2293,  2293,  2302,  2302,  2311,  2311,  2325,  2325,
-    2336,  2337,  2343,  2343,  2354,  2355,  2356,  2361,  2361,  2371,
-    2372,  2375,  2376,  2377,  2382,  2383,  2384,  2385,  2386,  2387,
-    2388,  2389,  2390,  2391,  2392,  2393,  2394,  2395,  2396,  2399,
-    2401,  2401,  2410,  2410,  2419,  2427,  2435,  2435,  2446,  2447,
-    2448,  2453,  2454,  2455,  2456,  2457,  2460,  2460,  2469,  2469,
-    2481,  2481,  2494,  2495,  2496,  2501,  2502,  2503,  2504,  2505,
-    2506,  2509,  2515,  2515,  2524,  2530,  2530,  2540,  2540,  2553,
-    2553,  2563,  2564,  2565,  2570,  2571,  2572,  2573,  2574,  2575,
-    2576,  2577,  2578,  2579,  2580,  2581,  2582,  2583,  2584,  2585,
-    2586,  2587,  2590,  2596,  2596,  2605,  2611,  2611,  2620,  2626,
-    2632,  2632,  2641,  2642,  2645,  2645,  2655,  2655,  2665,  2672,
-    2679,  2679,  2688,  2688,  2698,  2698,  2708,  2708,  2720,  2720,
-    2732,  2732,  2742,  2743,  2744,  2750,  2751,  2754,  2754,  2765,
-    2773,  2773,  2786,  2787,  2788,  2794,  2794,  2802,  2803,  2804,
-    2809,  2810,  2811,  2812,  2813,  2814,  2815,  2818,  2824,  2824,
-    2833,  2833,  2844,  2845,  2846,  2851,  2851,  2859,  2860,  2861,
-    2866,  2867,  2868,  2869,  2870,  2873,  2873,  2882,  2888,  2894,
-    2900,  2900,  2909,  2909,  2920,  2921,  2922,  2927,  2928,  2929,
-    2932,  2938
+       0,   304,   304,   304,   305,   305,   306,   306,   307,   307,
+     308,   308,   309,   309,   310,   310,   311,   311,   312,   312,
+     313,   313,   314,   314,   315,   315,   316,   316,   324,   325,
+     326,   327,   328,   329,   330,   333,   338,   338,   349,   352,
+     353,   356,   361,   367,   372,   372,   379,   380,   383,   387,
+     391,   397,   397,   404,   405,   408,   412,   416,   426,   435,
+     435,   450,   450,   464,   467,   473,   473,   482,   483,   484,
+     491,   492,   493,   494,   495,   496,   497,   498,   499,   500,
+     501,   502,   503,   504,   505,   506,   507,   508,   509,   510,
+     511,   512,   513,   514,   515,   516,   517,   518,   519,   520,
+     521,   522,   523,   524,   525,   526,   527,   528,   529,   530,
+     531,   532,   533,   534,   535,   536,   537,   538,   539,   540,
+     541,   542,   543,   544,   545,   546,   547,   548,   549,   550,
+     551,   552,   553,   554,   555,   558,   564,   570,   576,   582,
+     588,   594,   600,   606,   612,   618,   624,   624,   633,   639,
+     639,   648,   654,   660,   666,   672,   678,   684,   684,   693,
+     696,   699,   702,   705,   711,   711,   720,   720,   729,   735,
+     741,   741,   750,   750,   759,   765,   771,   777,   783,   789,
+     795,   795,   807,   808,   809,   814,   815,   816,   817,   818,
+     819,   820,   821,   822,   823,   826,   826,   835,   835,   846,
+     846,   854,   855,   858,   858,   866,   868,   872,   878,   884,
+     890,   896,   896,   909,   909,   920,   921,   922,   927,   928,
+     931,   931,   950,   950,   968,   968,   981,   981,   992,   993,
+     996,   997,   998,  1003,  1003,  1013,  1014,  1015,  1020,  1021,
+    1022,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
+    1032,  1033,  1034,  1035,  1036,  1037,  1038,  1039,  1040,  1041,
+    1044,  1044,  1052,  1053,  1054,  1057,  1057,  1066,  1066,  1075,
+    1075,  1084,  1090,  1090,  1099,  1105,  1111,  1117,  1123,  1129,
+    1135,  1141,  1147,  1153,  1153,  1161,  1162,  1163,  1166,  1172,
+    1172,  1181,  1181,  1190,  1190,  1199,  1199,  1208,  1208,  1219,
+    1220,  1221,  1226,  1227,  1228,  1229,  1230,  1233,  1238,  1243,
+    1248,  1253,  1260,  1260,  1273,  1274,  1275,  1280,  1281,  1282,
+    1283,  1284,  1285,  1288,  1294,  1300,  1306,  1306,  1317,  1318,
+    1321,  1322,  1323,  1328,  1328,  1338,  1338,  1348,  1349,  1350,
+    1353,  1356,  1357,  1360,  1360,  1369,  1369,  1378,  1378,  1390,
+    1391,  1392,  1397,  1398,  1399,  1400,  1401,  1402,  1405,  1411,
+    1417,  1423,  1429,  1435,  1444,  1444,  1458,  1459,  1462,  1463,
+    1464,  1473,  1473,  1499,  1499,  1510,  1511,  1512,  1518,  1519,
+    1520,  1521,  1522,  1523,  1524,  1525,  1526,  1527,  1528,  1529,
+    1530,  1531,  1532,  1533,  1534,  1535,  1536,  1537,  1538,  1539,
+    1540,  1541,  1542,  1543,  1544,  1545,  1546,  1547,  1548,  1549,
+    1550,  1551,  1552,  1553,  1554,  1555,  1556,  1557,  1558,  1559,
+    1560,  1561,  1562,  1563,  1566,  1566,  1575,  1575,  1584,  1584,
+    1593,  1593,  1602,  1602,  1611,  1611,  1620,  1620,  1631,  1637,
+    1643,  1649,  1649,  1657,  1658,  1659,  1660,  1663,  1671,  1671,
+    1683,  1684,  1688,  1689,  1690,  1695,  1695,  1703,  1704,  1705,
+    1710,  1711,  1712,  1713,  1714,  1715,  1716,  1717,  1718,  1719,
+    1720,  1721,  1722,  1723,  1724,  1725,  1726,  1727,  1728,  1729,
+    1730,  1731,  1732,  1733,  1734,  1735,  1736,  1737,  1738,  1739,
+    1740,  1741,  1742,  1743,  1744,  1745,  1746,  1747,  1748,  1749,
+    1750,  1757,  1757,  1771,  1771,  1780,  1781,  1784,  1785,  1786,
+    1793,  1793,  1808,  1808,  1822,  1823,  1826,  1827,  1828,  1833,
+    1834,  1835,  1836,  1837,  1838,  1839,  1840,  1841,  1842,  1845,
+    1847,  1853,  1855,  1855,  1864,  1864,  1873,  1873,  1882,  1884,
+    1884,  1893,  1903,  1903,  1916,  1917,  1922,  1923,  1924,  1931,
+    1931,  1943,  1943,  1955,  1956,  1961,  1962,  1963,  1970,  1971,
+    1972,  1973,  1974,  1975,  1976,  1977,  1978,  1979,  1982,  1984,
+    1984,  1993,  1995,  1997,  2003,  2009,  2018,  2018,  2031,  2032,
+    2035,  2036,  2037,  2042,  2042,  2052,  2052,  2062,  2063,  2064,
+    2069,  2070,  2071,  2072,  2073,  2074,  2075,  2078,  2078,  2087,
+    2087,  2112,  2112,  2142,  2142,  2153,  2154,  2157,  2158,  2159,
+    2164,  2164,  2173,  2173,  2182,  2183,  2186,  2187,  2188,  2194,
+    2195,  2196,  2197,  2198,  2199,  2200,  2201,  2202,  2203,  2204,
+    2205,  2206,  2207,  2208,  2211,  2211,  2220,  2220,  2229,  2229,
+    2238,  2238,  2247,  2247,  2258,  2258,  2267,  2267,  2276,  2276,
+    2285,  2285,  2294,  2294,  2303,  2303,  2312,  2312,  2326,  2326,
+    2337,  2338,  2344,  2344,  2355,  2356,  2357,  2362,  2362,  2372,
+    2373,  2376,  2377,  2378,  2383,  2384,  2385,  2386,  2387,  2388,
+    2389,  2390,  2391,  2392,  2393,  2394,  2395,  2396,  2397,  2400,
+    2402,  2402,  2411,  2411,  2420,  2428,  2436,  2436,  2447,  2448,
+    2449,  2454,  2455,  2456,  2457,  2458,  2461,  2461,  2470,  2470,
+    2482,  2482,  2495,  2496,  2497,  2502,  2503,  2504,  2505,  2506,
+    2507,  2510,  2516,  2516,  2525,  2531,  2531,  2541,  2541,  2554,
+    2554,  2564,  2565,  2566,  2571,  2572,  2573,  2574,  2575,  2576,
+    2577,  2578,  2579,  2580,  2581,  2582,  2583,  2584,  2585,  2586,
+    2587,  2588,  2591,  2597,  2597,  2606,  2612,  2612,  2621,  2627,
+    2633,  2633,  2642,  2643,  2646,  2646,  2656,  2656,  2666,  2673,
+    2680,  2680,  2689,  2689,  2699,  2699,  2709,  2709,  2721,  2721,
+    2733,  2733,  2743,  2744,  2745,  2751,  2752,  2755,  2755,  2766,
+    2774,  2774,  2787,  2788,  2789,  2795,  2795,  2803,  2804,  2805,
+    2810,  2811,  2812,  2813,  2814,  2815,  2816,  2819,  2825,  2825,
+    2834,  2834,  2845,  2846,  2847,  2852,  2852,  2860,  2861,  2862,
+    2867,  2868,  2869,  2870,  2871,  2874,  2874,  2883,  2889,  2895,
+    2901,  2901,  2910,  2910,  2921,  2922,  2923,  2928,  2929,  2930,
+    2931,  2934,  2940,  2946
   };
 
   void
@@ -6322,9 +6299,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 6326 "dhcp4_parser.cc"
+#line 6303 "dhcp4_parser.cc"
 
-#line 2944 "dhcp4_parser.yy"
+#line 2952 "dhcp4_parser.yy"
 
 
 void
index 2dd4497ce529feeb0755698e980837247865af2d..bcad63c0c59307c042b7b3577e3ec1b49868aa93 100644 (file)
@@ -693,23 +693,24 @@ namespace isc { namespace dhcp {
     TOKEN_COMPATIBILITY = 449,     // "compatibility"
     TOKEN_LENIENT_OPTION_PARSING = 450, // "lenient-option-parsing"
     TOKEN_IGNORE_RAI_LINK_SEL = 451, // "ignore-rai-link-selection"
-    TOKEN_TOPLEVEL_JSON = 452,     // TOPLEVEL_JSON
-    TOKEN_TOPLEVEL_DHCP4 = 453,    // TOPLEVEL_DHCP4
-    TOKEN_SUB_DHCP4 = 454,         // SUB_DHCP4
-    TOKEN_SUB_INTERFACES4 = 455,   // SUB_INTERFACES4
-    TOKEN_SUB_SUBNET4 = 456,       // SUB_SUBNET4
-    TOKEN_SUB_POOL4 = 457,         // SUB_POOL4
-    TOKEN_SUB_RESERVATION = 458,   // SUB_RESERVATION
-    TOKEN_SUB_OPTION_DEFS = 459,   // SUB_OPTION_DEFS
-    TOKEN_SUB_OPTION_DEF = 460,    // SUB_OPTION_DEF
-    TOKEN_SUB_OPTION_DATA = 461,   // SUB_OPTION_DATA
-    TOKEN_SUB_HOOKS_LIBRARY = 462, // SUB_HOOKS_LIBRARY
-    TOKEN_SUB_DHCP_DDNS = 463,     // SUB_DHCP_DDNS
-    TOKEN_SUB_CONFIG_CONTROL = 464, // SUB_CONFIG_CONTROL
-    TOKEN_STRING = 465,            // "constant string"
-    TOKEN_INTEGER = 466,           // "integer"
-    TOKEN_FLOAT = 467,             // "floating point"
-    TOKEN_BOOLEAN = 468            // "boolean"
+    TOKEN_EXCLUDE_FIRST_LAST_24 = 452, // "exclude-first-last-24"
+    TOKEN_TOPLEVEL_JSON = 453,     // TOPLEVEL_JSON
+    TOKEN_TOPLEVEL_DHCP4 = 454,    // TOPLEVEL_DHCP4
+    TOKEN_SUB_DHCP4 = 455,         // SUB_DHCP4
+    TOKEN_SUB_INTERFACES4 = 456,   // SUB_INTERFACES4
+    TOKEN_SUB_SUBNET4 = 457,       // SUB_SUBNET4
+    TOKEN_SUB_POOL4 = 458,         // SUB_POOL4
+    TOKEN_SUB_RESERVATION = 459,   // SUB_RESERVATION
+    TOKEN_SUB_OPTION_DEFS = 460,   // SUB_OPTION_DEFS
+    TOKEN_SUB_OPTION_DEF = 461,    // SUB_OPTION_DEF
+    TOKEN_SUB_OPTION_DATA = 462,   // SUB_OPTION_DATA
+    TOKEN_SUB_HOOKS_LIBRARY = 463, // SUB_HOOKS_LIBRARY
+    TOKEN_SUB_DHCP_DDNS = 464,     // SUB_DHCP_DDNS
+    TOKEN_SUB_CONFIG_CONTROL = 465, // SUB_CONFIG_CONTROL
+    TOKEN_STRING = 466,            // "constant string"
+    TOKEN_INTEGER = 467,           // "integer"
+    TOKEN_FLOAT = 468,             // "floating point"
+    TOKEN_BOOLEAN = 469            // "boolean"
       };
       /// Backward compatibility alias (Bison 3.6).
       typedef token_kind_type yytokentype;
@@ -726,7 +727,7 @@ namespace isc { namespace dhcp {
     {
       enum symbol_kind_type
       {
-        YYNTOKENS = 214, ///< Number of tokens.
+        YYNTOKENS = 215, ///< Number of tokens.
         S_YYEMPTY = -2,
         S_YYEOF = 0,                             // "end of file"
         S_YYerror = 1,                           // error
@@ -925,456 +926,458 @@ namespace isc { namespace dhcp {
         S_COMPATIBILITY = 194,                   // "compatibility"
         S_LENIENT_OPTION_PARSING = 195,          // "lenient-option-parsing"
         S_IGNORE_RAI_LINK_SEL = 196,             // "ignore-rai-link-selection"
-        S_TOPLEVEL_JSON = 197,                   // TOPLEVEL_JSON
-        S_TOPLEVEL_DHCP4 = 198,                  // TOPLEVEL_DHCP4
-        S_SUB_DHCP4 = 199,                       // SUB_DHCP4
-        S_SUB_INTERFACES4 = 200,                 // SUB_INTERFACES4
-        S_SUB_SUBNET4 = 201,                     // SUB_SUBNET4
-        S_SUB_POOL4 = 202,                       // SUB_POOL4
-        S_SUB_RESERVATION = 203,                 // SUB_RESERVATION
-        S_SUB_OPTION_DEFS = 204,                 // SUB_OPTION_DEFS
-        S_SUB_OPTION_DEF = 205,                  // SUB_OPTION_DEF
-        S_SUB_OPTION_DATA = 206,                 // SUB_OPTION_DATA
-        S_SUB_HOOKS_LIBRARY = 207,               // SUB_HOOKS_LIBRARY
-        S_SUB_DHCP_DDNS = 208,                   // SUB_DHCP_DDNS
-        S_SUB_CONFIG_CONTROL = 209,              // SUB_CONFIG_CONTROL
-        S_STRING = 210,                          // "constant string"
-        S_INTEGER = 211,                         // "integer"
-        S_FLOAT = 212,                           // "floating point"
-        S_BOOLEAN = 213,                         // "boolean"
-        S_YYACCEPT = 214,                        // $accept
-        S_start = 215,                           // start
-        S_216_1 = 216,                           // $@1
-        S_217_2 = 217,                           // $@2
-        S_218_3 = 218,                           // $@3
-        S_219_4 = 219,                           // $@4
-        S_220_5 = 220,                           // $@5
-        S_221_6 = 221,                           // $@6
-        S_222_7 = 222,                           // $@7
-        S_223_8 = 223,                           // $@8
-        S_224_9 = 224,                           // $@9
-        S_225_10 = 225,                          // $@10
-        S_226_11 = 226,                          // $@11
-        S_227_12 = 227,                          // $@12
-        S_228_13 = 228,                          // $@13
-        S_value = 229,                           // value
-        S_sub_json = 230,                        // sub_json
-        S_map2 = 231,                            // map2
-        S_232_14 = 232,                          // $@14
-        S_map_value = 233,                       // map_value
-        S_map_content = 234,                     // map_content
-        S_not_empty_map = 235,                   // not_empty_map
-        S_list_generic = 236,                    // list_generic
-        S_237_15 = 237,                          // $@15
-        S_list_content = 238,                    // list_content
-        S_not_empty_list = 239,                  // not_empty_list
-        S_list_strings = 240,                    // list_strings
-        S_241_16 = 241,                          // $@16
-        S_list_strings_content = 242,            // list_strings_content
-        S_not_empty_list_strings = 243,          // not_empty_list_strings
-        S_unknown_map_entry = 244,               // unknown_map_entry
-        S_syntax_map = 245,                      // syntax_map
-        S_246_17 = 246,                          // $@17
-        S_global_object = 247,                   // global_object
-        S_248_18 = 248,                          // $@18
-        S_global_object_comma = 249,             // global_object_comma
-        S_sub_dhcp4 = 250,                       // sub_dhcp4
-        S_251_19 = 251,                          // $@19
-        S_global_params = 252,                   // global_params
-        S_global_param = 253,                    // global_param
-        S_valid_lifetime = 254,                  // valid_lifetime
-        S_min_valid_lifetime = 255,              // min_valid_lifetime
-        S_max_valid_lifetime = 256,              // max_valid_lifetime
-        S_renew_timer = 257,                     // renew_timer
-        S_rebind_timer = 258,                    // rebind_timer
-        S_calculate_tee_times = 259,             // calculate_tee_times
-        S_t1_percent = 260,                      // t1_percent
-        S_t2_percent = 261,                      // t2_percent
-        S_cache_threshold = 262,                 // cache_threshold
-        S_cache_max_age = 263,                   // cache_max_age
-        S_decline_probation_period = 264,        // decline_probation_period
-        S_server_tag = 265,                      // server_tag
-        S_266_20 = 266,                          // $@20
-        S_parked_packet_limit = 267,             // parked_packet_limit
-        S_allocator = 268,                       // allocator
-        S_269_21 = 269,                          // $@21
-        S_echo_client_id = 270,                  // echo_client_id
-        S_match_client_id = 271,                 // match_client_id
-        S_authoritative = 272,                   // authoritative
-        S_ddns_send_updates = 273,               // ddns_send_updates
-        S_ddns_override_no_update = 274,         // ddns_override_no_update
-        S_ddns_override_client_update = 275,     // ddns_override_client_update
-        S_ddns_replace_client_name = 276,        // ddns_replace_client_name
-        S_277_22 = 277,                          // $@22
-        S_ddns_replace_client_name_value = 278,  // ddns_replace_client_name_value
-        S_ddns_generated_prefix = 279,           // ddns_generated_prefix
-        S_280_23 = 280,                          // $@23
-        S_ddns_qualifying_suffix = 281,          // ddns_qualifying_suffix
-        S_282_24 = 282,                          // $@24
-        S_ddns_update_on_renew = 283,            // ddns_update_on_renew
-        S_ddns_use_conflict_resolution = 284,    // ddns_use_conflict_resolution
-        S_hostname_char_set = 285,               // hostname_char_set
-        S_286_25 = 286,                          // $@25
-        S_hostname_char_replacement = 287,       // hostname_char_replacement
-        S_288_26 = 288,                          // $@26
-        S_store_extended_info = 289,             // store_extended_info
-        S_statistic_default_sample_count = 290,  // statistic_default_sample_count
-        S_statistic_default_sample_age = 291,    // statistic_default_sample_age
-        S_early_global_reservations_lookup = 292, // early_global_reservations_lookup
-        S_ip_reservations_unique = 293,          // ip_reservations_unique
-        S_reservations_lookup_first = 294,       // reservations_lookup_first
-        S_interfaces_config = 295,               // interfaces_config
-        S_296_27 = 296,                          // $@27
-        S_interfaces_config_params = 297,        // interfaces_config_params
-        S_interfaces_config_param = 298,         // interfaces_config_param
-        S_sub_interfaces4 = 299,                 // sub_interfaces4
-        S_300_28 = 300,                          // $@28
-        S_interfaces_list = 301,                 // interfaces_list
-        S_302_29 = 302,                          // $@29
-        S_dhcp_socket_type = 303,                // dhcp_socket_type
-        S_304_30 = 304,                          // $@30
-        S_socket_type = 305,                     // socket_type
-        S_outbound_interface = 306,              // outbound_interface
-        S_307_31 = 307,                          // $@31
-        S_outbound_interface_value = 308,        // outbound_interface_value
-        S_re_detect = 309,                       // re_detect
-        S_service_sockets_require_all = 310,     // service_sockets_require_all
-        S_service_sockets_retry_wait_time = 311, // service_sockets_retry_wait_time
-        S_service_sockets_max_retries = 312,     // service_sockets_max_retries
-        S_lease_database = 313,                  // lease_database
-        S_314_32 = 314,                          // $@32
-        S_sanity_checks = 315,                   // sanity_checks
-        S_316_33 = 316,                          // $@33
-        S_sanity_checks_params = 317,            // sanity_checks_params
-        S_sanity_checks_param = 318,             // sanity_checks_param
-        S_lease_checks = 319,                    // lease_checks
-        S_320_34 = 320,                          // $@34
-        S_extended_info_checks = 321,            // extended_info_checks
-        S_322_35 = 322,                          // $@35
-        S_hosts_database = 323,                  // hosts_database
-        S_324_36 = 324,                          // $@36
-        S_hosts_databases = 325,                 // hosts_databases
-        S_326_37 = 326,                          // $@37
-        S_database_list = 327,                   // database_list
-        S_not_empty_database_list = 328,         // not_empty_database_list
-        S_database = 329,                        // database
-        S_330_38 = 330,                          // $@38
-        S_database_map_params = 331,             // database_map_params
-        S_database_map_param = 332,              // database_map_param
-        S_database_type = 333,                   // database_type
-        S_334_39 = 334,                          // $@39
-        S_db_type = 335,                         // db_type
-        S_user = 336,                            // user
-        S_337_40 = 337,                          // $@40
-        S_password = 338,                        // password
-        S_339_41 = 339,                          // $@41
-        S_host = 340,                            // host
-        S_341_42 = 341,                          // $@42
-        S_port = 342,                            // port
-        S_name = 343,                            // name
-        S_344_43 = 344,                          // $@43
-        S_persist = 345,                         // persist
-        S_lfc_interval = 346,                    // lfc_interval
-        S_readonly = 347,                        // readonly
-        S_connect_timeout = 348,                 // connect_timeout
-        S_read_timeout = 349,                    // read_timeout
-        S_write_timeout = 350,                   // write_timeout
-        S_tcp_user_timeout = 351,                // tcp_user_timeout
-        S_max_reconnect_tries = 352,             // max_reconnect_tries
-        S_reconnect_wait_time = 353,             // reconnect_wait_time
-        S_on_fail = 354,                         // on_fail
-        S_355_44 = 355,                          // $@44
-        S_on_fail_mode = 356,                    // on_fail_mode
-        S_max_row_errors = 357,                  // max_row_errors
-        S_trust_anchor = 358,                    // trust_anchor
-        S_359_45 = 359,                          // $@45
-        S_cert_file = 360,                       // cert_file
-        S_361_46 = 361,                          // $@46
-        S_key_file = 362,                        // key_file
-        S_363_47 = 363,                          // $@47
-        S_cipher_list = 364,                     // cipher_list
-        S_365_48 = 365,                          // $@48
-        S_host_reservation_identifiers = 366,    // host_reservation_identifiers
-        S_367_49 = 367,                          // $@49
-        S_host_reservation_identifiers_list = 368, // host_reservation_identifiers_list
-        S_host_reservation_identifier = 369,     // host_reservation_identifier
-        S_duid_id = 370,                         // duid_id
-        S_hw_address_id = 371,                   // hw_address_id
-        S_circuit_id = 372,                      // circuit_id
-        S_client_id = 373,                       // client_id
-        S_flex_id = 374,                         // flex_id
-        S_dhcp_multi_threading = 375,            // dhcp_multi_threading
-        S_376_50 = 376,                          // $@50
-        S_multi_threading_params = 377,          // multi_threading_params
-        S_multi_threading_param = 378,           // multi_threading_param
-        S_enable_multi_threading = 379,          // enable_multi_threading
-        S_thread_pool_size = 380,                // thread_pool_size
-        S_packet_queue_size = 381,               // packet_queue_size
-        S_hooks_libraries = 382,                 // hooks_libraries
-        S_383_51 = 383,                          // $@51
-        S_hooks_libraries_list = 384,            // hooks_libraries_list
-        S_not_empty_hooks_libraries_list = 385,  // not_empty_hooks_libraries_list
-        S_hooks_library = 386,                   // hooks_library
-        S_387_52 = 387,                          // $@52
-        S_sub_hooks_library = 388,               // sub_hooks_library
-        S_389_53 = 389,                          // $@53
-        S_hooks_params = 390,                    // hooks_params
-        S_hooks_param = 391,                     // hooks_param
-        S_library = 392,                         // library
-        S_393_54 = 393,                          // $@54
-        S_parameters = 394,                      // parameters
-        S_395_55 = 395,                          // $@55
-        S_expired_leases_processing = 396,       // expired_leases_processing
-        S_397_56 = 397,                          // $@56
-        S_expired_leases_params = 398,           // expired_leases_params
-        S_expired_leases_param = 399,            // expired_leases_param
-        S_reclaim_timer_wait_time = 400,         // reclaim_timer_wait_time
-        S_flush_reclaimed_timer_wait_time = 401, // flush_reclaimed_timer_wait_time
-        S_hold_reclaimed_time = 402,             // hold_reclaimed_time
-        S_max_reclaim_leases = 403,              // max_reclaim_leases
-        S_max_reclaim_time = 404,                // max_reclaim_time
-        S_unwarned_reclaim_cycles = 405,         // unwarned_reclaim_cycles
-        S_subnet4_list = 406,                    // subnet4_list
-        S_407_57 = 407,                          // $@57
-        S_subnet4_list_content = 408,            // subnet4_list_content
-        S_not_empty_subnet4_list = 409,          // not_empty_subnet4_list
-        S_subnet4 = 410,                         // subnet4
-        S_411_58 = 411,                          // $@58
-        S_sub_subnet4 = 412,                     // sub_subnet4
-        S_413_59 = 413,                          // $@59
-        S_subnet4_params = 414,                  // subnet4_params
-        S_subnet4_param = 415,                   // subnet4_param
-        S_subnet = 416,                          // subnet
-        S_417_60 = 417,                          // $@60
-        S_subnet_4o6_interface = 418,            // subnet_4o6_interface
-        S_419_61 = 419,                          // $@61
-        S_subnet_4o6_interface_id = 420,         // subnet_4o6_interface_id
-        S_421_62 = 421,                          // $@62
-        S_subnet_4o6_subnet = 422,               // subnet_4o6_subnet
-        S_423_63 = 423,                          // $@63
-        S_interface = 424,                       // interface
-        S_425_64 = 425,                          // $@64
-        S_client_class = 426,                    // client_class
-        S_427_65 = 427,                          // $@65
-        S_require_client_classes = 428,          // require_client_classes
-        S_429_66 = 429,                          // $@66
-        S_reservations_global = 430,             // reservations_global
-        S_reservations_in_subnet = 431,          // reservations_in_subnet
-        S_reservations_out_of_pool = 432,        // reservations_out_of_pool
-        S_reservation_mode = 433,                // reservation_mode
-        S_434_67 = 434,                          // $@67
-        S_hr_mode = 435,                         // hr_mode
-        S_id = 436,                              // id
-        S_shared_networks = 437,                 // shared_networks
-        S_438_68 = 438,                          // $@68
-        S_shared_networks_content = 439,         // shared_networks_content
-        S_shared_networks_list = 440,            // shared_networks_list
-        S_shared_network = 441,                  // shared_network
-        S_442_69 = 442,                          // $@69
-        S_shared_network_params = 443,           // shared_network_params
-        S_shared_network_param = 444,            // shared_network_param
-        S_option_def_list = 445,                 // option_def_list
-        S_446_70 = 446,                          // $@70
-        S_sub_option_def_list = 447,             // sub_option_def_list
-        S_448_71 = 448,                          // $@71
-        S_option_def_list_content = 449,         // option_def_list_content
-        S_not_empty_option_def_list = 450,       // not_empty_option_def_list
-        S_option_def_entry = 451,                // option_def_entry
-        S_452_72 = 452,                          // $@72
-        S_sub_option_def = 453,                  // sub_option_def
-        S_454_73 = 454,                          // $@73
-        S_option_def_params = 455,               // option_def_params
-        S_not_empty_option_def_params = 456,     // not_empty_option_def_params
-        S_option_def_param = 457,                // option_def_param
-        S_option_def_name = 458,                 // option_def_name
-        S_code = 459,                            // code
-        S_option_def_code = 460,                 // option_def_code
-        S_option_def_type = 461,                 // option_def_type
-        S_462_74 = 462,                          // $@74
-        S_option_def_record_types = 463,         // option_def_record_types
-        S_464_75 = 464,                          // $@75
-        S_space = 465,                           // space
-        S_466_76 = 466,                          // $@76
-        S_option_def_space = 467,                // option_def_space
-        S_option_def_encapsulate = 468,          // option_def_encapsulate
-        S_469_77 = 469,                          // $@77
-        S_option_def_array = 470,                // option_def_array
-        S_option_data_list = 471,                // option_data_list
-        S_472_78 = 472,                          // $@78
-        S_option_data_list_content = 473,        // option_data_list_content
-        S_not_empty_option_data_list = 474,      // not_empty_option_data_list
-        S_option_data_entry = 475,               // option_data_entry
-        S_476_79 = 476,                          // $@79
-        S_sub_option_data = 477,                 // sub_option_data
-        S_478_80 = 478,                          // $@80
-        S_option_data_params = 479,              // option_data_params
-        S_not_empty_option_data_params = 480,    // not_empty_option_data_params
-        S_option_data_param = 481,               // option_data_param
-        S_option_data_name = 482,                // option_data_name
-        S_option_data_data = 483,                // option_data_data
-        S_484_81 = 484,                          // $@81
-        S_option_data_code = 485,                // option_data_code
-        S_option_data_space = 486,               // option_data_space
-        S_option_data_csv_format = 487,          // option_data_csv_format
-        S_option_data_always_send = 488,         // option_data_always_send
-        S_option_data_never_send = 489,          // option_data_never_send
-        S_pools_list = 490,                      // pools_list
-        S_491_82 = 491,                          // $@82
-        S_pools_list_content = 492,              // pools_list_content
-        S_not_empty_pools_list = 493,            // not_empty_pools_list
-        S_pool_list_entry = 494,                 // pool_list_entry
-        S_495_83 = 495,                          // $@83
-        S_sub_pool4 = 496,                       // sub_pool4
-        S_497_84 = 497,                          // $@84
-        S_pool_params = 498,                     // pool_params
-        S_pool_param = 499,                      // pool_param
-        S_pool_entry = 500,                      // pool_entry
-        S_501_85 = 501,                          // $@85
-        S_user_context = 502,                    // user_context
-        S_503_86 = 503,                          // $@86
-        S_comment = 504,                         // comment
-        S_505_87 = 505,                          // $@87
-        S_reservations = 506,                    // reservations
-        S_507_88 = 507,                          // $@88
-        S_reservations_list = 508,               // reservations_list
-        S_not_empty_reservations_list = 509,     // not_empty_reservations_list
-        S_reservation = 510,                     // reservation
-        S_511_89 = 511,                          // $@89
-        S_sub_reservation = 512,                 // sub_reservation
-        S_513_90 = 513,                          // $@90
-        S_reservation_params = 514,              // reservation_params
-        S_not_empty_reservation_params = 515,    // not_empty_reservation_params
-        S_reservation_param = 516,               // reservation_param
-        S_next_server = 517,                     // next_server
-        S_518_91 = 518,                          // $@91
-        S_server_hostname = 519,                 // server_hostname
-        S_520_92 = 520,                          // $@92
-        S_boot_file_name = 521,                  // boot_file_name
-        S_522_93 = 522,                          // $@93
-        S_ip_address = 523,                      // ip_address
-        S_524_94 = 524,                          // $@94
-        S_ip_addresses = 525,                    // ip_addresses
-        S_526_95 = 526,                          // $@95
-        S_duid = 527,                            // duid
-        S_528_96 = 528,                          // $@96
-        S_hw_address = 529,                      // hw_address
-        S_530_97 = 530,                          // $@97
-        S_client_id_value = 531,                 // client_id_value
-        S_532_98 = 532,                          // $@98
-        S_circuit_id_value = 533,                // circuit_id_value
-        S_534_99 = 534,                          // $@99
-        S_flex_id_value = 535,                   // flex_id_value
-        S_536_100 = 536,                         // $@100
-        S_hostname = 537,                        // hostname
-        S_538_101 = 538,                         // $@101
-        S_reservation_client_classes = 539,      // reservation_client_classes
-        S_540_102 = 540,                         // $@102
-        S_relay = 541,                           // relay
-        S_542_103 = 542,                         // $@103
-        S_relay_map = 543,                       // relay_map
-        S_client_classes = 544,                  // client_classes
-        S_545_104 = 545,                         // $@104
-        S_client_classes_list = 546,             // client_classes_list
-        S_client_class_entry = 547,              // client_class_entry
-        S_548_105 = 548,                         // $@105
-        S_client_class_params = 549,             // client_class_params
-        S_not_empty_client_class_params = 550,   // not_empty_client_class_params
-        S_client_class_param = 551,              // client_class_param
-        S_client_class_name = 552,               // client_class_name
-        S_client_class_test = 553,               // client_class_test
-        S_554_106 = 554,                         // $@106
-        S_client_class_template_test = 555,      // client_class_template_test
-        S_556_107 = 556,                         // $@107
-        S_only_if_required = 557,                // only_if_required
-        S_dhcp4o6_port = 558,                    // dhcp4o6_port
-        S_control_socket = 559,                  // control_socket
-        S_560_108 = 560,                         // $@108
-        S_control_socket_params = 561,           // control_socket_params
-        S_control_socket_param = 562,            // control_socket_param
-        S_control_socket_type = 563,             // control_socket_type
-        S_564_109 = 564,                         // $@109
-        S_control_socket_name = 565,             // control_socket_name
-        S_566_110 = 566,                         // $@110
-        S_dhcp_queue_control = 567,              // dhcp_queue_control
-        S_568_111 = 568,                         // $@111
-        S_queue_control_params = 569,            // queue_control_params
-        S_queue_control_param = 570,             // queue_control_param
-        S_enable_queue = 571,                    // enable_queue
-        S_queue_type = 572,                      // queue_type
-        S_573_112 = 573,                         // $@112
-        S_capacity = 574,                        // capacity
-        S_arbitrary_map_entry = 575,             // arbitrary_map_entry
-        S_576_113 = 576,                         // $@113
-        S_dhcp_ddns = 577,                       // dhcp_ddns
-        S_578_114 = 578,                         // $@114
-        S_sub_dhcp_ddns = 579,                   // sub_dhcp_ddns
-        S_580_115 = 580,                         // $@115
-        S_dhcp_ddns_params = 581,                // dhcp_ddns_params
-        S_dhcp_ddns_param = 582,                 // dhcp_ddns_param
-        S_enable_updates = 583,                  // enable_updates
-        S_server_ip = 584,                       // server_ip
-        S_585_116 = 585,                         // $@116
-        S_server_port = 586,                     // server_port
-        S_sender_ip = 587,                       // sender_ip
-        S_588_117 = 588,                         // $@117
-        S_sender_port = 589,                     // sender_port
-        S_max_queue_size = 590,                  // max_queue_size
-        S_ncr_protocol = 591,                    // ncr_protocol
-        S_592_118 = 592,                         // $@118
-        S_ncr_protocol_value = 593,              // ncr_protocol_value
-        S_ncr_format = 594,                      // ncr_format
-        S_595_119 = 595,                         // $@119
-        S_dep_qualifying_suffix = 596,           // dep_qualifying_suffix
-        S_597_120 = 597,                         // $@120
-        S_dep_override_no_update = 598,          // dep_override_no_update
-        S_dep_override_client_update = 599,      // dep_override_client_update
-        S_dep_replace_client_name = 600,         // dep_replace_client_name
-        S_601_121 = 601,                         // $@121
-        S_dep_generated_prefix = 602,            // dep_generated_prefix
-        S_603_122 = 603,                         // $@122
-        S_dep_hostname_char_set = 604,           // dep_hostname_char_set
-        S_605_123 = 605,                         // $@123
-        S_dep_hostname_char_replacement = 606,   // dep_hostname_char_replacement
-        S_607_124 = 607,                         // $@124
-        S_config_control = 608,                  // config_control
-        S_609_125 = 609,                         // $@125
-        S_sub_config_control = 610,              // sub_config_control
-        S_611_126 = 611,                         // $@126
-        S_config_control_params = 612,           // config_control_params
-        S_config_control_param = 613,            // config_control_param
-        S_config_databases = 614,                // config_databases
-        S_615_127 = 615,                         // $@127
-        S_config_fetch_wait_time = 616,          // config_fetch_wait_time
-        S_loggers = 617,                         // loggers
-        S_618_128 = 618,                         // $@128
-        S_loggers_entries = 619,                 // loggers_entries
-        S_logger_entry = 620,                    // logger_entry
-        S_621_129 = 621,                         // $@129
-        S_logger_params = 622,                   // logger_params
-        S_logger_param = 623,                    // logger_param
-        S_debuglevel = 624,                      // debuglevel
-        S_severity = 625,                        // severity
-        S_626_130 = 626,                         // $@130
-        S_output_options_list = 627,             // output_options_list
-        S_628_131 = 628,                         // $@131
-        S_output_options_list_content = 629,     // output_options_list_content
-        S_output_entry = 630,                    // output_entry
-        S_631_132 = 631,                         // $@132
-        S_output_params_list = 632,              // output_params_list
-        S_output_params = 633,                   // output_params
-        S_output = 634,                          // output
-        S_635_133 = 635,                         // $@133
-        S_flush = 636,                           // flush
-        S_maxsize = 637,                         // maxsize
-        S_maxver = 638,                          // maxver
-        S_pattern = 639,                         // pattern
-        S_640_134 = 640,                         // $@134
-        S_compatibility = 641,                   // compatibility
-        S_642_135 = 642,                         // $@135
-        S_compatibility_params = 643,            // compatibility_params
-        S_compatibility_param = 644,             // compatibility_param
-        S_lenient_option_parsing = 645,          // lenient_option_parsing
-        S_646_ignore_rai_link_selection = 646    // ignore-rai-link-selection
+        S_EXCLUDE_FIRST_LAST_24 = 197,           // "exclude-first-last-24"
+        S_TOPLEVEL_JSON = 198,                   // TOPLEVEL_JSON
+        S_TOPLEVEL_DHCP4 = 199,                  // TOPLEVEL_DHCP4
+        S_SUB_DHCP4 = 200,                       // SUB_DHCP4
+        S_SUB_INTERFACES4 = 201,                 // SUB_INTERFACES4
+        S_SUB_SUBNET4 = 202,                     // SUB_SUBNET4
+        S_SUB_POOL4 = 203,                       // SUB_POOL4
+        S_SUB_RESERVATION = 204,                 // SUB_RESERVATION
+        S_SUB_OPTION_DEFS = 205,                 // SUB_OPTION_DEFS
+        S_SUB_OPTION_DEF = 206,                  // SUB_OPTION_DEF
+        S_SUB_OPTION_DATA = 207,                 // SUB_OPTION_DATA
+        S_SUB_HOOKS_LIBRARY = 208,               // SUB_HOOKS_LIBRARY
+        S_SUB_DHCP_DDNS = 209,                   // SUB_DHCP_DDNS
+        S_SUB_CONFIG_CONTROL = 210,              // SUB_CONFIG_CONTROL
+        S_STRING = 211,                          // "constant string"
+        S_INTEGER = 212,                         // "integer"
+        S_FLOAT = 213,                           // "floating point"
+        S_BOOLEAN = 214,                         // "boolean"
+        S_YYACCEPT = 215,                        // $accept
+        S_start = 216,                           // start
+        S_217_1 = 217,                           // $@1
+        S_218_2 = 218,                           // $@2
+        S_219_3 = 219,                           // $@3
+        S_220_4 = 220,                           // $@4
+        S_221_5 = 221,                           // $@5
+        S_222_6 = 222,                           // $@6
+        S_223_7 = 223,                           // $@7
+        S_224_8 = 224,                           // $@8
+        S_225_9 = 225,                           // $@9
+        S_226_10 = 226,                          // $@10
+        S_227_11 = 227,                          // $@11
+        S_228_12 = 228,                          // $@12
+        S_229_13 = 229,                          // $@13
+        S_value = 230,                           // value
+        S_sub_json = 231,                        // sub_json
+        S_map2 = 232,                            // map2
+        S_233_14 = 233,                          // $@14
+        S_map_value = 234,                       // map_value
+        S_map_content = 235,                     // map_content
+        S_not_empty_map = 236,                   // not_empty_map
+        S_list_generic = 237,                    // list_generic
+        S_238_15 = 238,                          // $@15
+        S_list_content = 239,                    // list_content
+        S_not_empty_list = 240,                  // not_empty_list
+        S_list_strings = 241,                    // list_strings
+        S_242_16 = 242,                          // $@16
+        S_list_strings_content = 243,            // list_strings_content
+        S_not_empty_list_strings = 244,          // not_empty_list_strings
+        S_unknown_map_entry = 245,               // unknown_map_entry
+        S_syntax_map = 246,                      // syntax_map
+        S_247_17 = 247,                          // $@17
+        S_global_object = 248,                   // global_object
+        S_249_18 = 249,                          // $@18
+        S_global_object_comma = 250,             // global_object_comma
+        S_sub_dhcp4 = 251,                       // sub_dhcp4
+        S_252_19 = 252,                          // $@19
+        S_global_params = 253,                   // global_params
+        S_global_param = 254,                    // global_param
+        S_valid_lifetime = 255,                  // valid_lifetime
+        S_min_valid_lifetime = 256,              // min_valid_lifetime
+        S_max_valid_lifetime = 257,              // max_valid_lifetime
+        S_renew_timer = 258,                     // renew_timer
+        S_rebind_timer = 259,                    // rebind_timer
+        S_calculate_tee_times = 260,             // calculate_tee_times
+        S_t1_percent = 261,                      // t1_percent
+        S_t2_percent = 262,                      // t2_percent
+        S_cache_threshold = 263,                 // cache_threshold
+        S_cache_max_age = 264,                   // cache_max_age
+        S_decline_probation_period = 265,        // decline_probation_period
+        S_server_tag = 266,                      // server_tag
+        S_267_20 = 267,                          // $@20
+        S_parked_packet_limit = 268,             // parked_packet_limit
+        S_allocator = 269,                       // allocator
+        S_270_21 = 270,                          // $@21
+        S_echo_client_id = 271,                  // echo_client_id
+        S_match_client_id = 272,                 // match_client_id
+        S_authoritative = 273,                   // authoritative
+        S_ddns_send_updates = 274,               // ddns_send_updates
+        S_ddns_override_no_update = 275,         // ddns_override_no_update
+        S_ddns_override_client_update = 276,     // ddns_override_client_update
+        S_ddns_replace_client_name = 277,        // ddns_replace_client_name
+        S_278_22 = 278,                          // $@22
+        S_ddns_replace_client_name_value = 279,  // ddns_replace_client_name_value
+        S_ddns_generated_prefix = 280,           // ddns_generated_prefix
+        S_281_23 = 281,                          // $@23
+        S_ddns_qualifying_suffix = 282,          // ddns_qualifying_suffix
+        S_283_24 = 283,                          // $@24
+        S_ddns_update_on_renew = 284,            // ddns_update_on_renew
+        S_ddns_use_conflict_resolution = 285,    // ddns_use_conflict_resolution
+        S_hostname_char_set = 286,               // hostname_char_set
+        S_287_25 = 287,                          // $@25
+        S_hostname_char_replacement = 288,       // hostname_char_replacement
+        S_289_26 = 289,                          // $@26
+        S_store_extended_info = 290,             // store_extended_info
+        S_statistic_default_sample_count = 291,  // statistic_default_sample_count
+        S_statistic_default_sample_age = 292,    // statistic_default_sample_age
+        S_early_global_reservations_lookup = 293, // early_global_reservations_lookup
+        S_ip_reservations_unique = 294,          // ip_reservations_unique
+        S_reservations_lookup_first = 295,       // reservations_lookup_first
+        S_interfaces_config = 296,               // interfaces_config
+        S_297_27 = 297,                          // $@27
+        S_interfaces_config_params = 298,        // interfaces_config_params
+        S_interfaces_config_param = 299,         // interfaces_config_param
+        S_sub_interfaces4 = 300,                 // sub_interfaces4
+        S_301_28 = 301,                          // $@28
+        S_interfaces_list = 302,                 // interfaces_list
+        S_303_29 = 303,                          // $@29
+        S_dhcp_socket_type = 304,                // dhcp_socket_type
+        S_305_30 = 305,                          // $@30
+        S_socket_type = 306,                     // socket_type
+        S_outbound_interface = 307,              // outbound_interface
+        S_308_31 = 308,                          // $@31
+        S_outbound_interface_value = 309,        // outbound_interface_value
+        S_re_detect = 310,                       // re_detect
+        S_service_sockets_require_all = 311,     // service_sockets_require_all
+        S_service_sockets_retry_wait_time = 312, // service_sockets_retry_wait_time
+        S_service_sockets_max_retries = 313,     // service_sockets_max_retries
+        S_lease_database = 314,                  // lease_database
+        S_315_32 = 315,                          // $@32
+        S_sanity_checks = 316,                   // sanity_checks
+        S_317_33 = 317,                          // $@33
+        S_sanity_checks_params = 318,            // sanity_checks_params
+        S_sanity_checks_param = 319,             // sanity_checks_param
+        S_lease_checks = 320,                    // lease_checks
+        S_321_34 = 321,                          // $@34
+        S_extended_info_checks = 322,            // extended_info_checks
+        S_323_35 = 323,                          // $@35
+        S_hosts_database = 324,                  // hosts_database
+        S_325_36 = 325,                          // $@36
+        S_hosts_databases = 326,                 // hosts_databases
+        S_327_37 = 327,                          // $@37
+        S_database_list = 328,                   // database_list
+        S_not_empty_database_list = 329,         // not_empty_database_list
+        S_database = 330,                        // database
+        S_331_38 = 331,                          // $@38
+        S_database_map_params = 332,             // database_map_params
+        S_database_map_param = 333,              // database_map_param
+        S_database_type = 334,                   // database_type
+        S_335_39 = 335,                          // $@39
+        S_db_type = 336,                         // db_type
+        S_user = 337,                            // user
+        S_338_40 = 338,                          // $@40
+        S_password = 339,                        // password
+        S_340_41 = 340,                          // $@41
+        S_host = 341,                            // host
+        S_342_42 = 342,                          // $@42
+        S_port = 343,                            // port
+        S_name = 344,                            // name
+        S_345_43 = 345,                          // $@43
+        S_persist = 346,                         // persist
+        S_lfc_interval = 347,                    // lfc_interval
+        S_readonly = 348,                        // readonly
+        S_connect_timeout = 349,                 // connect_timeout
+        S_read_timeout = 350,                    // read_timeout
+        S_write_timeout = 351,                   // write_timeout
+        S_tcp_user_timeout = 352,                // tcp_user_timeout
+        S_max_reconnect_tries = 353,             // max_reconnect_tries
+        S_reconnect_wait_time = 354,             // reconnect_wait_time
+        S_on_fail = 355,                         // on_fail
+        S_356_44 = 356,                          // $@44
+        S_on_fail_mode = 357,                    // on_fail_mode
+        S_max_row_errors = 358,                  // max_row_errors
+        S_trust_anchor = 359,                    // trust_anchor
+        S_360_45 = 360,                          // $@45
+        S_cert_file = 361,                       // cert_file
+        S_362_46 = 362,                          // $@46
+        S_key_file = 363,                        // key_file
+        S_364_47 = 364,                          // $@47
+        S_cipher_list = 365,                     // cipher_list
+        S_366_48 = 366,                          // $@48
+        S_host_reservation_identifiers = 367,    // host_reservation_identifiers
+        S_368_49 = 368,                          // $@49
+        S_host_reservation_identifiers_list = 369, // host_reservation_identifiers_list
+        S_host_reservation_identifier = 370,     // host_reservation_identifier
+        S_duid_id = 371,                         // duid_id
+        S_hw_address_id = 372,                   // hw_address_id
+        S_circuit_id = 373,                      // circuit_id
+        S_client_id = 374,                       // client_id
+        S_flex_id = 375,                         // flex_id
+        S_dhcp_multi_threading = 376,            // dhcp_multi_threading
+        S_377_50 = 377,                          // $@50
+        S_multi_threading_params = 378,          // multi_threading_params
+        S_multi_threading_param = 379,           // multi_threading_param
+        S_enable_multi_threading = 380,          // enable_multi_threading
+        S_thread_pool_size = 381,                // thread_pool_size
+        S_packet_queue_size = 382,               // packet_queue_size
+        S_hooks_libraries = 383,                 // hooks_libraries
+        S_384_51 = 384,                          // $@51
+        S_hooks_libraries_list = 385,            // hooks_libraries_list
+        S_not_empty_hooks_libraries_list = 386,  // not_empty_hooks_libraries_list
+        S_hooks_library = 387,                   // hooks_library
+        S_388_52 = 388,                          // $@52
+        S_sub_hooks_library = 389,               // sub_hooks_library
+        S_390_53 = 390,                          // $@53
+        S_hooks_params = 391,                    // hooks_params
+        S_hooks_param = 392,                     // hooks_param
+        S_library = 393,                         // library
+        S_394_54 = 394,                          // $@54
+        S_parameters = 395,                      // parameters
+        S_396_55 = 396,                          // $@55
+        S_expired_leases_processing = 397,       // expired_leases_processing
+        S_398_56 = 398,                          // $@56
+        S_expired_leases_params = 399,           // expired_leases_params
+        S_expired_leases_param = 400,            // expired_leases_param
+        S_reclaim_timer_wait_time = 401,         // reclaim_timer_wait_time
+        S_flush_reclaimed_timer_wait_time = 402, // flush_reclaimed_timer_wait_time
+        S_hold_reclaimed_time = 403,             // hold_reclaimed_time
+        S_max_reclaim_leases = 404,              // max_reclaim_leases
+        S_max_reclaim_time = 405,                // max_reclaim_time
+        S_unwarned_reclaim_cycles = 406,         // unwarned_reclaim_cycles
+        S_subnet4_list = 407,                    // subnet4_list
+        S_408_57 = 408,                          // $@57
+        S_subnet4_list_content = 409,            // subnet4_list_content
+        S_not_empty_subnet4_list = 410,          // not_empty_subnet4_list
+        S_subnet4 = 411,                         // subnet4
+        S_412_58 = 412,                          // $@58
+        S_sub_subnet4 = 413,                     // sub_subnet4
+        S_414_59 = 414,                          // $@59
+        S_subnet4_params = 415,                  // subnet4_params
+        S_subnet4_param = 416,                   // subnet4_param
+        S_subnet = 417,                          // subnet
+        S_418_60 = 418,                          // $@60
+        S_subnet_4o6_interface = 419,            // subnet_4o6_interface
+        S_420_61 = 420,                          // $@61
+        S_subnet_4o6_interface_id = 421,         // subnet_4o6_interface_id
+        S_422_62 = 422,                          // $@62
+        S_subnet_4o6_subnet = 423,               // subnet_4o6_subnet
+        S_424_63 = 424,                          // $@63
+        S_interface = 425,                       // interface
+        S_426_64 = 426,                          // $@64
+        S_client_class = 427,                    // client_class
+        S_428_65 = 428,                          // $@65
+        S_require_client_classes = 429,          // require_client_classes
+        S_430_66 = 430,                          // $@66
+        S_reservations_global = 431,             // reservations_global
+        S_reservations_in_subnet = 432,          // reservations_in_subnet
+        S_reservations_out_of_pool = 433,        // reservations_out_of_pool
+        S_reservation_mode = 434,                // reservation_mode
+        S_435_67 = 435,                          // $@67
+        S_hr_mode = 436,                         // hr_mode
+        S_id = 437,                              // id
+        S_shared_networks = 438,                 // shared_networks
+        S_439_68 = 439,                          // $@68
+        S_shared_networks_content = 440,         // shared_networks_content
+        S_shared_networks_list = 441,            // shared_networks_list
+        S_shared_network = 442,                  // shared_network
+        S_443_69 = 443,                          // $@69
+        S_shared_network_params = 444,           // shared_network_params
+        S_shared_network_param = 445,            // shared_network_param
+        S_option_def_list = 446,                 // option_def_list
+        S_447_70 = 447,                          // $@70
+        S_sub_option_def_list = 448,             // sub_option_def_list
+        S_449_71 = 449,                          // $@71
+        S_option_def_list_content = 450,         // option_def_list_content
+        S_not_empty_option_def_list = 451,       // not_empty_option_def_list
+        S_option_def_entry = 452,                // option_def_entry
+        S_453_72 = 453,                          // $@72
+        S_sub_option_def = 454,                  // sub_option_def
+        S_455_73 = 455,                          // $@73
+        S_option_def_params = 456,               // option_def_params
+        S_not_empty_option_def_params = 457,     // not_empty_option_def_params
+        S_option_def_param = 458,                // option_def_param
+        S_option_def_name = 459,                 // option_def_name
+        S_code = 460,                            // code
+        S_option_def_code = 461,                 // option_def_code
+        S_option_def_type = 462,                 // option_def_type
+        S_463_74 = 463,                          // $@74
+        S_option_def_record_types = 464,         // option_def_record_types
+        S_465_75 = 465,                          // $@75
+        S_space = 466,                           // space
+        S_467_76 = 467,                          // $@76
+        S_option_def_space = 468,                // option_def_space
+        S_option_def_encapsulate = 469,          // option_def_encapsulate
+        S_470_77 = 470,                          // $@77
+        S_option_def_array = 471,                // option_def_array
+        S_option_data_list = 472,                // option_data_list
+        S_473_78 = 473,                          // $@78
+        S_option_data_list_content = 474,        // option_data_list_content
+        S_not_empty_option_data_list = 475,      // not_empty_option_data_list
+        S_option_data_entry = 476,               // option_data_entry
+        S_477_79 = 477,                          // $@79
+        S_sub_option_data = 478,                 // sub_option_data
+        S_479_80 = 479,                          // $@80
+        S_option_data_params = 480,              // option_data_params
+        S_not_empty_option_data_params = 481,    // not_empty_option_data_params
+        S_option_data_param = 482,               // option_data_param
+        S_option_data_name = 483,                // option_data_name
+        S_option_data_data = 484,                // option_data_data
+        S_485_81 = 485,                          // $@81
+        S_option_data_code = 486,                // option_data_code
+        S_option_data_space = 487,               // option_data_space
+        S_option_data_csv_format = 488,          // option_data_csv_format
+        S_option_data_always_send = 489,         // option_data_always_send
+        S_option_data_never_send = 490,          // option_data_never_send
+        S_pools_list = 491,                      // pools_list
+        S_492_82 = 492,                          // $@82
+        S_pools_list_content = 493,              // pools_list_content
+        S_not_empty_pools_list = 494,            // not_empty_pools_list
+        S_pool_list_entry = 495,                 // pool_list_entry
+        S_496_83 = 496,                          // $@83
+        S_sub_pool4 = 497,                       // sub_pool4
+        S_498_84 = 498,                          // $@84
+        S_pool_params = 499,                     // pool_params
+        S_pool_param = 500,                      // pool_param
+        S_pool_entry = 501,                      // pool_entry
+        S_502_85 = 502,                          // $@85
+        S_user_context = 503,                    // user_context
+        S_504_86 = 504,                          // $@86
+        S_comment = 505,                         // comment
+        S_506_87 = 506,                          // $@87
+        S_reservations = 507,                    // reservations
+        S_508_88 = 508,                          // $@88
+        S_reservations_list = 509,               // reservations_list
+        S_not_empty_reservations_list = 510,     // not_empty_reservations_list
+        S_reservation = 511,                     // reservation
+        S_512_89 = 512,                          // $@89
+        S_sub_reservation = 513,                 // sub_reservation
+        S_514_90 = 514,                          // $@90
+        S_reservation_params = 515,              // reservation_params
+        S_not_empty_reservation_params = 516,    // not_empty_reservation_params
+        S_reservation_param = 517,               // reservation_param
+        S_next_server = 518,                     // next_server
+        S_519_91 = 519,                          // $@91
+        S_server_hostname = 520,                 // server_hostname
+        S_521_92 = 521,                          // $@92
+        S_boot_file_name = 522,                  // boot_file_name
+        S_523_93 = 523,                          // $@93
+        S_ip_address = 524,                      // ip_address
+        S_525_94 = 525,                          // $@94
+        S_ip_addresses = 526,                    // ip_addresses
+        S_527_95 = 527,                          // $@95
+        S_duid = 528,                            // duid
+        S_529_96 = 529,                          // $@96
+        S_hw_address = 530,                      // hw_address
+        S_531_97 = 531,                          // $@97
+        S_client_id_value = 532,                 // client_id_value
+        S_533_98 = 533,                          // $@98
+        S_circuit_id_value = 534,                // circuit_id_value
+        S_535_99 = 535,                          // $@99
+        S_flex_id_value = 536,                   // flex_id_value
+        S_537_100 = 537,                         // $@100
+        S_hostname = 538,                        // hostname
+        S_539_101 = 539,                         // $@101
+        S_reservation_client_classes = 540,      // reservation_client_classes
+        S_541_102 = 541,                         // $@102
+        S_relay = 542,                           // relay
+        S_543_103 = 543,                         // $@103
+        S_relay_map = 544,                       // relay_map
+        S_client_classes = 545,                  // client_classes
+        S_546_104 = 546,                         // $@104
+        S_client_classes_list = 547,             // client_classes_list
+        S_client_class_entry = 548,              // client_class_entry
+        S_549_105 = 549,                         // $@105
+        S_client_class_params = 550,             // client_class_params
+        S_not_empty_client_class_params = 551,   // not_empty_client_class_params
+        S_client_class_param = 552,              // client_class_param
+        S_client_class_name = 553,               // client_class_name
+        S_client_class_test = 554,               // client_class_test
+        S_555_106 = 555,                         // $@106
+        S_client_class_template_test = 556,      // client_class_template_test
+        S_557_107 = 557,                         // $@107
+        S_only_if_required = 558,                // only_if_required
+        S_dhcp4o6_port = 559,                    // dhcp4o6_port
+        S_control_socket = 560,                  // control_socket
+        S_561_108 = 561,                         // $@108
+        S_control_socket_params = 562,           // control_socket_params
+        S_control_socket_param = 563,            // control_socket_param
+        S_control_socket_type = 564,             // control_socket_type
+        S_565_109 = 565,                         // $@109
+        S_control_socket_name = 566,             // control_socket_name
+        S_567_110 = 567,                         // $@110
+        S_dhcp_queue_control = 568,              // dhcp_queue_control
+        S_569_111 = 569,                         // $@111
+        S_queue_control_params = 570,            // queue_control_params
+        S_queue_control_param = 571,             // queue_control_param
+        S_enable_queue = 572,                    // enable_queue
+        S_queue_type = 573,                      // queue_type
+        S_574_112 = 574,                         // $@112
+        S_capacity = 575,                        // capacity
+        S_arbitrary_map_entry = 576,             // arbitrary_map_entry
+        S_577_113 = 577,                         // $@113
+        S_dhcp_ddns = 578,                       // dhcp_ddns
+        S_579_114 = 579,                         // $@114
+        S_sub_dhcp_ddns = 580,                   // sub_dhcp_ddns
+        S_581_115 = 581,                         // $@115
+        S_dhcp_ddns_params = 582,                // dhcp_ddns_params
+        S_dhcp_ddns_param = 583,                 // dhcp_ddns_param
+        S_enable_updates = 584,                  // enable_updates
+        S_server_ip = 585,                       // server_ip
+        S_586_116 = 586,                         // $@116
+        S_server_port = 587,                     // server_port
+        S_sender_ip = 588,                       // sender_ip
+        S_589_117 = 589,                         // $@117
+        S_sender_port = 590,                     // sender_port
+        S_max_queue_size = 591,                  // max_queue_size
+        S_ncr_protocol = 592,                    // ncr_protocol
+        S_593_118 = 593,                         // $@118
+        S_ncr_protocol_value = 594,              // ncr_protocol_value
+        S_ncr_format = 595,                      // ncr_format
+        S_596_119 = 596,                         // $@119
+        S_dep_qualifying_suffix = 597,           // dep_qualifying_suffix
+        S_598_120 = 598,                         // $@120
+        S_dep_override_no_update = 599,          // dep_override_no_update
+        S_dep_override_client_update = 600,      // dep_override_client_update
+        S_dep_replace_client_name = 601,         // dep_replace_client_name
+        S_602_121 = 602,                         // $@121
+        S_dep_generated_prefix = 603,            // dep_generated_prefix
+        S_604_122 = 604,                         // $@122
+        S_dep_hostname_char_set = 605,           // dep_hostname_char_set
+        S_606_123 = 606,                         // $@123
+        S_dep_hostname_char_replacement = 607,   // dep_hostname_char_replacement
+        S_608_124 = 608,                         // $@124
+        S_config_control = 609,                  // config_control
+        S_610_125 = 610,                         // $@125
+        S_sub_config_control = 611,              // sub_config_control
+        S_612_126 = 612,                         // $@126
+        S_config_control_params = 613,           // config_control_params
+        S_config_control_param = 614,            // config_control_param
+        S_config_databases = 615,                // config_databases
+        S_616_127 = 616,                         // $@127
+        S_config_fetch_wait_time = 617,          // config_fetch_wait_time
+        S_loggers = 618,                         // loggers
+        S_619_128 = 619,                         // $@128
+        S_loggers_entries = 620,                 // loggers_entries
+        S_logger_entry = 621,                    // logger_entry
+        S_622_129 = 622,                         // $@129
+        S_logger_params = 623,                   // logger_params
+        S_logger_param = 624,                    // logger_param
+        S_debuglevel = 625,                      // debuglevel
+        S_severity = 626,                        // severity
+        S_627_130 = 627,                         // $@130
+        S_output_options_list = 628,             // output_options_list
+        S_629_131 = 629,                         // $@131
+        S_output_options_list_content = 630,     // output_options_list_content
+        S_output_entry = 631,                    // output_entry
+        S_632_132 = 632,                         // $@132
+        S_output_params_list = 633,              // output_params_list
+        S_output_params = 634,                   // output_params
+        S_output = 635,                          // output
+        S_636_133 = 636,                         // $@133
+        S_flush = 637,                           // flush
+        S_maxsize = 638,                         // maxsize
+        S_maxver = 639,                          // maxver
+        S_pattern = 640,                         // pattern
+        S_641_134 = 641,                         // $@134
+        S_compatibility = 642,                   // compatibility
+        S_643_135 = 643,                         // $@135
+        S_compatibility_params = 644,            // compatibility_params
+        S_compatibility_param = 645,             // compatibility_param
+        S_lenient_option_parsing = 646,          // lenient_option_parsing
+        S_647_ignore_rai_link_selection = 647,   // ignore-rai-link-selection
+        S_exclude_first_last_24 = 648            // exclude_first_last_24
       };
     };
 
@@ -4736,6 +4739,21 @@ switch (yykind)
         return symbol_type (token::TOKEN_IGNORE_RAI_LINK_SEL, l);
       }
 #endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_EXCLUDE_FIRST_LAST_24 (location_type l)
+      {
+        return symbol_type (token::TOKEN_EXCLUDE_FIRST_LAST_24, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_EXCLUDE_FIRST_LAST_24 (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_EXCLUDE_FIRST_LAST_24, l);
+      }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -5321,8 +5339,8 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 1473,     ///< Last index in yytable_.
-      yynnts_ = 433,  ///< Number of nonterminal symbols.
+      yylast_ = 1306,     ///< Last index in yytable_.
+      yynnts_ = 434,  ///< Number of nonterminal symbols.
       yyfinal_ = 28 ///< Termination state number.
     };
 
@@ -5388,10 +5406,10 @@ switch (yykind)
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213
+     205,   206,   207,   208,   209,   210,   211,   212,   213,   214
     };
     // Last valid token kind.
-    const int code_max = 468;
+    const int code_max = 469;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
@@ -5564,7 +5582,7 @@ switch (yykind)
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 5568 "dhcp4_parser.h"
+#line 5586 "dhcp4_parser.h"
 
 
 
index 4c71c8d1fc8ac51e4ac388ad622d6e05743b0a2e..ff19102db9bc5cfb85d440e4baff0e2b982f690e 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202303061636
+// Generated 202303131406
 // A Bison parser, made by GNU Bison 3.8.2.
 
 // Locations for Bison parsers in C++
index 960bb92dd5ef5fe53b7a4024352ec5704c3db91f..2b2df149d8af0dd9fbd2ae8b862a172edd2ef0eb 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202303061636
+// Generated 202303131406
 // A Bison parser, made by GNU Bison 3.8.2.
 
 // Locations for Bison parsers in C++