]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#665,!460] Implemented support in kea-dhcp6
authorThomas Markwalder <tmark@isc.org>
Thu, 8 Aug 2019 17:34:05 +0000 (13:34 -0400)
committerTomek Mrugalski <tomasz@isc.org>
Wed, 14 Aug 2019 08:57:56 +0000 (10:57 +0200)
doc/examples/kea6/advanced.json
doc/examples/kea6/all-keys-current.json

src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.yy

src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/location.hh
src/bin/dhcp6/position.hh
src/bin/dhcp6/stack.hh

doc/examples/kea6/advanced.json
doc/examples/kea6/all-keys-current.json
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/location.hh
src/bin/dhcp6/position.hh
src/bin/dhcp6/stack.hh

index b1746bc1958b6ff57b4ebacc7e58c3cb5828c6ef..1830f32d620d28a544958aa3256e96798e21d65d 100644 (file)
                     // kept.
                     "flush": true,
                     "maxsize": 204800,
-                    "maxver": 4
+                    "maxver": 4,
+                    // We use pattern to specify custom log message layout
+                    "pattern": "%d{%y.%m.%d %H:%M:%S.%q} %-5p [%c/%i] %m\n"
                 }
             ],
             "debuglevel": 0,
index 9e38763ab116164227c2e13e384ed40325ca7ad1..acadb2a3e05d4837b2294abe4ff0042546cdabf1 100644 (file)
                         "maxver": 1,
 
                         // Specifies logging destination.
-                        "output": "stdout"
+                        "output": "stdout",
+
+                        // Specifies log entry content
+                        "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p [%c/%i] %m\n"
                     }
                 ],
 
index d58e3cd43ef09bac4e1dc15445c4e06514354713..d766259e7c194ca8f0ce32fda5280646aa2b7475 100644 (file)
@@ -1,6 +1,6 @@
-#line 1 "dhcp6_lexer.cc"
+#line 2 "dhcp6_lexer.cc"
 
-#line 3 "dhcp6_lexer.cc"
+#line 4 "dhcp6_lexer.cc"
 
 #define  YY_INT_ALIGNED short int
 
@@ -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 190
-#define YY_END_OF_BUFFER 191
+#define YY_NUM_RULES 191
+#define YY_END_OF_BUFFER 192
 /* 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[1615] =
+static const flex_int16_t yy_accept[1621] =
     {   0,
-      183,  183,    0,    0,    0,    0,    0,    0,    0,    0,
-      191,  189,   10,   11,  189,    1,  183,  180,  183,  183,
-      189,  182,  181,  189,  189,  189,  189,  189,  176,  177,
-      189,  189,  189,  178,  179,    5,    5,    5,  189,  189,
-      189,   10,   11,    0,    0,  172,    0,    0,    0,    0,
+      184,  184,    0,    0,    0,    0,    0,    0,    0,    0,
+      192,  190,   10,   11,  190,    1,  184,  181,  184,  184,
+      190,  183,  182,  190,  190,  190,  190,  190,  177,  178,
+      190,  190,  190,  179,  180,    5,    5,    5,  190,  190,
+      190,   10,   11,    0,    0,  173,    0,    0,    0,    0,
         0,    0,    0,    0,    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,  183,
-      183,    0,  182,  183,    3,    2,    6,    0,  183,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    1,  184,
+      184,    0,  183,  184,    3,    2,    6,    0,  184,    0,
         0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
 
-      173,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  175,    0,    0,    0,
+      174,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  176,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -722,9 +722,9 @@ static const flex_int16_t yy_accept[1615] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    2,    0,    0,    0,    0,    0,    0,    0,    8,
-        0,    0,    0,    0,  150,    0,    0,  151,    0,    0,
+        0,    0,    0,    0,  151,    0,    0,  152,    0,    0,
 
-        0,    0,    0,    0,    0,    0,  174,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  175,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,  102,
@@ -733,153 +733,153 @@ static const flex_int16_t yy_accept[1615] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  188,  186,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  189,
 
-        0,  185,  184,    0,    0,    0,    0,    0,    0,    0,
-      149,    0,    0,   28,    0,   27,    0,    0,  109,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   55,
+      187,    0,  186,  185,    0,    0,    0,    0,    0,    0,
+        0,  150,    0,    0,   28,    0,   27,    0,    0,  109,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       55,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    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,  106,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  187,  184,    0,    0,    0,    0,
-        0,    0,    0,    0,   29,    0,    0,   31,    0,    0,
-        0,    0,    0,    0,  110,    0,    0,    0,    0,    0,
-        0,    0,   87,    0,    0,    0,    0,    0,    0,    0,
-      134,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   58,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  188,  185,    0,    0,
+        0,    0,    0,    0,    0,    0,   29,    0,    0,   31,
+        0,    0,    0,    0,    0,    0,  110,    0,    0,    0,
+        0,    0,    0,    0,   87,    0,    0,    0,    0,    0,
+        0,    0,  135,    0,    0,    0,    0,    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,   86,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   86,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-       96,    0,   59,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   96,    0,   59,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  129,  154,   51,    0,   56,    0,    0,
-        0,    0,    0,    0,  169,   37,    0,   34,    0,   33,
-        0,    0,    0,  142,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  130,  155,   51,    0,
+       56,    0,    0,    0,    0,    0,    0,  170,   37,    0,
+       34,    0,   33,    0,    0,    0,  143,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  121,    0,    0,
-        0,    0,    0,    0,    0,    0,  153,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,   53,    0,    0,   32,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   89,
+      121,    0,    0,    0,    0,    0,    0,    0,    0,  154,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  143,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  138,    0,    0,    0,    0,
-        0,    0,    0,    0,    7,   35,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   53,
+        0,    0,   32,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   89,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  144,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  139,
+        0,    0,    0,    0,    0,    0,    0,    0,    7,   35,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  108,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  108,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  123,
-        0,    0,    0,    0,    0,    0,    0,    0,  120,    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,   99,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  117,    0,    0,    0,    0,    0,   98,    0,
+        0,    0,    0,  123,    0,    0,    0,    0,    0,    0,
+        0,    0,  120,    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,   99,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  117,    0,    0,
+        0,    0,    0,   98,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      137,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  138,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,  147,  118,    0,    0,
-        0,    0,    0,    0,  122,   52,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   60,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  148,  118,    0,    0,    0,    0,    0,    0,  122,
+       52,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  124,    0,   60,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   82,    0,
-        0,    0,    0,    0,    0,    0,    0,  170,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  105,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  136,
-
-        0,    0,    0,    0,    0,    0,   63,    0,    0,    0,
+        0,    0,    0,    0,   82,    0,    0,    0,    0,    0,
+        0,    0,    0,  171,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   57,   90,    0,
-        0,    0,  133,    0,    0,    0,   50,    0,    0,    0,
+        0,    0,    0,    0,  105,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,  137,    0,    0,    0,    0,
+        0,    0,   63,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  125,    0,    0,    0,    0,
+        0,    0,    0,   57,   90,    0,    0,    0,  134,    0,
+        0,    0,   50,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  126,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  168,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      169,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,  100,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    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,   41,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   16,    0,    0,  148,   14,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   41,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   16,
+        0,    0,  149,   14,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  140,
+        0,  125,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  136,  153,
+
+        0,   40,    0,  145,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   20,    0,    0,    0,
+       84,    0,    0,    0,    0,  147,   54,    0,   92,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  139,    0,  124,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   81,    0,    0,    0,  115,
+      116,    0,    0,    0,    0,    0,    0,    0,    0,   88,
+        0,    0,    0,    0,    0,    0,   64,    0,    0,    0,
+        0,    0,    0,    0,    0,  142,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  135,  152,    0,   40,    0,  144,    0,    0,
+        0,    0,  111,    0,    0,    0,    0,    0,    0,    0,
 
+        0,    0,   85,  107,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   78,    0,    0,    0,    0,
+        0,    0,   17,    0,   15,    0,  167,  166,    0,   69,
+        0,    0,    0,    0,    0,   30,    0,  129,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  164,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       20,    0,    0,    0,   84,    0,    0,    0,    0,  146,
-       54,    0,   92,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   81,
-        0,    0,    0,  115,  116,    0,    0,    0,    0,    0,
-        0,    0,    0,   88,    0,    0,    0,    0,    0,    0,
-       64,    0,    0,    0,    0,    0,    0,    0,    0,  141,
+        0,  101,    0,  133,   43,    0,   61,    0,    0,    0,
+        0,    0,    0,    0,    0,   19,    0,    0,    0,    0,
+        0,    0,  103,   79,    0,    0,  141,    0,    0,    0,
+        0,    0,  132,    0,    0,    0,    0,    0,   97,    0,
+
+      172,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   95,    0,    0,  156,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  111,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   85,  107,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   78,
-        0,    0,    0,    0,    0,    0,   17,    0,   15,    0,
-      166,  165,    0,   69,    0,    0,    0,    0,    0,   30,
-        0,  128,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  163,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  101,    0,  132,   43,    0,
-       61,    0,    0,    0,    0,    0,    0,    0,    0,   19,
-        0,    0,    0,    0,    0,    0,  103,   79,    0,    0,
-      140,    0,    0,    0,    0,    0,  131,    0,    0,    0,
-        0,    0,   97,    0,  171,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,   95,    0,    0,  155,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   42,    0,
+        0,   68,    0,    0,    0,    0,  127,   47,    0,    0,
+        0,   70,  165,   38,    0,    0,   12,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   45,    0,    0,   44,
+        0,   18,    0,    0,    0,    0,    0,    0,    0,  119,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,   75,    0,    0,    0,    0,   62,
+        0,    0,   93,    0,    0,    0,    0,    0,  146,    0,
+        0,    0,   46,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   42,    0,    0,   68,    0,    0,    0,    0,
-      126,   47,    0,    0,    0,   70,  164,   38,    0,    0,
-       12,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       45,    0,    0,   44,    0,   18,    0,    0,    0,    0,
-        0,    0,    0,  119,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   75,    0,
-
-        0,    0,    0,   62,    0,    0,   93,    0,    0,    0,
-        0,    0,  145,    0,    0,    0,   46,    0,    0,    0,
+       67,    0,    0,    0,   83,    0,   36,    0,   48,    0,
+        0,    0,    0,    0,    0,   24,    0,    0,    0,    0,
+        0,    0,    0,  162,    0,    0,    0,    0,  131,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  104,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   67,    0,    0,    0,   83,    0,
-       36,    0,   48,    0,    0,    0,    0,    0,    0,   24,
-        0,    0,    0,    0,    0,    0,    0,  161,    0,    0,
-        0,    0,  130,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  104,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   25,   39,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   13,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,  167,    0,    0,
-        0,    0,    0,    0,    0,  160,    0,   77,    0,   76,
-        0,   21,   72,    0,    0,    0,    0,    0,   65,    0,
-      114,    0,    0,   94,    0,    0,  159,    0,    0,    0,
-       71,    0,    0,    0,   66,    0,   23,    0,    0,    0,
+        0,   25,   39,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,   13,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  168,    0,    0,    0,    0,    0,    0,
+        0,  161,    0,   77,    0,   76,    0,   21,   72,    0,
+        0,    0,    0,    0,   65,    0,  114,    0,    0,   94,
+        0,    0,  160,    0,    0,    0,   71,    0,    0,    0,
+       66,    0,   23,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   49,    0,    0,    0,    0,
-        0,   74,   73,   22,    0,  112,  127,    0,    0,    0,
-        0,    0,    0,  157,  162,   80,    0,    0,    0,    0,
+        0,   49,    0,    0,    0,    0,    0,   74,   73,   22,
+        0,  112,  128,    0,    0,    0,    0,    0,    0,  158,
 
-      156,    0,    0,   26,    0,    0,    0,    0,    0,  113,
-        0,    0,  158,    0
+      163,   80,    0,    0,    0,    0,  157,    0,    0,   26,
+        0,    0,    0,    0,    0,  113,    0,    0,  159,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -926,390 +926,392 @@ static const YY_CHAR yy_meta[74] =
         3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[1627] =
+static const flex_int16_t yy_base[1633] =
     {   0,
         0,   72,   21,   31,   43,   51,   54,   60,   91,   99,
-     2016, 2017,   34, 2012,  145,    0,  207, 2017,  214,  221,
-       13,  228, 2017, 1992,  118,   25,    2,    6, 2017, 2017,
-       73,   11,   17, 2017, 2017, 2017,  104, 2000, 1953,    0,
-     1990,  108, 2007,   24,  256, 2017,   67, 1949, 1955, 1975,
+     2022, 2023,   34, 2018,  145,    0,  207, 2023,  214,  221,
+       13,  228, 2023, 1998,  118,   25,    2,    6, 2023, 2023,
+       73,   11,   17, 2023, 2023, 2023,  104, 2006, 1959,    0,
+     1996,  108, 2013,   24,  256, 2023,   67, 1955, 1961, 1981,
        84,   75,  189,   88,  226,   91,   89,  284,  196,  206,
-      219,  191,  210,  197,   60,  242, 1956,  278,  287,  298,
-      294,  313, 1939,  212,  318,  350,  328, 1958,    0,  379,
-      400,  417,  424,  429, 2017,    0, 2017,  393,  407,  269,
-      299,  301,  406,  418,  304, 2017, 1955, 1996, 2017,  293,
-
-     2017,  442,  312, 1942, 1952, 1993,  421,   10,  345, 1946,
-      319,  338,  336,  369,  248, 1991,    0,  495,  413, 1933,
-     1938, 1940,  332, 1936, 1925, 1926,  410, 1942, 1925, 1934,
-      418,  340,  226, 1928, 1926,  405, 1915, 1973,  448, 1918,
-     1971, 1911, 1934, 1931, 1931, 1925,  411, 1918, 1916, 1910,
-     1915, 1909,  421, 1920, 1913, 1904, 1903, 1917,  408, 1955,
-     1902,  413, 1914, 1917, 1901,  491, 1902,  423, 1914, 1911,
-     1912, 1910, 1945, 1944,  434, 1890, 1895, 1891, 1883, 1900,
-     1892,    0,  451,  460,  434,  460,  468,  476, 1891, 2017,
-        0,  481, 1882, 1885, 2017,  464,  474, 2017, 1939, 1892,
-
-      504, 1937,  507, 1936,  497, 1935, 2017,  544, 1934,  517,
-     1893, 1890, 1887, 1886, 1877,  514, 1928, 1922, 1886, 1865,
-     1873, 1879, 1867, 1881, 1877, 1878, 1878, 1873, 1865, 1867,
-     1851, 1855, 1868, 1870, 1867, 1859, 1849, 1852, 1866, 2017,
-     1852, 1860, 1863, 1844, 1843, 1895, 1842, 1852, 1892,  519,
-     1851, 1890, 1838, 1849, 1887,  524, 1891, 1826, 1841,  358,
-     1831, 1847, 1828, 1830, 1826, 1832, 1823, 1822, 1835, 1828,
-     1830, 1834, 1833, 1827,  220, 1834, 1829, 1821, 1811, 1826,
-     1821, 1825,  482, 1823, 1809, 1815, 1822, 1810, 1807, 1806,
-      486, 1801, 1815, 1814, 1817, 1799, 1807,  537, 2017, 2017,
-
-      539, 2017, 2017, 1794,    0,  506, 1796,  579,  548, 1852,
-     2017, 1803,  545, 2017, 1850, 2017, 1844,  595, 2017,  536,
-     1784, 1787, 1793, 1845, 1800, 1795, 1798, 1793,   80, 2017,
-     1795,  593, 1793, 1790, 1791,  323, 1795, 1835, 1783, 1778,
-     1775, 1771, 1773, 1824, 1781, 1770, 1786, 1820, 1766,  596,
-     1779, 1779, 1762, 1763, 1776, 1763, 1773, 1768, 1775, 1770,
-     1755,  563, 1764, 1767, 1762,  322, 1758, 1808,  566,  553,
-     2017, 1802, 1752, 1751, 1744, 1746, 1750, 1739, 1746, 1751,
-      575, 1798, 1751,  578, 1748, 1752, 1750, 1739, 1739, 1751,
-      570, 1726, 1727, 1748,  581, 1730, 1727, 1741, 1744, 1739,
-
-     1725, 1737, 1736, 1735, 1734, 1733, 1732,  476, 1775, 1774,
-     1773, 1715,  641, 1728, 2017, 2017, 1727,    0,  598, 1715,
-     1768, 1767, 1723, 1765, 2017, 1711, 1763, 2017,  604,  652,
-      617, 1762, 1710, 1701, 2017, 1706, 1712, 1715, 1698, 1713,
-     1700, 1699, 2017, 1709, 1700, 1697, 1709,  552, 1694, 1696,
-     2017, 1702, 1687, 1689, 1700, 1698, 1693,  643, 1700, 1688,
-     1681, 1732, 2017, 1679, 1695, 1729, 1733, 1689, 1683, 1685,
-     1686, 1688, 1722, 1673, 1668, 1667, 1669, 1665, 1661, 1676,
-     1679, 1653, 1660, 1665, 1658, 1674, 1713, 2017, 1658, 1654,
-     1710, 1661, 1655, 1662, 1647, 1657, 1660, 1649, 1648, 1643,
-
-     2017, 1700, 2017, 1642, 1641, 1634, 1651, 1690, 1635, 1640,
-     1649, 1643, 1637, 1646,  645, 1683, 1645, 1628, 1628, 1623,
-     1619, 1625, 1630, 1623, 1631, 1635, 1618, 1676, 1616, 1617,
-     1616, 1628, 1617, 2017, 2017, 2017, 1617, 2017, 1627, 1663,
-     1623,    0, 1666, 1614, 2017, 2017, 1611, 2017, 1617, 2017,
-      604,  622,  676, 2017, 1622, 1656, 1601, 1654, 1599, 1598,
-     1597, 1604, 1597, 1605, 1608, 1607, 1591, 1606, 1588, 1635,
-     1602, 1640, 1584, 1586, 1598, 1598, 1597, 2017, 1582, 1579,
-     1637, 1592, 1584, 1590, 1581, 1589, 2017, 1574, 1585, 1589,
-     1571, 1585,  536, 1567, 1561, 1566, 1563, 1578, 1577, 1578,
-
-     1568, 1574, 1617, 1572, 1571, 1563, 2017, 1556, 1558, 2017,
-     1566, 1605, 1604,   16, 1565, 1548, 1549, 1554, 1545, 2017,
-     1559, 1545,  677, 1537, 1558, 1555, 1547, 1592, 1544, 1551,
-     1589, 2017, 1535, 1533, 1547, 1531, 1545, 1548, 1582, 1581,
-     1580, 1579, 1524, 1577, 1576, 2017,  597, 1538, 1537, 1534,
-     1534, 1532, 1521, 1523, 2017, 2017, 1568, 1514, 1571,  621,
-      621, 1512, 1510, 1526, 1567,  641, 1561, 1521, 1559, 1558,
-     1510, 1504, 1499, 1554, 1514, 1504, 1512, 1550, 1511, 1493,
-     1501, 1503, 1507, 1544, 1548, 1503, 1502, 2017, 1503, 1496,
-     1485, 1498, 1501, 1496, 1491, 1496, 1493, 1492, 1488, 1494,
-
-     1489, 1532, 1531, 1473, 1484, 1468,  634, 1479, 1526, 2017,
-     1525, 1479, 1475, 1470, 1462, 1515, 1476, 1463, 2017, 1463,
-     1472, 1471, 1471, 1455, 1512,   77,  245, 2017,  348,  430,
-      460,  456,  534,  530,  575,  639,  611,  596,  606,  619,
-      663,  673,  682,  630,  648,  643,  657,  652,  637,  649,
-      650, 2017,  704,  661,  662,  653,  666,  669,  660,  666,
-      675,  716, 2017,  712,  688,  675,  676,  671, 2017,  669,
-      684,  681,  667,  674,  673,  671,  690,  687,  688,  678,
-      691,  677,  676,  682,  738,  684,  700,  683,  737,  692,
-     2017,  702,  702,  696,  707,  705,  750,  692,  694,  709,
-
-      710,  698,  757,  714,  700,  703, 2017, 2017,  719,  718,
-      719,  724,  712,  723, 2017, 2017,  723,  725,  729,  716,
-      714,  732,  719,  719,  770,  720,  778,  779, 2017,  724,
-      738,  738,  783,  731,  733,  727,  787,  740,  730,  731,
-      727,  737,  741,  752,  736,  754,  749,  751,  744,  746,
-      747,  759,  749,  764,  805,  762,  767,  744, 2017,  756,
-      757,  771,  761,  808,  756,  771,  771, 2017,  790,  798,
-      767,  816,  782,  770,  765,  766,  778,  785,  774,  775,
-      771,  789,  781,  776,  829,  835,  792,  783, 2017,  795,
-      780,  796,  786,  799,  793,  841,  807,  791,  792, 2017,
-
-      808,  811,  794,  796,  854,  797, 2017,  814,  817,  797,
-      816,  804,  857,  815,  811,  860,  809,  862,  809,  827,
-      826,  812,  827,  819,  815,  833,  818, 2017, 2017,  826,
-      873,  826, 2017,  834,  829,  882, 2017,  831,  836,  880,
-      832,  833,  845,  839,  843,  841,  839,  850,  895,  839,
-      844,  898,  899,  843,  855, 2017,  843,  851,  849,  846,
-      847,  856,  868,  852,  866,  867,  869,  885,  890,  872,
-      858,  860,  860,  880,  879,  870,  859,  876,  883,  926,
-      868,  928,  875,  879, 2017,  926,  875,  893,  890,  930,
-      879,  897,  898,  884,  892,  901,  883,  898,  905,  947,
-
-      948, 2017,  901,  950,  951,  902,  912,  914,  898,  900,
-      900,  907,  916,  910,  905,  912,  964,  911,  910,  927,
-      968,  918,  922,  920,  918,  973,  974,  924,  976,  972,
-      930, 2017,  935,  928,  919,  938,  932,  927,  937,  934,
-      939,  935,  947, 2017,  931,  933, 2017, 2017,  933,  993,
-      932,  952,  953,  998,  999,  952,  937,  958,  940,  945,
-      952,  985,  976, 1008,  965,  952,  954,  971,  966,  970,
-     1015,  963,  967, 2017,  964, 2017,  978,  976,  979,  963,
-      964, 1024,  977,  982,  969,  980,  973,  979,  975,  993,
-      994,  996, 2017, 2017,  994, 2017,  996, 2017,  981,  982,
-
-     1001,  991, 1043, 1000,  997, 1041, 1005, 1000, 1005, 1002,
-     2017, 1000,  992, 1053, 2017, 1054, 1001, 1008, 1052, 2017,
-     2017, 1010, 2017, 1001, 1001, 1004, 1018, 1023, 1006, 1017,
-     1066, 1023, 1024, 1025, 1065, 1021, 1072, 1025, 1074, 2017,
-     1021, 1076, 1077, 2017, 2017, 1017, 1079, 1038, 1022, 1034,
-     1024, 1054, 1085, 2017, 1042, 1087, 1034, 1049, 1085, 1037,
-     2017, 1033, 1049, 1037, 1055, 1043, 1043, 1098, 1055, 2017,
-     1057, 1056, 1058, 1051, 1060, 1061, 1058, 1048, 1051, 1051,
-     1110, 1057, 1113, 1114, 1057, 1116, 2017, 1074, 1053, 1068,
-     1061, 1076, 1079, 1079, 1125, 1078, 2017, 2017, 1075, 1085,
-
-     1070, 1087, 1073, 1134, 1135, 1079, 1089, 1138, 1095, 2017,
-     1087, 1087, 1089, 1091, 1144, 1087, 2017, 1088, 2017, 1090,
-     2017, 2017, 1104, 2017, 1098, 1150, 1099, 1152, 1132, 2017,
-     1149, 2017, 1097, 1105, 1099, 1096, 1099, 1102, 1102, 1098,
-     1104, 1164, 1112, 2017, 1108, 1167, 1120, 1111, 1126, 1126,
-     1129, 1129, 1126, 1170, 1133, 2017, 1125, 2017, 2017, 1135,
-     2017, 1175, 1137, 1138, 1135, 1179, 1141, 1181, 1143, 2017,
-     1131, 1131, 1137, 1136, 1148, 1148, 2017, 2017, 1189, 1136,
-     2017, 1153, 1138, 1138, 1140, 1146, 2017, 1201, 1143, 1153,
-     1204, 1165, 2017, 1162, 2017, 1181, 1149, 1209, 1210, 1167,
-
-     1172, 1154, 1214, 1215, 1216, 1169, 2017, 1159, 1219, 2017,
-     1157, 1216, 1179, 1175, 1219, 1167, 1172, 1170, 1229, 1185,
-     1231, 1181, 1233, 1195, 1184, 1178, 1179, 1188, 1181, 1197,
-     1242, 1184, 1201, 1186, 1201, 1185, 1243, 1244, 1245, 1192,
-     1247, 1210, 2017, 1210, 1197, 2017, 1208, 1257, 1227, 1211,
-     2017, 2017, 1202, 1213, 1262, 2017, 2017, 2017, 1209, 1207,
-     2017, 1265, 1211, 1262, 1205, 1210, 1271, 1219, 1229, 1230,
-     2017, 1275, 1228, 2017, 1229, 2017, 1220, 1235, 1223, 1233,
-     1234, 1235, 1241, 2017, 1280, 1248, 1241, 1242, 1251, 1233,
-     1239, 1241, 1295, 1254, 1253, 1245, 1299, 1248, 2017, 1301,
-
-     1250, 1303, 1245, 2017, 1252, 1252, 2017, 1256, 1251, 1250,
-     1310, 1263, 2017, 1307, 1258, 1255, 2017, 1269, 1271, 1273,
-     1318, 1271, 1268, 1276, 1270, 1323, 1264, 1266, 1274, 1264,
-     1280, 1281, 1275, 1291, 2017, 1281, 1333, 1292, 2017, 1330,
-     2017, 1292, 2017, 1332, 1333, 1288, 1296, 1287, 1294, 2017,
-     1291, 1296, 1294, 1346, 1347, 1304, 1291, 2017, 1306, 1307,
-     1308, 1309, 2017, 1299, 1311, 1312, 1357, 1299, 1307, 1301,
-     1309, 1322, 2017, 1299, 1322, 1307, 1307, 1312, 1368, 1316,
-     1328, 1319, 1328, 1330, 1334, 2017, 2017, 1316, 1376, 1319,
-     1378, 1320, 1380, 1338, 1382, 1383, 2017, 1379, 1341, 1338,
-
-     1343, 1330, 1389, 1326, 1391, 1344, 1349, 2017, 1394, 1351,
-     1352, 1397, 1354, 1357, 1352, 2017, 1401, 2017, 1354, 2017,
-     1363, 2017, 2017, 1345, 1405, 1352, 1407, 1350, 2017, 1367,
-     2017, 1358, 1354, 2017, 1354, 1356, 2017, 1361, 1371, 1364,
-     2017, 1365, 1359, 1371, 2017, 1367, 2017, 1377, 1371, 1379,
-     1376, 1367, 1421, 1368, 1376, 1385, 1386, 1387, 1380, 1375,
-     1376, 1391, 1436, 1383, 1390, 1377, 1392, 1397, 1442, 1443,
-     1444, 1401, 1446, 1447, 1390, 2017, 1406, 1397, 1411, 1407,
-     1400, 2017, 2017, 2017, 1454, 2017, 2017, 1455, 1456, 1411,
-     1410, 1411, 1401, 2017, 2017, 2017, 1461, 1403, 1419, 1464,
-
-     2017, 1460, 1409, 2017, 1408, 1410, 1421, 1470, 1419, 2017,
-     1428, 1473, 2017, 2017, 1479, 1484, 1489, 1494, 1499, 1504,
-     1509, 1512, 1486, 1491, 1493, 1506
+      219,  191,  210,  197,   60,  242, 1962,  278,  287,  298,
+      294,  313, 1945,  212,  318,  350,  328, 1964,    0,  379,
+      400,  417,  424,  429, 2023,    0, 2023,  393,  407,  269,
+      299,  301,  406,  418,  304, 2023, 1961, 2002, 2023,  293,
+
+     2023,  442,  312, 1948, 1958, 1999,  421,   10,  345, 1952,
+      319,  338,  336,  369,  248, 1997,    0,  495,  413, 1939,
+     1944, 1946,  332, 1942, 1931, 1932,  410, 1948, 1931, 1940,
+      418,  340,  226, 1934, 1932,  405, 1921, 1979,  448, 1924,
+     1977, 1917, 1940, 1937, 1937, 1931,  411, 1924, 1922, 1916,
+     1921, 1915,  421, 1926, 1919, 1910, 1909, 1923,  408, 1961,
+     1908,  427, 1920, 1923, 1907,  491, 1908,  433, 1920, 1917,
+     1918, 1916, 1951, 1950,  434, 1896, 1901, 1897, 1889, 1906,
+     1898,    0,  440,  446,  434,  450,  468,  467, 1897, 2023,
+        0,  483, 1888, 1891, 2023,  490,  465, 2023, 1945, 1898,
+
+      501, 1943,  506, 1942,  498, 1941, 2023,  544, 1940,  517,
+     1899, 1896, 1893, 1892, 1883,  514, 1934, 1928, 1892, 1871,
+     1879, 1885, 1873, 1887, 1883, 1884, 1884, 1879, 1871, 1873,
+     1857, 1861, 1874, 1876, 1873, 1865, 1855, 1858, 1872, 2023,
+     1858, 1866, 1869, 1850, 1849, 1901, 1848, 1858, 1898,  516,
+     1857, 1896, 1844, 1855, 1893,  537, 1897, 1832, 1847,  358,
+     1837, 1853, 1834, 1832, 1835, 1831, 1837, 1828, 1827, 1840,
+     1833, 1835, 1839, 1838, 1832,  220, 1839, 1834, 1826, 1816,
+     1831, 1826, 1830,  480, 1828, 1814, 1820, 1827, 1815, 1812,
+     1811,  525, 1806, 1820, 1819, 1822, 1804, 1812,  539, 2023,
+
+     2023,  547, 2023, 2023, 1799,    0,  534, 1801,  559,  555,
+     1857, 2023, 1808,  546, 2023, 1855, 2023, 1849,  596, 2023,
+      545, 1789, 1792, 1798, 1850, 1805, 1800, 1803, 1798,   80,
+     2023, 1800,  590, 1798, 1795, 1796,  323, 1800, 1840, 1788,
+     1783, 1780, 1776, 1778, 1829, 1786, 1775, 1791, 1825, 1771,
+      592, 1784, 1784, 1767, 1768, 1781, 1768, 1778, 1773, 1780,
+     1775, 1760,  564, 1769, 1772, 1767,  322, 1763, 1813,  555,
+      565, 2023, 1807, 1757, 1756, 1749, 1751, 1755, 1744, 1761,
+     1750, 1755,  543, 1802, 1755,  534, 1752, 1756, 1754, 1743,
+     1743, 1755,  570, 1730, 1731, 1752,  580, 1734, 1731, 1745,
+
+     1748, 1743, 1729, 1741, 1740, 1739, 1738, 1737, 1736,  476,
+     1779, 1778, 1777, 1719,  626, 1732, 2023, 2023, 1731,    0,
+      572, 1719, 1772, 1771, 1727, 1769, 2023, 1715, 1767, 2023,
+      606,  654,  599, 1766, 1714, 1705, 2023, 1710, 1716, 1719,
+     1702, 1717, 1704, 1703, 2023, 1713, 1704, 1701, 1713,  590,
+     1698, 1700, 2023, 1706, 1691, 1693, 1704, 1702, 1697,  642,
+     1704, 1692, 1685, 1736, 2023, 1683, 1699, 1733, 1737, 1693,
+     1687, 1689, 1690, 1692, 1726, 1677, 1672, 1671, 1673, 1669,
+     1665, 1680, 1683, 1657, 1664, 1669, 1662, 1678, 1717, 2023,
+     1662, 1658, 1714, 1665, 1659, 1666, 1651, 1661, 1664, 1653,
+
+     1649, 1651, 1646, 2023, 1703, 2023, 1645, 1644, 1637, 1654,
+     1693, 1638, 1643, 1652, 1646, 1640, 1649,  643, 1686, 1648,
+     1631, 1631, 1626, 1622, 1628, 1633, 1626, 1634, 1638, 1621,
+     1679, 1619, 1620, 1619, 1631, 1620, 2023, 2023, 2023, 1620,
+     2023, 1630, 1666, 1626,    0, 1669, 1617, 2023, 2023, 1614,
+     2023, 1620, 2023,  624,  620,  653, 2023, 1625, 1659, 1604,
+     1657, 1602, 1601, 1600, 1607, 1600, 1608, 1611, 1610, 1594,
+     1609, 1591, 1638, 1605, 1643, 1587, 1589, 1601, 1601, 1600,
+     2023, 1585, 1582, 1640, 1595, 1587, 1593, 1584, 1592, 2023,
+     1577, 1588, 1592, 1574, 1588,  467, 1570, 1564, 1569, 1566,
+
+     1581, 1580, 1581, 1571, 1577, 1620, 1575, 1574, 1566, 2023,
+     1559, 1561, 2023, 1569, 1608, 1607,   16, 1568, 1551, 1552,
+     1555, 1556, 1547, 2023, 1561, 1547,  679, 1539, 1560, 1557,
+     1549, 1594, 1546, 1553, 1591, 2023, 1537, 1535, 1549, 1533,
+     1547, 1550, 1584, 1583, 1582, 1581, 1526, 1579, 1578, 2023,
+      644, 1540, 1539, 1536, 1536, 1534, 1523, 1525, 2023, 2023,
+     1570, 1516, 1573,  621,  591, 1514, 1512, 1528, 1569,  625,
+     1563, 1523, 1561, 1560, 1512, 1506, 1501, 1556, 1516, 1506,
+     1514, 1552, 1513, 1495, 1503, 1505, 1509, 1546, 1550, 1505,
+     1504, 2023, 1505, 1498, 1487, 1500, 1503, 1498, 1493, 1498,
+
+     1495, 1494, 1490, 1496, 1491, 1534, 1533, 1475, 1486, 1470,
+      542, 1481, 1528, 2023, 1527, 1481, 1477, 1472, 1464, 1517,
+     1478, 1465, 2023, 1465, 1474,   91,  246,  399,  418,  611,
+      596,  611, 2023,  609,  611,  633,  628,  641,  621,  627,
+      682,  646,  630,  630,  643,  687,  688,  695,  642,  660,
+      655,  662,  657,  642,  654,  655, 2023,  709,  667,  669,
+      660,  673,  675,  666,  672,  681,  722, 2023,  719,  695,
+      682,  683,  677, 2023,  675,  690,  687,  673,  680,  679,
+      677,  696,  693,  694,  684,  697,  683,  682,  688,  744,
+      690,  706,  689,  743,  698, 2023,  708,  708,  701,  713,
+
+      711,  756,  698,  700,  715,  716,  704,  763,  720,  706,
+      709, 2023, 2023,  725,  724,  725,  730,  718,  729, 2023,
+     2023,  729,  731,  735,  722,  720,  738,  725,  725,  776,
+      726,  784, 2023,  785, 2023,  730,  744,  744,  789,  737,
+      739,  733,  793,  746,  736,  737,  733,  743,  747,  758,
+      742,  760,  755,  757,  750,  752,  753,  765,  755,  770,
+      811,  768,  773,  750, 2023,  762,  763,  777,  767,  814,
+      762,  777,  777, 2023,  796,  804,  773,  822,  788,  776,
+      771,  772,  784,  791,  780,  781,  777,  795,  787,  782,
+      835,  841,  798,  789, 2023,  801,  786,  802,  792,  805,
+
+      799,  847,  813,  797,  798, 2023,  814,  817,  800,  802,
+      860,  803, 2023,  820,  823,  803,  822,  810,  863,  821,
+      817,  866,  815,  868,  815,  833,  832,  818,  833,  825,
+      821,  839,  824, 2023, 2023,  832,  879,  832, 2023,  840,
+      835,  888, 2023,  837,  842,  886,  838,  839,  851,  845,
+      849,  847,  845,  856,  901,  845,  850,  904,  905,  849,
+      861, 2023,  849,  857,  855,  852,  853,  862,  874,  858,
+      872,  873,  875,  891,  896,  878,  864,  866,  866,  886,
+      885,  876,  865,  882,  889,  932,  874,  934,  881,  885,
+     2023,  932,  881,  899,  896,  936,  885,  903,  904,  890,
+
+      898,  907,  889,  904,  911,  953,  954, 2023,  907,  956,
+      957,  908,  918,  920,  904,  906,  906,  913,  922,  916,
+      911,  918,  970,  917,  916,  933,  974,  924,  928,  926,
+      924,  979,  980,  930,  982,  978,  936, 2023,  941,  934,
+      925,  944,  938,  933,  943,  940,  945,  941,  953, 2023,
+      937,  939, 2023, 2023,  939,  999,  938,  958,  959, 1004,
+     1005,  958,  943,  964,  946,  951,  958,  991,  982, 1014,
+      971,  958,  960,  977,  972,  976, 1021,  969,  973, 2023,
+      970, 2023,  984,  982,  985,  969,  970, 1030,  983,  988,
+      975,  986,  979,  985,  981,  999, 1000, 1002, 2023, 2023,
+
+     1000, 2023, 1002, 2023,  987,  988, 1007,  997, 1049, 1006,
+     1003, 1047, 1011, 1006, 1011, 1008, 2023, 1006,  998, 1059,
+     2023, 1060, 1007, 1014, 1058, 2023, 2023, 1016, 2023, 1007,
+     1007, 1010, 1024, 1029, 1012, 1023, 1072, 1029, 1030, 1031,
+     1071, 1027, 1078, 1031, 1080, 2023, 1027, 1082, 1083, 2023,
+     2023, 1023, 1085, 1044, 1028, 1040, 1030, 1060, 1091, 2023,
+     1048, 1093, 1040, 1055, 1091, 1043, 2023, 1039, 1055, 1043,
+     1061, 1049, 1049, 1104, 1061, 2023, 1063, 1062, 1064, 1057,
+     1066, 1067, 1064, 1054, 1057, 1057, 1116, 1063, 1119, 1120,
+     1063, 1122, 2023, 1080, 1059, 1074, 1067, 1082, 1085, 1085,
+
+     1131, 1084, 2023, 2023, 1081, 1091, 1076, 1093, 1079, 1140,
+     1141, 1085, 1095, 1144, 1101, 2023, 1093, 1093, 1095, 1097,
+     1150, 1093, 2023, 1094, 2023, 1096, 2023, 2023, 1110, 2023,
+     1104, 1156, 1105, 1158, 1138, 2023, 1155, 2023, 1103, 1111,
+     1105, 1102, 1105, 1108, 1108, 1104, 1110, 1170, 1118, 2023,
+     1114, 1173, 1126, 1117, 1132, 1132, 1135, 1135, 1132, 1176,
+     1139, 2023, 1131, 2023, 2023, 1141, 2023, 1181, 1143, 1144,
+     1141, 1185, 1147, 1187, 1149, 2023, 1137, 1137, 1143, 1142,
+     1154, 1154, 2023, 2023, 1195, 1142, 2023, 1159, 1144, 1144,
+     1146, 1152, 2023, 1207, 1149, 1159, 1210, 1171, 2023, 1168,
+
+     2023, 1187, 1155, 1215, 1216, 1173, 1178, 1160, 1220, 1221,
+     1222, 1175, 2023, 1165, 1225, 2023, 1163, 1222, 1185, 1181,
+     1225, 1173, 1178, 1176, 1235, 1191, 1237, 1187, 1239, 1201,
+     1190, 1184, 1185, 1194, 1187, 1203, 1248, 1190, 1207, 1192,
+     1207, 1191, 1249, 1250, 1251, 1198, 1253, 1216, 2023, 1216,
+     1203, 2023, 1214, 1263, 1233, 1217, 2023, 2023, 1208, 1219,
+     1268, 2023, 2023, 2023, 1215, 1213, 2023, 1271, 1217, 1268,
+     1211, 1216, 1277, 1225, 1235, 1236, 2023, 1281, 1234, 2023,
+     1235, 2023, 1226, 1241, 1229, 1239, 1240, 1241, 1247, 2023,
+     1286, 1254, 1247, 1248, 1257, 1239, 1245, 1247, 1301, 1260,
+
+     1259, 1251, 1305, 1254, 2023, 1307, 1256, 1309, 1251, 2023,
+     1258, 1258, 2023, 1262, 1257, 1256, 1316, 1269, 2023, 1313,
+     1264, 1261, 2023, 1275, 1277, 1279, 1324, 1277, 1274, 1282,
+     1276, 1329, 1270, 1272, 1280, 1270, 1286, 1287, 1281, 1297,
+     2023, 1287, 1339, 1298, 2023, 1336, 2023, 1298, 2023, 1338,
+     1339, 1294, 1302, 1293, 1300, 2023, 1297, 1302, 1300, 1352,
+     1353, 1310, 1297, 2023, 1312, 1313, 1314, 1315, 2023, 1305,
+     1317, 1318, 1363, 1305, 1313, 1307, 1315, 1328, 2023, 1305,
+     1328, 1313, 1313, 1318, 1374, 1322, 1334, 1325, 1334, 1336,
+     1340, 2023, 2023, 1322, 1382, 1325, 1384, 1326, 1386, 1344,
+
+     1388, 1389, 2023, 1385, 1347, 1344, 1349, 1336, 1395, 1332,
+     1397, 1350, 1355, 2023, 1400, 1357, 1358, 1403, 1360, 1363,
+     1358, 2023, 1407, 2023, 1360, 2023, 1369, 2023, 2023, 1351,
+     1411, 1358, 1413, 1356, 2023, 1373, 2023, 1364, 1360, 2023,
+     1360, 1362, 2023, 1367, 1377, 1370, 2023, 1371, 1365, 1377,
+     2023, 1373, 2023, 1383, 1377, 1385, 1382, 1373, 1427, 1374,
+     1382, 1391, 1392, 1393, 1386, 1381, 1382, 1397, 1442, 1389,
+     1396, 1383, 1398, 1403, 1448, 1449, 1450, 1407, 1452, 1453,
+     1396, 2023, 1412, 1403, 1417, 1413, 1406, 2023, 2023, 2023,
+     1460, 2023, 2023, 1461, 1462, 1417, 1416, 1417, 1407, 2023,
+
+     2023, 2023, 1467, 1409, 1425, 1470, 2023, 1466, 1415, 2023,
+     1414, 1416, 1427, 1476, 1425, 2023, 1434, 1479, 2023, 2023,
+     1485, 1490, 1495, 1500, 1505, 1510, 1515, 1518, 1492, 1497,
+     1499, 1512
     } ;
 
-static const flex_int16_t yy_def[1627] =
+static const flex_int16_t yy_def[1633] =
     {   0,
-     1615, 1615, 1616, 1616, 1615, 1615, 1615, 1615, 1615, 1615,
-     1614, 1614, 1614, 1614, 1614, 1617, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1618,
-     1614, 1614, 1614, 1619,   15, 1614,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1620,   45,   45,
+     1621, 1621, 1622, 1622, 1621, 1621, 1621, 1621, 1621, 1621,
+     1620, 1620, 1620, 1620, 1620, 1623, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1624,
+     1620, 1620, 1620, 1625,   15, 1620,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1626,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1617, 1614,
-     1614, 1614, 1614, 1614, 1614, 1621, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1618, 1614, 1619,
+       45,   45,   45,   45,   45,   45,   45,   45, 1623, 1620,
+     1620, 1620, 1620, 1620, 1620, 1627, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1624, 1620, 1625,
 
-     1614, 1614,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1622,   45, 1620,   45,   45,
+     1620, 1620,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1628,   45, 1626,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1621, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1623,   45,   45,   45, 1614,   45,   45, 1614,   45,   45,
+       45, 1627, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1629,   45,   45,   45, 1620,   45,   45, 1620,   45,   45,
 
-       45,   45,   45,   45,   45, 1622, 1614, 1620,   45,   45,
+       45,   45,   45,   45,   45, 1628, 1620, 1626,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1620,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1614, 1614, 1614,
+       45,   45,   45,   45,   45,   45,   45,   45, 1620, 1620,
 
-     1614, 1614, 1614, 1614, 1624,   45,   45,   45,   45,   45,
-     1614,   45,   45, 1614,   45, 1614,   45, 1620, 1614,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
+     1620, 1620, 1620, 1620, 1620, 1630,   45,   45,   45,   45,
+       45, 1620,   45,   45, 1620,   45, 1620,   45, 1626, 1620,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1620,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1614,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1620,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1614, 1614, 1614, 1625,   45,   45,
-       45,   45,   45,   45, 1614,   45,   45, 1614,   45, 1620,
-       45,   45,   45,   45, 1614,   45,   45,   45,   45,   45,
-       45,   45, 1614,   45,   45,   45,   45,   45,   45,   45,
-     1614,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1614,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1620, 1620, 1620, 1631,
+       45,   45,   45,   45,   45,   45, 1620,   45,   45, 1620,
+       45, 1626,   45,   45,   45,   45, 1620,   45,   45,   45,
+       45,   45,   45,   45, 1620,   45,   45,   45,   45,   45,
+       45,   45, 1620,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1620,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1620,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-     1614,   45, 1614,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1620,   45, 1620,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1614, 1614, 1614,   45, 1614,   45,   45,
-     1614, 1626,   45,   45, 1614, 1614,   45, 1614,   45, 1614,
-       45,   45,   45, 1614,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1620, 1620, 1620,   45,
+     1620,   45,   45, 1620, 1632,   45,   45, 1620, 1620,   45,
+     1620,   45, 1620,   45,   45,   45, 1620,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
-       45,   45,   45,   45,   45,   45, 1614,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45, 1614,   45,   45, 1614,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
+     1620,   45,   45,   45,   45,   45,   45,   45,   45, 1620,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1614,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1614,   45,   45,   45,   45,
-       45,   45,   45,   45, 1614, 1614,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1620,
+       45,   45, 1620,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1620,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1620,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1620,
+       45,   45,   45,   45,   45,   45,   45,   45, 1620, 1620,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1620,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
-       45,   45,   45,   45,   45,   45,   45,   45, 1614,   45,
-       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1620,   45,   45,   45,   45,   45,   45,
+       45,   45, 1620,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1620,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1614,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1614,   45,   45,   45,   45,   45, 1614,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1620,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1620,   45,   45,
+       45,   45,   45, 1620,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1614,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1620,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45, 1614, 1614,   45,   45,
-       45,   45,   45,   45, 1614, 1614,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1614,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1620, 1620,   45,   45,   45,   45,   45,   45, 1620,
+     1620,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1620,   45, 1620,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1614,   45,
-       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1614,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
-
-       45,   45,   45,   45,   45,   45, 1614,   45,   45,   45,
+       45,   45,   45,   45, 1620,   45,   45,   45,   45,   45,
+       45,   45,   45, 1620,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1614, 1614,   45,
-       45,   45, 1614,   45,   45,   45, 1614,   45,   45,   45,
+       45,   45,   45,   45, 1620,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45, 1620,   45,   45,   45,   45,
+       45,   45, 1620,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1614,   45,   45,   45,   45,
+       45,   45,   45, 1620, 1620,   45,   45,   45, 1620,   45,
+       45,   45, 1620,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1620,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1614,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1620,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1614,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1620,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1614,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1614,   45,   45, 1614, 1614,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1620,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1620,
+       45,   45, 1620, 1620,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1620,
+       45, 1620,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1620, 1620,
+
+       45, 1620,   45, 1620,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1620,   45,   45,   45,
+     1620,   45,   45,   45,   45, 1620, 1620,   45, 1620,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1614,   45, 1614,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1620,   45,   45,   45, 1620,
+     1620,   45,   45,   45,   45,   45,   45,   45,   45, 1620,
+       45,   45,   45,   45,   45,   45, 1620,   45,   45,   45,
+       45,   45,   45,   45,   45, 1620,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1614, 1614,   45, 1614,   45, 1614,   45,   45,
+       45,   45, 1620,   45,   45,   45,   45,   45,   45,   45,
 
+       45,   45, 1620, 1620,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1620,   45,   45,   45,   45,
+       45,   45, 1620,   45, 1620,   45, 1620, 1620,   45, 1620,
+       45,   45,   45,   45,   45, 1620,   45, 1620,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1620,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1614,   45,   45,   45, 1614,   45,   45,   45,   45, 1614,
-     1614,   45, 1614,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
-       45,   45,   45, 1614, 1614,   45,   45,   45,   45,   45,
-       45,   45,   45, 1614,   45,   45,   45,   45,   45,   45,
-     1614,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
+       45, 1620,   45, 1620, 1620,   45, 1620,   45,   45,   45,
+       45,   45,   45,   45,   45, 1620,   45,   45,   45,   45,
+       45,   45, 1620, 1620,   45,   45, 1620,   45,   45,   45,
+       45,   45, 1620,   45,   45,   45,   45,   45, 1620,   45,
+
+     1620,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1620,   45,   45, 1620,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1614,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1614, 1614,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
-       45,   45,   45,   45,   45,   45, 1614,   45, 1614,   45,
-     1614, 1614,   45, 1614,   45,   45,   45,   45,   45, 1614,
-       45, 1614,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1614,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1614,   45, 1614, 1614,   45,
-     1614,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
-       45,   45,   45,   45,   45,   45, 1614, 1614,   45,   45,
-     1614,   45,   45,   45,   45,   45, 1614,   45,   45,   45,
-       45,   45, 1614,   45, 1614,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45, 1614,   45,   45, 1614,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1620,   45,
+       45, 1620,   45,   45,   45,   45, 1620, 1620,   45,   45,
+       45, 1620, 1620, 1620,   45,   45, 1620,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1620,   45,   45, 1620,
+       45, 1620,   45,   45,   45,   45,   45,   45,   45, 1620,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45, 1620,   45,   45,   45,   45, 1620,
+       45,   45, 1620,   45,   45,   45,   45,   45, 1620,   45,
+       45,   45, 1620,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1614,   45,   45, 1614,   45,   45,   45,   45,
-     1614, 1614,   45,   45,   45, 1614, 1614, 1614,   45,   45,
-     1614,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1614,   45,   45, 1614,   45, 1614,   45,   45,   45,   45,
-       45,   45,   45, 1614,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1614,   45,
-
-       45,   45,   45, 1614,   45,   45, 1614,   45,   45,   45,
-       45,   45, 1614,   45,   45,   45, 1614,   45,   45,   45,
+     1620,   45,   45,   45, 1620,   45, 1620,   45, 1620,   45,
+       45,   45,   45,   45,   45, 1620,   45,   45,   45,   45,
+       45,   45,   45, 1620,   45,   45,   45,   45, 1620,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1620,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1614,   45,   45,   45, 1614,   45,
-     1614,   45, 1614,   45,   45,   45,   45,   45,   45, 1614,
-       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
-       45,   45, 1614,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1614,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1614, 1614,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1614,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
-       45,   45,   45,   45,   45, 1614,   45, 1614,   45, 1614,
-       45, 1614, 1614,   45,   45,   45,   45,   45, 1614,   45,
-     1614,   45,   45, 1614,   45,   45, 1614,   45,   45,   45,
-     1614,   45,   45,   45, 1614,   45, 1614,   45,   45,   45,
+       45, 1620, 1620,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45, 1620,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1620,   45,   45,   45,   45,   45,   45,
+       45, 1620,   45, 1620,   45, 1620,   45, 1620, 1620,   45,
+       45,   45,   45,   45, 1620,   45, 1620,   45,   45, 1620,
+       45,   45, 1620,   45,   45,   45, 1620,   45,   45,   45,
+     1620,   45, 1620,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1614,   45,   45,   45,   45,
-       45, 1614, 1614, 1614,   45, 1614, 1614,   45,   45,   45,
-       45,   45,   45, 1614, 1614, 1614,   45,   45,   45,   45,
+       45, 1620,   45,   45,   45,   45,   45, 1620, 1620, 1620,
+       45, 1620, 1620,   45,   45,   45,   45,   45,   45, 1620,
 
-     1614,   45,   45, 1614,   45,   45,   45,   45,   45, 1614,
-       45,   45, 1614,    0, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614
+     1620, 1620,   45,   45,   45,   45, 1620,   45,   45, 1620,
+       45,   45,   45,   45,   45, 1620,   45,   45, 1620,    0,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620
     } ;
 
-static const flex_int16_t yy_nxt[2091] =
+static const flex_int16_t yy_nxt[2097] =
     {   0,
-     1614,   13,   14,   13, 1614,   15,   16, 1614,   17,   18,
+     1620,   13,   14,   13, 1620,   15,   16, 1620,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       85,  719,   37,   14,   37,   86,   25,   26,   38,  101,
-     1614,   27,   37,   14,   37,   42,   28,   42,   38,   91,
+       85,  723,   37,   14,   37,   86,   25,   26,   38,  101,
+     1620,   27,   37,   14,   37,   42,   28,   42,   38,   91,
        92,   29,  197,   30,   13,   14,   13,   90,   91,   25,
        31,   92,   13,   14,   13,   13,   14,   13,   32,   40,
-      720,   13,   14,   13,   33,   40,  102,   91,   92,  197,
+      724,   13,   14,   13,   33,   40,  102,   91,   92,  197,
        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,  103,   25,   26,
 
        13,   14,   13,   27,   39,   42,  107,   42,   28,   42,
       108,   42,   41,   29,  111,   30,  114,  115,   93,  136,
-       41,   25,   31,  103,  137,  440,   88,  138,   88,  107,
+       41,   25,   31,  103,  137,  442,   88,  138,   88,  107,
        32,   89,   89,   89,   89,   89,   33,  111,  108,  114,
-      830,  115,  441,   34,   35,   44,   44,   44,   45,   45,
+      831,  115,  443,   34,   35,   44,   44,   44,   45,   45,
        46,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   47,   45,   48,
        49,   50,   51,   45,   52,   53,   54,   45,   45,   45,
@@ -1323,119 +1325,119 @@ static const flex_int16_t yy_nxt[2091] =
        82,   83,   83,   83,   83,   83,  134,   82,  110,  131,
       112,  121,  119,  135,   82,  107,   82,  165,  120,  132,
       113,  166,  122,   82,  126,  123,  133,  124,  127,  125,
-       82,  128,  129,  112,  205,  231,  390,   82,   45,  391,
+       82,  128,  129,  112,  205,  231,  392,   82,   45,  393,
        45,   45,   45,   45,  130,   45,   45,   45,  113,  117,
-      139,  232,   45,   45,  831,   45,   45,  205,  101,  183,
+      139,  232,   45,   45,  832,   45,   45,  205,  101,  183,
 
       140,   45,  141,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,  111,  183,   45,  143,  144,  184,
-       45,  145,  147,  448,   45,  102,  148,  146,  185,  449,
+       45,  145,  147,  450,   45,  102,  148,  146,  185,  451,
       149,  185,   45,  151,  154,  152,   45,  153,   45,  118,
       198,  192,  155,  114,  156,  184,  150,  201,  159,  157,
-      158,  160,  161,  167,  173,  174,  185,  168,  374,  188,
+      158,  160,  161,  167,  173,  174,  185,  168,  375,  188,
       169,  202,  162,  203,  112,  163,  114,  170,  171,  192,
-      214,  199,  485,  172,  113,  201,  179,  229,  486,  215,
+      214,  199,  487,  172,  113,  201,  179,  229,  488,  215,
       216,  180,   84,   84,   84,   84,   84,  175,  202,  176,
 
-      230,  203,  204,  177,  832,   82,   89,   89,   89,   89,
-       89,   80,  113,   81,   81,   81,   81,   81,  375,  178,
+      230,  203,  204,  177,  833,   82,   89,   89,   89,   89,
+       89,   80,  113,   81,   81,   81,   81,   81,  376,  178,
        89,   89,   89,   89,   89,   88,   82,   88,   82,  204,
        89,   89,   89,   89,   89,   80,  183,   83,   83,   83,
        83,   83,   84,   84,   84,   84,   84,  100,  184,   82,
        82,  196,  192,  240,  100,   82,  220,  221,  249,  201,
-      300,  235,  186,  226,  236,  227,  222,  202,  237,  209,
-      262,  263,  266,   82,  187,  267,  268,  196,   82,  250,
-      210,  282,  228,  300,  100,  283,  298,  256,  100,  284,
-      299,  314,  100,  833,  291,  298,  408,  241,  299,  309,
-
-      100,  272,  300,  306,  100,  310,  100,  191,  208,  208,
-      208,  208,  208,  834,  298,  835,  299,  208,  208,  208,
-      208,  208,  208,  301,  302,  303,  306,  309,  317,  362,
-      313,  532,  310,  315,  533,  399,  273,  274,  275,  306,
-      208,  208,  208,  208,  208,  208,  419,  276,  400,  277,
-      313,  278,  279,  313,  280,  317,  315,  318,  318,  318,
-      318,  318,  320,  415,  326,  415,  318,  318,  318,  318,
-      318,  318,  327,  370,  424,  419,  419,  328,  329,  427,
-      501,  836,  363,  699,  700,  364,  415,  427,  416,  318,
-      318,  318,  318,  318,  318,  421,  422,  424,  443,  837,
-
-      568,  463,  752,  444,  423,  431,  464,  427,  430,  430,
-      430,  430,  430,  569,  753,  491,  489,  430,  430,  430,
-      430,  430,  430,  478,  479,  480,  490,  505,  513,  481,
-      518,  506,  514,  543,  519,  551,  660,  552,  502,  838,
-      430,  430,  430,  430,  430,  430,  538,  765,  578,  839,
-      632,  539,  543,  579,  465,  633,  661,  764,  840,  466,
-      841,  543,  551,  660,  552,   45,   45,   45,   45,   45,
-      765,  842,  843,  844,   45,   45,   45,   45,   45,   45,
-      553,  656,  728,  845,  661,  764,  662,  729,  770,  771,
-      812,  772,  846,  813,  847,  848,  849,   45,   45,   45,
-
-       45,   45,   45,  850,  851,  852,  855,  856,  857,  859,
-      860,  861,  853,  862,  858,  863,  854,  864,  865,  866,
-      867,  868,  869,  870,  871,  872,  730,  873,  874,  875,
+      301,  235,  186,  226,  236,  227,  222,  202,  237,  209,
+      262,  263,  264,   82,  187,  299,  300,  196,   82,  250,
+      210,  834,  228,  301,  100,  299,  267,  256,  100,  268,
+      269,  283,  100,  301,  292,  284,  311,  241,  300,  285,
+
+      100,  273,  300,  299,  100,  307,  100,  191,  208,  208,
+      208,  208,  208,  302,  703,  704,  304,  208,  208,  208,
+      208,  208,  208,  311,  303,  310,  363,  314,  307,  318,
+      315,  535,  316,  401,  536,  410,  274,  275,  276,  307,
+      208,  208,  208,  208,  208,  208,  402,  277,  504,  278,
+      314,  279,  280,  310,  281,  316,  318,  319,  319,  319,
+      319,  319,  321,  314,  327,  417,  319,  319,  319,  319,
+      319,  319,  328,  417,  421,  423,  424,  329,  330,  364,
+      429,  426,  365,  508,  425,  421,  371,  509,  417,  319,
+      319,  319,  319,  319,  319,  445,  418,  465,  817,  429,
+
+      446,  818,  466,  421,  426,  491,  505,  546,  429,  432,
+      432,  432,  432,  432,  433,  492,  835,  770,  432,  432,
+      432,  432,  432,  432,  480,  481,  482,  493,  516,  521,
+      483,  541,  517,  522,  546,  546,  542,  554,  571,  555,
+      770,  432,  432,  432,  432,  432,  432,  581,  636,  757,
+      467,  572,  582,  637,  665,  468,  664,  769,  660,  836,
+      837,  758,  556,  666,  554,  838,  555,   45,   45,   45,
+       45,   45,  775,  776,  839,  777,   45,   45,   45,   45,
+       45,   45,  665,  664,  733,  769,  840,  841,  842,  734,
+      843,  844,  845,  846,  847,  848,  849,  850,  851,   45,
+
+       45,   45,   45,   45,   45,  852,  853,  854,  855,  857,
+      858,  861,  862,  863,  865,  856,  866,  859,  867,  864,
+      868,  860,  869,  870,  871,  872,  873,  874,  735,  875,
       876,  877,  878,  879,  880,  881,  882,  883,  884,  885,
       886,  887,  888,  889,  890,  891,  892,  893,  894,  895,
-      896,  870,  897,  898,  899,  900,  902,  903,  904,  905,
-      901,  906,  907,  908,  909,  910,  911,  912,  913,  914,
-      915,  916,  917,  918,  919,  920,  921,  922,  924,  925,
-      926,  923,  927,  928,  929,  930,  931,  932,  933,  934,
+      896,  897,  898,  899,  900,  901,  902,  903,  876,  904,
+      905,  906,  908,  909,  910,  911,  907,  912,  913,  914,
+      915,  916,  917,  918,  919,  920,  921,  922,  923,  924,
+      925,  926,  927,  928,  930,  931,  932,  929,  933,  934,
       935,  936,  937,  938,  939,  940,  941,  942,  943,  944,
 
-      945,  946,  947,  948,  949,  950,  951,  952,  954,  955,
-      956,  957,  958,  959,  960,  961,  962,  963,  964,  953,
-      965,  966,  967,  968,  969,  970,  971,  972,  973,  974,
+      945,  946,  947,  948,  949,  950,  951,  952,  953,  954,
+      955,  956,  957,  958,  960,  961,  962,  963,  964,  965,
+      966,  967,  968,  969,  970,  959,  971,  972,  973,  974,
       975,  976,  977,  978,  979,  980,  981,  982,  983,  984,
-      985,  986,  987,  988,  989,  990,  991,  969,  992,  993,
-      968,  994,  995,  996,  997,  998,  999, 1000, 1001, 1002,
-     1005, 1006, 1007, 1008, 1003, 1009, 1010, 1011, 1012, 1013,
-     1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
-     1024, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034,
-     1035, 1025, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
+      985,  986,  987,  988,  989,  990,  991,  992,  993,  994,
+      995,  996,  997,  975,  998,  999,  974, 1000, 1001, 1002,
+     1003, 1004, 1005, 1006, 1007, 1008, 1011, 1012, 1013, 1014,
+     1009, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
+     1024, 1025, 1026, 1027, 1028, 1029, 1030, 1032, 1033, 1034,
+     1035, 1036, 1037, 1038, 1039, 1040, 1041, 1031, 1042, 1043,
 
      1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
-     1054, 1055, 1056, 1057, 1058, 1059, 1060, 1004, 1061, 1062,
-     1064, 1063, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072,
+     1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063,
+     1064, 1065, 1066, 1010, 1067, 1068, 1070, 1069, 1071, 1072,
      1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
-     1083, 1084, 1085, 1086, 1087, 1088, 1089, 1062, 1063, 1090,
-     1091, 1092, 1093, 1094, 1095, 1096, 1098, 1100, 1101, 1102,
-     1097, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
+     1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
+     1093, 1094, 1095, 1068, 1069, 1096, 1097, 1098, 1099, 1100,
+     1101, 1102, 1104, 1106, 1107, 1108, 1103, 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,
 
-     1099, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150,
+     1142, 1143, 1144, 1145, 1146, 1147, 1105, 1148, 1149, 1150,
      1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160,
      1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170,
-     1171, 1172, 1173, 1174, 1152, 1175, 1176, 1177, 1178, 1179,
-     1153, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188,
+     1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180,
+     1158, 1181, 1182, 1183, 1184, 1185, 1159, 1186, 1187, 1188,
      1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198,
      1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208,
-     1209, 1210, 1211, 1212, 1213, 1214, 1216, 1217, 1218, 1219,
-     1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229,
-     1230, 1231, 1232, 1234, 1235, 1236, 1237, 1238, 1239, 1240,
+     1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218,
+     1219, 1220, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229,
+     1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1240,
 
      1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250,
-     1251, 1252, 1253, 1254, 1255, 1256, 1257, 1229, 1258, 1259,
-     1260, 1261, 1262, 1263, 1264, 1266, 1267, 1268, 1215, 1269,
-     1270, 1271, 1265, 1272, 1273, 1274, 1233, 1275, 1276, 1277,
-     1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287,
+     1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260,
+     1261, 1262, 1263, 1235, 1264, 1265, 1266, 1267, 1268, 1269,
+     1270, 1272, 1273, 1274, 1221, 1275, 1276, 1277, 1271, 1278,
+     1279, 1280, 1239, 1281, 1282, 1283, 1284, 1285, 1286, 1287,
      1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297,
      1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307,
      1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317,
-     1318, 1296, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326,
+     1318, 1319, 1320, 1321, 1322, 1323, 1324, 1302, 1325, 1326,
      1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336,
 
      1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346,
      1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356,
      1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366,
-     1367, 1368, 1369, 1370, 1371, 1373, 1374, 1375, 1376, 1349,
-     1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386,
+     1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376,
+     1377, 1379, 1380, 1381, 1382, 1355, 1383, 1384, 1385, 1386,
      1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396,
      1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406,
-     1407, 1409, 1410, 1411, 1412, 1408, 1413, 1414, 1415, 1416,
-     1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426,
-     1427, 1400, 1372, 1428, 1429, 1430, 1431, 1432, 1433, 1434,
+     1407, 1408, 1409, 1410, 1411, 1412, 1413, 1415, 1416, 1417,
+     1418, 1414, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426,
+     1427, 1428, 1429, 1430, 1431, 1432, 1433, 1406, 1378, 1434,
 
      1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444,
      1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454,
@@ -1455,94 +1457,96 @@ static const flex_int16_t yy_nxt[2091] =
      1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584,
      1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594,
      1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604,
-     1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613,   12,
-       12,   12,   12,   12,   36,   36,   36,   36,   36,   79,
-      305,   79,   79,   79,   98,  418,   98,  542,   98,  100,
-
-      100,  100,  100,  100,  116,  116,  116,  116,  116,  182,
-      100,  182,  182,  182,  206,  206,  206,  829,  828,  827,
-      826,  825,  824,  823,  822,  821,  820,  819,  818,  817,
-      816,  815,  814,  811,  810,  809,  808,  807,  806,  805,
-      804,  803,  802,  801,  800,  799,  798,  797,  796,  795,
-      794,  793,  792,  791,  790,  789,  788,  787,  786,  785,
-      784,  783,  782,  781,  780,  779,  778,  777,  776,  775,
-      774,  773,  769,  768,  767,  766,  763,  762,  761,  760,
-      759,  758,  757,  756,  755,  754,  751,  750,  749,  748,
-      747,  746,  745,  744,  743,  742,  741,  740,  739,  738,
-
-      737,  736,  735,  734,  733,  732,  731,  727,  726,  725,
-      724,  723,  722,  721,  718,  717,  716,  715,  714,  713,
-      712,  711,  710,  709,  708,  707,  706,  705,  704,  703,
-      702,  701,  698,  697,  696,  695,  694,  693,  692,  691,
-      690,  689,  688,  687,  686,  685,  684,  683,  682,  681,
-      680,  679,  678,  677,  676,  675,  674,  673,  672,  671,
-      670,  669,  668,  667,  666,  665,  664,  663,  659,  658,
-      657,  656,  655,  654,  653,  652,  651,  650,  649,  648,
-      647,  646,  645,  644,  643,  642,  641,  640,  639,  638,
-      637,  636,  635,  634,  631,  630,  629,  628,  627,  626,
-
-      625,  624,  623,  622,  621,  620,  619,  618,  617,  616,
-      615,  614,  613,  612,  611,  610,  609,  608,  607,  606,
-      605,  604,  603,  602,  601,  600,  599,  598,  597,  596,
-      595,  594,  593,  592,  591,  590,  589,  588,  587,  586,
-      585,  584,  583,  582,  581,  580,  577,  576,  575,  574,
-      573,  572,  571,  570,  567,  566,  565,  564,  563,  562,
-      561,  560,  559,  558,  557,  556,  555,  554,  550,  549,
-      548,  547,  546,  545,  544,  541,  540,  537,  536,  535,
-      534,  531,  530,  529,  528,  527,  526,  525,  524,  523,
-      522,  521,  520,  517,  516,  515,  512,  511,  510,  509,
-
-      508,  507,  504,  503,  500,  499,  498,  497,  496,  495,
-      494,  493,  492,  488,  487,  484,  483,  482,  477,  476,
-      475,  474,  473,  472,  471,  470,  469,  468,  467,  462,
-      461,  460,  459,  458,  457,  456,  455,  454,  453,  452,
-      451,  450,  447,  446,  445,  442,  439,  438,  437,  436,
-      435,  434,  433,  432,  429,  428,  426,  425,  420,  417,
-      414,  413,  412,  411,  410,  409,  407,  406,  405,  404,
-      403,  402,  401,  398,  397,  396,  395,  394,  393,  392,
-      389,  388,  387,  386,  385,  384,  383,  382,  381,  380,
-      379,  378,  377,  376,  373,  372,  371,  369,  368,  367,
-
-      366,  365,  361,  360,  359,  358,  357,  356,  355,  354,
-      353,  352,  351,  350,  349,  348,  347,  346,  345,  344,
-      343,  342,  341,  340,  339,  338,  337,  336,  335,  334,
-      333,  332,  331,  330,  325,  324,  323,  322,  321,  319,
-      207,  316,  314,  312,  311,  308,  307,  304,  297,  296,
-      295,  294,  293,  292,  290,  289,  288,  287,  286,  285,
-      281,  271,  270,  269,  265,  264,  261,  260,  259,  258,
-      257,  255,  254,  253,  252,  251,  248,  247,  246,  245,
-      244,  243,  242,  239,  238,  234,  233,  225,  224,  223,
-      219,  218,  217,  213,  212,  211,  207,  200,  195,  194,
-
-      193,  190,  189,  181,  164,  142,  106,  105,  104,   43,
-       99,   97,   96,   87,   43, 1614,   11, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614
+     1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614,
+     1615, 1616, 1617, 1618, 1619,   12,   12,   12,   12,   12,
+       36,   36,   36,   36,   36,   79,  306,   79,   79,   79,
+
+       98,  420,   98,  545,   98,  100,  100,  100,  100,  100,
+      116,  116,  116,  116,  116,  182,  100,  182,  182,  182,
+      206,  206,  206,  830,  829,  828,  827,  826,  825,  824,
+      823,  822,  821,  820,  819,  816,  815,  814,  813,  812,
+      811,  810,  809,  808,  807,  806,  805,  804,  803,  802,
+      801,  800,  799,  798,  797,  796,  795,  794,  793,  792,
+      791,  790,  789,  788,  787,  786,  785,  784,  783,  782,
+      781,  780,  779,  778,  774,  773,  772,  771,  768,  767,
+      766,  765,  764,  763,  762,  761,  760,  759,  756,  755,
+      754,  753,  752,  751,  750,  749,  748,  747,  746,  745,
+
+      744,  743,  742,  741,  740,  739,  738,  737,  736,  732,
+      731,  730,  729,  728,  727,  726,  725,  722,  721,  720,
+      719,  718,  717,  716,  715,  714,  713,  712,  711,  710,
+      709,  708,  707,  706,  705,  702,  701,  700,  699,  698,
+      697,  696,  695,  694,  693,  692,  691,  690,  689,  688,
+      687,  686,  685,  684,  683,  682,  681,  680,  679,  678,
+      677,  676,  675,  674,  673,  672,  671,  670,  669,  668,
+      667,  663,  662,  661,  660,  659,  658,  657,  656,  655,
+      654,  653,  652,  651,  650,  649,  648,  647,  646,  645,
+      644,  643,  642,  641,  640,  639,  638,  635,  634,  633,
+
+      632,  631,  630,  629,  628,  627,  626,  625,  624,  623,
+      622,  621,  620,  619,  618,  617,  616,  615,  614,  613,
+      612,  611,  610,  609,  608,  607,  606,  605,  604,  603,
+      602,  601,  600,  599,  598,  597,  596,  595,  594,  593,
+      592,  591,  590,  589,  588,  587,  586,  585,  584,  583,
+      580,  579,  578,  577,  576,  575,  574,  573,  570,  569,
+      568,  567,  566,  565,  564,  563,  562,  561,  560,  559,
+      558,  557,  553,  552,  551,  550,  549,  548,  547,  544,
+      543,  540,  539,  538,  537,  534,  533,  532,  531,  530,
+      529,  528,  527,  526,  525,  524,  523,  520,  519,  518,
+
+      515,  514,  513,  512,  511,  510,  507,  506,  503,  502,
+      501,  500,  499,  498,  497,  496,  495,  494,  490,  489,
+      486,  485,  484,  479,  478,  477,  476,  475,  474,  473,
+      472,  471,  470,  469,  464,  463,  462,  461,  460,  459,
+      458,  457,  456,  455,  454,  453,  452,  449,  448,  447,
+      444,  441,  440,  439,  438,  437,  436,  435,  434,  431,
+      430,  428,  427,  422,  419,  416,  415,  414,  413,  412,
+      411,  409,  408,  407,  406,  405,  404,  403,  400,  399,
+      398,  397,  396,  395,  394,  391,  390,  389,  388,  387,
+      386,  385,  384,  383,  382,  381,  380,  379,  378,  377,
+
+      374,  373,  372,  370,  369,  368,  367,  366,  362,  361,
+      360,  359,  358,  357,  356,  355,  354,  353,  352,  351,
+      350,  349,  348,  347,  346,  345,  344,  343,  342,  341,
+      340,  339,  338,  337,  336,  335,  334,  333,  332,  331,
+      326,  325,  324,  323,  322,  320,  207,  317,  315,  313,
+      312,  309,  308,  305,  298,  297,  296,  295,  294,  293,
+      291,  290,  289,  288,  287,  286,  282,  272,  271,  270,
+      266,  265,  261,  260,  259,  258,  257,  255,  254,  253,
+      252,  251,  248,  247,  246,  245,  244,  243,  242,  239,
+      238,  234,  233,  225,  224,  223,  219,  218,  217,  213,
+
+      212,  211,  207,  200,  195,  194,  193,  190,  189,  181,
+      164,  142,  106,  105,  104,   43,   99,   97,   96,   87,
+       43, 1620,   11, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620
+
     } ;
 
-static const flex_int16_t yy_chk[2091] =
+static const flex_int16_t yy_chk[2097] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       21,  614,    3,    3,    3,   21,    1,    1,    3,   44,
+       21,  617,    3,    3,    3,   21,    1,    1,    3,   44,
         0,    1,    4,    4,    4,   13,    1,   13,    4,   27,
        28,    1,  108,    1,    5,    5,    5,   26,   32,    1,
         1,   33,    6,    6,    6,    7,    7,    7,    1,    7,
-      614,    8,    8,    8,    1,    8,   44,   27,   28,  108,
+      617,    8,    8,    8,    1,    8,   44,   27,   28,  108,
        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,   47,    2,    2,
 
        10,   10,   10,    2,    6,   37,   51,   37,    2,   42,
        52,   42,    9,    2,   54,    2,   56,   57,   31,   65,
-       10,    2,    2,   47,   65,  329,   25,   65,   25,   51,
+       10,    2,    2,   47,   65,  330,   25,   65,   25,   51,
         2,   25,   25,   25,   25,   25,    2,   54,   52,   56,
-      726,   57,  329,    2,    2,   15,   15,   15,   15,   15,
+      726,   57,  330,    2,    2,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1556,206 +1560,208 @@ static const flex_int16_t yy_chk[2091] =
        19,   22,   22,   22,   22,   22,   64,   20,   53,   62,
        55,   60,   59,   64,   22,   63,   17,   74,   59,   62,
        55,   74,   60,   19,   61,   60,   63,   60,   61,   60,
-       20,   61,   61,   55,  115,  133,  275,   22,   45,  275,
+       20,   61,   61,   55,  115,  133,  276,   22,   45,  276,
        45,   45,   45,   45,   61,   45,   45,   45,   55,   58,
        66,  133,   45,   45,  727,   45,   58,  115,  100,   90,
 
        66,   45,   66,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   70,   90,   58,   68,   68,   91,
-       58,   68,   69,  336,   58,  100,   69,   68,   92,  336,
+       58,   68,   69,  337,   58,  100,   69,   68,   92,  337,
        69,   95,   58,   70,   71,   70,   58,   70,   58,   58,
       109,  103,   71,   77,   71,   91,   69,  111,   72,   71,
        71,   72,   72,   75,   76,   76,   92,   75,  260,   95,
        75,  112,   72,  113,   76,   72,   77,   75,   75,  103,
-      123,  109,  366,   75,   76,  111,   77,  132,  366,  123,
+      123,  109,  367,   75,   76,  111,   77,  132,  367,  123,
       123,   77,   80,   80,   80,   80,   80,   76,  112,   76,
 
-      132,  113,  114,   76,  729,   80,   88,   88,   88,   88,
+      132,  113,  114,   76,  728,   80,   88,   88,   88,   88,
        88,   81,   76,   81,   81,   81,   81,   81,  260,   76,
        89,   89,   89,   89,   89,   82,   81,   82,   80,  114,
        82,   82,   82,   82,   82,   83,   93,   83,   83,   83,
        83,   83,   84,   84,   84,   84,   84,  102,   94,   81,
        83,  107,  119,  139,  102,   84,  127,  127,  147,  153,
       185,  136,   93,  131,  136,  131,  127,  175,  136,  119,
-      159,  159,  162,   83,   94,  162,  162,  107,   84,  147,
-      119,  168,  131,  185,  102,  168,  183,  153,  102,  168,
-      184,  291,  102,  730,  175,  186,  291,  139,  187,  196,
-
-      102,  166,  188,  192,  102,  197,  102,  102,  118,  118,
-      118,  118,  118,  731,  183,  732,  184,  118,  118,  118,
-      118,  118,  118,  186,  187,  188,  192,  196,  205,  250,
-      201,  408,  197,  203,  408,  283,  166,  166,  166,  210,
-      118,  118,  118,  118,  118,  118,  306,  166,  283,  166,
-      256,  166,  166,  201,  166,  205,  203,  208,  208,  208,
-      208,  208,  210,  298,  216,  301,  208,  208,  208,  208,
-      208,  208,  216,  256,  309,  306,  320,  216,  216,  313,
-      381,  733,  250,  593,  593,  250,  298,  370,  301,  208,
-      208,  208,  208,  208,  208,  308,  308,  309,  332,  734,
-
-      448,  350,  647,  332,  308,  320,  350,  313,  318,  318,
-      318,  318,  318,  448,  647,  370,  369,  318,  318,  318,
-      318,  318,  318,  362,  362,  362,  369,  384,  391,  362,
-      395,  384,  391,  419,  395,  429,  551,  429,  381,  735,
-      318,  318,  318,  318,  318,  318,  413,  661,  458,  736,
-      515,  413,  431,  458,  350,  515,  552,  660,  737,  350,
-      738,  419,  429,  551,  429,  430,  430,  430,  430,  430,
-      661,  739,  740,  741,  430,  430,  430,  430,  430,  430,
-      431,  553,  623,  742,  552,  660,  553,  623,  666,  666,
-      707,  666,  743,  707,  744,  745,  746,  430,  430,  430,
-
-      430,  430,  430,  746,  747,  748,  749,  750,  751,  753,
-      754,  755,  748,  756,  751,  757,  748,  758,  759,  760,
-      761,  762,  764,  765,  766,  767,  623,  768,  770,  771,
-      772,  773,  774,  775,  776,  777,  778,  779,  780,  781,
-      782,  783,  784,  785,  786,  787,  788,  789,  790,  792,
-      793,  765,  794,  795,  796,  797,  798,  799,  800,  801,
-      797,  802,  803,  804,  805,  806,  809,  810,  811,  812,
-      813,  814,  817,  818,  819,  820,  821,  822,  823,  824,
-      825,  822,  826,  827,  828,  830,  831,  832,  833,  834,
-      835,  836,  837,  838,  839,  840,  841,  842,  843,  844,
+      159,  159,  159,   83,   94,  183,  184,  107,   84,  147,
+      119,  729,  131,  185,  102,  186,  162,  153,  102,  162,
+      162,  168,  102,  188,  175,  168,  197,  139,  187,  168,
+
+      102,  166,  184,  183,  102,  192,  102,  102,  118,  118,
+      118,  118,  118,  186,  596,  596,  188,  118,  118,  118,
+      118,  118,  118,  197,  187,  196,  250,  201,  192,  205,
+      292,  410,  203,  284,  410,  292,  166,  166,  166,  210,
+      118,  118,  118,  118,  118,  118,  284,  166,  383,  166,
+      201,  166,  166,  196,  166,  203,  205,  208,  208,  208,
+      208,  208,  210,  256,  216,  299,  208,  208,  208,  208,
+      208,  208,  216,  302,  307,  309,  309,  216,  216,  250,
+      314,  310,  250,  386,  309,  321,  256,  386,  299,  208,
+      208,  208,  208,  208,  208,  333,  302,  351,  711,  371,
+
+      333,  711,  351,  307,  310,  370,  383,  421,  314,  319,
+      319,  319,  319,  319,  321,  370,  730,  665,  319,  319,
+      319,  319,  319,  319,  363,  363,  363,  371,  393,  397,
+      363,  415,  393,  397,  433,  421,  415,  431,  450,  431,
+      665,  319,  319,  319,  319,  319,  319,  460,  518,  651,
+      351,  450,  460,  518,  555,  351,  554,  664,  556,  731,
+      732,  651,  433,  556,  431,  734,  431,  432,  432,  432,
+      432,  432,  670,  670,  735,  670,  432,  432,  432,  432,
+      432,  432,  555,  554,  627,  664,  736,  737,  738,  627,
+      739,  740,  741,  742,  743,  744,  745,  746,  747,  432,
+
+      432,  432,  432,  432,  432,  748,  749,  750,  751,  752,
+      753,  754,  755,  756,  758,  751,  759,  753,  760,  756,
+      761,  753,  762,  763,  764,  765,  766,  767,  627,  769,
+      770,  771,  772,  773,  775,  776,  777,  778,  779,  780,
+      781,  782,  783,  784,  785,  786,  787,  788,  789,  790,
+      791,  792,  793,  794,  795,  797,  798,  799,  770,  800,
+      801,  802,  803,  804,  805,  806,  802,  807,  808,  809,
+      810,  811,  814,  815,  816,  817,  818,  819,  822,  823,
+      824,  825,  826,  827,  828,  829,  830,  827,  831,  832,
+      834,  836,  837,  838,  839,  840,  841,  842,  843,  844,
 
       845,  846,  847,  848,  849,  850,  851,  852,  853,  854,
-      855,  856,  857,  858,  860,  861,  862,  863,  864,  852,
-      865,  866,  867,  869,  870,  871,  872,  873,  874,  875,
+      855,  856,  857,  858,  859,  860,  861,  862,  863,  864,
+      866,  867,  868,  869,  870,  858,  871,  872,  873,  875,
       876,  877,  878,  879,  880,  881,  882,  883,  884,  885,
-      886,  887,  888,  890,  891,  892,  893,  870,  894,  895,
-      869,  896,  897,  898,  899,  901,  902,  903,  904,  905,
-      906,  908,  909,  910,  905,  911,  912,  913,  914,  915,
-      916,  917,  918,  919,  920,  921,  922,  923,  924,  925,
-      926,  927,  930,  931,  932,  934,  935,  936,  938,  939,
-      940,  926,  941,  942,  943,  944,  945,  946,  947,  948,
-
-      949,  950,  951,  952,  953,  954,  955,  957,  958,  959,
-      960,  961,  962,  963,  964,  965,  966,  905,  967,  968,
-      970,  969,  971,  972,  973,  974,  975,  976,  977,  978,
-      979,  980,  981,  982,  983,  984,  986,  987,  988,  989,
-      990,  991,  992,  993,  994,  995,  996,  968,  969,  997,
-      998,  999, 1000, 1001, 1003, 1004, 1005, 1006, 1007, 1008,
-     1004, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
+      886,  887,  888,  889,  890,  891,  892,  893,  894,  896,
+      897,  898,  899,  876,  900,  901,  875,  902,  903,  904,
+      905,  907,  908,  909,  910,  911,  912,  914,  915,  916,
+      911,  917,  918,  919,  920,  921,  922,  923,  924,  925,
+      926,  927,  928,  929,  930,  931,  932,  933,  936,  937,
+      938,  940,  941,  942,  944,  945,  946,  932,  947,  948,
+
+      949,  950,  951,  952,  953,  954,  955,  956,  957,  958,
+      959,  960,  961,  963,  964,  965,  966,  967,  968,  969,
+      970,  971,  972,  911,  973,  974,  976,  975,  977,  978,
+      979,  980,  981,  982,  983,  984,  985,  986,  987,  988,
+      989,  990,  992,  993,  994,  995,  996,  997,  998,  999,
+     1000, 1001, 1002,  974,  975, 1003, 1004, 1005, 1006, 1007,
+     1009, 1010, 1011, 1012, 1013, 1014, 1010, 1015, 1016, 1017,
      1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027,
-     1028, 1029, 1030, 1031, 1033, 1034, 1035, 1036, 1037, 1038,
-     1039, 1040, 1041, 1042, 1043, 1045, 1046, 1049, 1050, 1051,
+     1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037,
+     1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048,
 
-     1005, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060,
+     1049, 1051, 1052, 1055, 1056, 1057, 1011, 1058, 1059, 1060,
      1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070,
-     1071, 1072, 1073, 1075, 1077, 1078, 1079, 1080, 1081, 1082,
-     1083, 1084, 1085, 1086, 1062, 1087, 1088, 1089, 1090, 1091,
-     1063, 1092, 1095, 1097, 1099, 1100, 1101, 1102, 1103, 1104,
-     1105, 1106, 1107, 1108, 1109, 1110, 1112, 1113, 1114, 1116,
-     1117, 1118, 1119, 1122, 1124, 1125, 1126, 1127, 1128, 1129,
+     1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1081,
+     1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
+     1068, 1093, 1094, 1095, 1096, 1097, 1069, 1098, 1101, 1103,
+     1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
+     1115, 1116, 1118, 1119, 1120, 1122, 1123, 1124, 1125, 1128,
      1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139,
-     1141, 1142, 1143, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
-     1153, 1155, 1156, 1157, 1158, 1159, 1160, 1162, 1163, 1164,
-
-     1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1175,
-     1176, 1177, 1178, 1179, 1180, 1181, 1182, 1152, 1183, 1184,
-     1185, 1186, 1188, 1189, 1190, 1191, 1192, 1193, 1135, 1194,
-     1195, 1196, 1190, 1199, 1200, 1201, 1156, 1202, 1203, 1204,
-     1205, 1206, 1207, 1208, 1209, 1211, 1212, 1213, 1214, 1215,
-     1216, 1218, 1220, 1223, 1225, 1226, 1227, 1228, 1229, 1231,
-     1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242,
-     1243, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
-     1254, 1229, 1255, 1257, 1260, 1262, 1263, 1264, 1265, 1266,
-     1267, 1268, 1269, 1271, 1272, 1273, 1274, 1275, 1276, 1279,
-
-     1280, 1282, 1283, 1284, 1285, 1286, 1288, 1289, 1290, 1291,
-     1292, 1294, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303,
-     1304, 1305, 1306, 1308, 1309, 1311, 1312, 1313, 1314, 1315,
-     1316, 1317, 1318, 1318, 1319, 1320, 1321, 1322, 1323, 1296,
-     1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333,
-     1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1344,
-     1345, 1347, 1348, 1349, 1350, 1353, 1354, 1355, 1359, 1360,
-     1362, 1363, 1364, 1365, 1366, 1362, 1367, 1368, 1369, 1370,
-     1372, 1373, 1375, 1377, 1378, 1379, 1380, 1381, 1382, 1383,
-     1385, 1349, 1319, 1386, 1387, 1388, 1389, 1390, 1391, 1392,
-
-     1393, 1394, 1395, 1396, 1397, 1398, 1400, 1401, 1402, 1403,
-     1405, 1406, 1408, 1409, 1410, 1411, 1412, 1414, 1415, 1416,
-     1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427,
-     1428, 1429, 1430, 1431, 1432, 1433, 1434, 1436, 1437, 1438,
-     1440, 1442, 1444, 1445, 1446, 1447, 1448, 1449, 1451, 1452,
-     1453, 1454, 1455, 1456, 1457, 1459, 1460, 1461, 1462, 1464,
-     1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1474, 1475,
-     1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485,
-     1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1498,
-     1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1509,
-
-     1510, 1511, 1512, 1513, 1514, 1515, 1517, 1519, 1521, 1524,
-     1525, 1526, 1527, 1528, 1530, 1532, 1533, 1535, 1536, 1538,
-     1539, 1540, 1542, 1543, 1544, 1546, 1548, 1549, 1550, 1551,
-     1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561,
+     1140, 1141, 1142, 1143, 1144, 1145, 1147, 1148, 1149, 1152,
+     1153, 1154, 1155, 1156, 1157, 1158, 1159, 1161, 1162, 1163,
+
+     1164, 1165, 1166, 1168, 1169, 1170, 1171, 1172, 1173, 1174,
+     1175, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185,
+     1186, 1187, 1188, 1158, 1189, 1190, 1191, 1192, 1194, 1195,
+     1196, 1197, 1198, 1199, 1141, 1200, 1201, 1202, 1196, 1205,
+     1206, 1207, 1162, 1208, 1209, 1210, 1211, 1212, 1213, 1214,
+     1215, 1217, 1218, 1219, 1220, 1221, 1222, 1224, 1226, 1229,
+     1231, 1232, 1233, 1234, 1235, 1237, 1239, 1240, 1241, 1242,
+     1243, 1244, 1245, 1246, 1247, 1248, 1249, 1251, 1252, 1253,
+     1254, 1255, 1256, 1257, 1258, 1259, 1260, 1235, 1261, 1263,
+     1266, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1277,
+
+     1278, 1279, 1280, 1281, 1282, 1285, 1286, 1288, 1289, 1290,
+     1291, 1292, 1294, 1295, 1296, 1297, 1298, 1300, 1302, 1303,
+     1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1314,
+     1315, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1324,
+     1325, 1326, 1327, 1328, 1329, 1302, 1330, 1331, 1332, 1333,
+     1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
+     1344, 1345, 1346, 1347, 1348, 1350, 1351, 1353, 1354, 1355,
+     1356, 1359, 1360, 1361, 1365, 1366, 1368, 1369, 1370, 1371,
+     1372, 1368, 1373, 1374, 1375, 1376, 1378, 1379, 1381, 1383,
+     1384, 1385, 1386, 1387, 1388, 1389, 1391, 1355, 1325, 1392,
+
+     1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402,
+     1403, 1404, 1406, 1407, 1408, 1409, 1411, 1412, 1414, 1415,
+     1416, 1417, 1418, 1420, 1421, 1422, 1424, 1425, 1426, 1427,
+     1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437,
+     1438, 1439, 1440, 1442, 1443, 1444, 1446, 1448, 1450, 1451,
+     1452, 1453, 1454, 1455, 1457, 1458, 1459, 1460, 1461, 1462,
+     1463, 1465, 1466, 1467, 1468, 1470, 1471, 1472, 1473, 1474,
+     1475, 1476, 1477, 1478, 1480, 1481, 1482, 1483, 1484, 1485,
+     1486, 1487, 1488, 1489, 1490, 1491, 1494, 1495, 1496, 1497,
+     1498, 1499, 1500, 1501, 1502, 1504, 1505, 1506, 1507, 1508,
+
+     1509, 1510, 1511, 1512, 1513, 1515, 1516, 1517, 1518, 1519,
+     1520, 1521, 1523, 1525, 1527, 1530, 1531, 1532, 1533, 1534,
+     1536, 1538, 1539, 1541, 1542, 1544, 1545, 1546, 1548, 1549,
+     1550, 1552, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561,
      1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571,
-     1572, 1573, 1574, 1575, 1577, 1578, 1579, 1580, 1581, 1585,
-     1588, 1589, 1590, 1591, 1592, 1593, 1597, 1598, 1599, 1600,
-     1602, 1603, 1605, 1606, 1607, 1608, 1609, 1611, 1612, 1615,
-     1615, 1615, 1615, 1615, 1616, 1616, 1616, 1616, 1616, 1617,
-     1623, 1617, 1617, 1617, 1618, 1624, 1618, 1625, 1618, 1619,
-
-     1619, 1619, 1619, 1619, 1620, 1620, 1620, 1620, 1620, 1621,
-     1626, 1621, 1621, 1621, 1622, 1622, 1622,  725,  724,  723,
-      722,  721,  720,  718,  717,  716,  715,  714,  713,  712,
-      711,  709,  708,  706,  705,  704,  703,  702,  701,  700,
-      699,  698,  697,  696,  695,  694,  693,  692,  691,  690,
-      689,  687,  686,  685,  684,  683,  682,  681,  680,  679,
-      678,  677,  676,  675,  674,  673,  672,  671,  670,  669,
-      668,  667,  665,  664,  663,  662,  659,  658,  657,  654,
-      653,  652,  651,  650,  649,  648,  645,  644,  643,  642,
-      641,  640,  639,  638,  637,  636,  635,  634,  633,  631,
-
-      630,  629,  628,  627,  626,  625,  624,  622,  621,  619,
-      618,  617,  616,  615,  613,  612,  611,  609,  608,  606,
-      605,  604,  603,  602,  601,  600,  599,  598,  597,  596,
-      595,  594,  592,  591,  590,  589,  588,  586,  585,  584,
-      583,  582,  581,  580,  579,  577,  576,  575,  574,  573,
-      572,  571,  570,  569,  568,  567,  566,  565,  564,  563,
-      562,  561,  560,  559,  558,  557,  556,  555,  549,  547,
-      544,  543,  541,  540,  539,  537,  533,  532,  531,  530,
-      529,  528,  527,  526,  525,  524,  523,  522,  521,  520,
-      519,  518,  517,  516,  514,  513,  512,  511,  510,  509,
-
-      508,  507,  506,  505,  504,  502,  500,  499,  498,  497,
-      496,  495,  494,  493,  492,  491,  490,  489,  487,  486,
-      485,  484,  483,  482,  481,  480,  479,  478,  477,  476,
-      475,  474,  473,  472,  471,  470,  469,  468,  467,  466,
-      465,  464,  462,  461,  460,  459,  457,  456,  455,  454,
-      453,  452,  450,  449,  447,  446,  445,  444,  442,  441,
-      440,  439,  438,  437,  436,  434,  433,  432,  427,  426,
-      424,  423,  422,  421,  420,  417,  414,  412,  411,  410,
-      409,  407,  406,  405,  404,  403,  402,  401,  400,  399,
-      398,  397,  396,  394,  393,  392,  390,  389,  388,  387,
-
-      386,  385,  383,  382,  380,  379,  378,  377,  376,  375,
-      374,  373,  372,  368,  367,  365,  364,  363,  361,  360,
-      359,  358,  357,  356,  355,  354,  353,  352,  351,  349,
-      348,  347,  346,  345,  344,  343,  342,  341,  340,  339,
-      338,  337,  335,  334,  333,  331,  328,  327,  326,  325,
-      324,  323,  322,  321,  317,  315,  312,  310,  307,  304,
-      297,  296,  295,  294,  293,  292,  290,  289,  288,  287,
-      286,  285,  284,  282,  281,  280,  279,  278,  277,  276,
-      274,  273,  272,  271,  270,  269,  268,  267,  266,  265,
-      264,  263,  262,  261,  259,  258,  257,  255,  254,  253,
-
-      252,  251,  249,  248,  247,  246,  245,  244,  243,  242,
-      241,  239,  238,  237,  236,  235,  234,  233,  232,  231,
-      230,  229,  228,  227,  226,  225,  224,  223,  222,  221,
-      220,  219,  218,  217,  215,  214,  213,  212,  211,  209,
-      206,  204,  202,  200,  199,  194,  193,  189,  181,  180,
-      179,  178,  177,  176,  174,  173,  172,  171,  170,  169,
-      167,  165,  164,  163,  161,  160,  158,  157,  156,  155,
-      154,  152,  151,  150,  149,  148,  146,  145,  144,  143,
-      142,  141,  140,  138,  137,  135,  134,  130,  129,  128,
-      126,  125,  124,  122,  121,  120,  116,  110,  106,  105,
-
-      104,   98,   97,   78,   73,   67,   50,   49,   48,   43,
-       41,   39,   38,   24,   14,   11, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
-     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614
+     1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581,
+     1583, 1584, 1585, 1586, 1587, 1591, 1594, 1595, 1596, 1597,
+     1598, 1599, 1603, 1604, 1605, 1606, 1608, 1609, 1611, 1612,
+     1613, 1614, 1615, 1617, 1618, 1621, 1621, 1621, 1621, 1621,
+     1622, 1622, 1622, 1622, 1622, 1623, 1629, 1623, 1623, 1623,
+
+     1624, 1630, 1624, 1631, 1624, 1625, 1625, 1625, 1625, 1625,
+     1626, 1626, 1626, 1626, 1626, 1627, 1632, 1627, 1627, 1627,
+     1628, 1628, 1628,  725,  724,  722,  721,  720,  719,  718,
+      717,  716,  715,  713,  712,  710,  709,  708,  707,  706,
+      705,  704,  703,  702,  701,  700,  699,  698,  697,  696,
+      695,  694,  693,  691,  690,  689,  688,  687,  686,  685,
+      684,  683,  682,  681,  680,  679,  678,  677,  676,  675,
+      674,  673,  672,  671,  669,  668,  667,  666,  663,  662,
+      661,  658,  657,  656,  655,  654,  653,  652,  649,  648,
+      647,  646,  645,  644,  643,  642,  641,  640,  639,  638,
+
+      637,  635,  634,  633,  632,  631,  630,  629,  628,  626,
+      625,  623,  622,  621,  620,  619,  618,  616,  615,  614,
+      612,  611,  609,  608,  607,  606,  605,  604,  603,  602,
+      601,  600,  599,  598,  597,  595,  594,  593,  592,  591,
+      589,  588,  587,  586,  585,  584,  583,  582,  580,  579,
+      578,  577,  576,  575,  574,  573,  572,  571,  570,  569,
+      568,  567,  566,  565,  564,  563,  562,  561,  560,  559,
+      558,  552,  550,  547,  546,  544,  543,  542,  540,  536,
+      535,  534,  533,  532,  531,  530,  529,  528,  527,  526,
+      525,  524,  523,  522,  521,  520,  519,  517,  516,  515,
+
+      514,  513,  512,  511,  510,  509,  508,  507,  505,  503,
+      502,  501,  500,  499,  498,  497,  496,  495,  494,  493,
+      492,  491,  489,  488,  487,  486,  485,  484,  483,  482,
+      481,  480,  479,  478,  477,  476,  475,  474,  473,  472,
+      471,  470,  469,  468,  467,  466,  464,  463,  462,  461,
+      459,  458,  457,  456,  455,  454,  452,  451,  449,  448,
+      447,  446,  444,  443,  442,  441,  440,  439,  438,  436,
+      435,  434,  429,  428,  426,  425,  424,  423,  422,  419,
+      416,  414,  413,  412,  411,  409,  408,  407,  406,  405,
+      404,  403,  402,  401,  400,  399,  398,  396,  395,  394,
+
+      392,  391,  390,  389,  388,  387,  385,  384,  382,  381,
+      380,  379,  378,  377,  376,  375,  374,  373,  369,  368,
+      366,  365,  364,  362,  361,  360,  359,  358,  357,  356,
+      355,  354,  353,  352,  350,  349,  348,  347,  346,  345,
+      344,  343,  342,  341,  340,  339,  338,  336,  335,  334,
+      332,  329,  328,  327,  326,  325,  324,  323,  322,  318,
+      316,  313,  311,  308,  305,  298,  297,  296,  295,  294,
+      293,  291,  290,  289,  288,  287,  286,  285,  283,  282,
+      281,  280,  279,  278,  277,  275,  274,  273,  272,  271,
+      270,  269,  268,  267,  266,  265,  264,  263,  262,  261,
+
+      259,  258,  257,  255,  254,  253,  252,  251,  249,  248,
+      247,  246,  245,  244,  243,  242,  241,  239,  238,  237,
+      236,  235,  234,  233,  232,  231,  230,  229,  228,  227,
+      226,  225,  224,  223,  222,  221,  220,  219,  218,  217,
+      215,  214,  213,  212,  211,  209,  206,  204,  202,  200,
+      199,  194,  193,  189,  181,  180,  179,  178,  177,  176,
+      174,  173,  172,  171,  170,  169,  167,  165,  164,  163,
+      161,  160,  158,  157,  156,  155,  154,  152,  151,  150,
+      149,  148,  146,  145,  144,  143,  142,  141,  140,  138,
+      137,  135,  134,  130,  129,  128,  126,  125,  124,  122,
+
+      121,  120,  116,  110,  106,  105,  104,   98,   97,   78,
+       73,   67,   50,   49,   48,   43,   41,   39,   38,   24,
+       14,   11, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
+     1620, 1620, 1620, 1620, 1620, 1620
+
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1764,7 +1770,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[190] =
+static const flex_int16_t yy_rule_linenum[191] =
     {   0,
       149,  151,  153,  158,  159,  164,  165,  166,  178,  181,
       186,  193,  202,  211,  220,  229,  238,  247,  256,  265,
@@ -1779,13 +1785,13 @@ static const flex_int16_t yy_rule_linenum[190] =
 
      1099, 1109, 1118, 1128, 1139, 1148, 1157, 1166, 1175, 1184,
      1194, 1203, 1212, 1221, 1232, 1243, 1254, 1263, 1273, 1282,
-     1291, 1300, 1309, 1319, 1328, 1337, 1347, 1359, 1372, 1381,
-     1390, 1400, 1410, 1419, 1430, 1440, 1449, 1459, 1469, 1478,
-     1487, 1496, 1505, 1515, 1524, 1534, 1543, 1552, 1561, 1570,
-     1579, 1588, 1597, 1606, 1615, 1624, 1633, 1642, 1651, 1660,
-     1669, 1678, 1687, 1696, 1705, 1714, 1723, 1732, 1741, 1750,
-     1759, 1769, 1868, 1873, 1878, 1883, 1884, 1885, 1886, 1887,
-     1888, 1890, 1908, 1921, 1926, 1930, 1932, 1934, 1936
+     1291, 1300, 1309, 1318, 1327, 1336, 1345, 1355, 1367, 1380,
+     1389, 1398, 1408, 1418, 1427, 1438, 1448, 1457, 1467, 1477,
+     1486, 1495, 1504, 1513, 1523, 1532, 1542, 1551, 1560, 1569,
+     1578, 1587, 1596, 1605, 1614, 1623, 1632, 1641, 1650, 1659,
+     1668, 1677, 1686, 1695, 1704, 1713, 1722, 1731, 1740, 1749,
+     1758, 1767, 1777, 1876, 1881, 1886, 1891, 1892, 1893, 1894,
+     1895, 1896, 1898, 1916, 1929, 1934, 1938, 1940, 1942, 1944
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1838,7 +1844,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1841 "dhcp6_lexer.cc"
+#line 1848 "dhcp6_lexer.cc"
 /* noyywrap disables automatic rewinding for the next file to parse. Since we
    always parse only a single string, there's no need to do any wraps. And
    using yywrap requires linking with -lfl, which provides the default yywrap
@@ -1864,8 +1870,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 1867 "dhcp6_lexer.cc"
-#line 1868 "dhcp6_lexer.cc"
+#line 1874 "dhcp6_lexer.cc"
+#line 1875 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2197,7 +2203,7 @@ YY_DECL
     }
 
 
-#line 2200 "dhcp6_lexer.cc"
+#line 2207 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2226,13 +2232,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 >= 1615 )
+                               if ( yy_current_state >= 1621 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1614 );
+               while ( yy_current_state != 1620 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2251,13 +2257,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 < 190 )
+                       else if ( yy_act < 191 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 190 )
+                       else if ( yy_act == 191 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 191 )
+                       else if ( yy_act == 192 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -3824,7 +3830,19 @@ YY_RULE_SETUP
        YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 1319 "dhcp6_lexer.ll"
+#line 1318 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
+        return isc::dhcp::Dhcp6Parser::make_PATTERN(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("pattern", driver.loc_);
+    }
+}
+       YY_BREAK
+case 125:
+YY_RULE_SETUP
+#line 1327 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3834,9 +3852,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 1328 "dhcp6_lexer.ll"
+#line 1336 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3846,9 +3864,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 1337 "dhcp6_lexer.ll"
+#line 1345 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3859,9 +3877,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 1347 "dhcp6_lexer.ll"
+#line 1355 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3874,9 +3892,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 1359 "dhcp6_lexer.ll"
+#line 1367 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3890,9 +3908,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 1372 "dhcp6_lexer.ll"
+#line 1380 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3902,9 +3920,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 1381 "dhcp6_lexer.ll"
+#line 1389 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3914,9 +3932,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 1390 "dhcp6_lexer.ll"
+#line 1398 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3927,9 +3945,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 1400 "dhcp6_lexer.ll"
+#line 1408 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3940,9 +3958,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 1410 "dhcp6_lexer.ll"
+#line 1418 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3952,9 +3970,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 1419 "dhcp6_lexer.ll"
+#line 1427 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -3966,9 +3984,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 136:
 YY_RULE_SETUP
-#line 1430 "dhcp6_lexer.ll"
+#line 1438 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3979,9 +3997,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 137:
 YY_RULE_SETUP
-#line 1440 "dhcp6_lexer.ll"
+#line 1448 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3991,9 +4009,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 1449 "dhcp6_lexer.ll"
+#line 1457 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -4004,9 +4022,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 1459 "dhcp6_lexer.ll"
+#line 1467 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4017,9 +4035,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 1469 "dhcp6_lexer.ll"
+#line 1477 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -4029,9 +4047,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 1478 "dhcp6_lexer.ll"
+#line 1486 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4041,9 +4059,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 1487 "dhcp6_lexer.ll"
+#line 1495 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4053,9 +4071,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 1496 "dhcp6_lexer.ll"
+#line 1504 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4065,9 +4083,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 1505 "dhcp6_lexer.ll"
+#line 1513 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4078,9 +4096,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 1515 "dhcp6_lexer.ll"
+#line 1523 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -4090,9 +4108,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 1524 "dhcp6_lexer.ll"
+#line 1532 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4102,9 +4120,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 1534 "dhcp6_lexer.ll"
+#line 1542 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -4114,9 +4132,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 1543 "dhcp6_lexer.ll"
+#line 1551 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -4126,9 +4144,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 149:
 YY_RULE_SETUP
-#line 1552 "dhcp6_lexer.ll"
+#line 1560 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4138,9 +4156,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 1561 "dhcp6_lexer.ll"
+#line 1569 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4150,9 +4168,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 151:
 YY_RULE_SETUP
-#line 1570 "dhcp6_lexer.ll"
+#line 1578 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4162,9 +4180,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 152:
 YY_RULE_SETUP
-#line 1579 "dhcp6_lexer.ll"
+#line 1587 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4174,9 +4192,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 153:
 YY_RULE_SETUP
-#line 1588 "dhcp6_lexer.ll"
+#line 1596 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4186,9 +4204,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 154:
 YY_RULE_SETUP
-#line 1597 "dhcp6_lexer.ll"
+#line 1605 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4198,9 +4216,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 155:
 YY_RULE_SETUP
-#line 1606 "dhcp6_lexer.ll"
+#line 1614 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4210,9 +4228,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 156:
 YY_RULE_SETUP
-#line 1615 "dhcp6_lexer.ll"
+#line 1623 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4222,9 +4240,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 157:
 YY_RULE_SETUP
-#line 1624 "dhcp6_lexer.ll"
+#line 1632 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4234,9 +4252,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 158:
 YY_RULE_SETUP
-#line 1633 "dhcp6_lexer.ll"
+#line 1641 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4246,9 +4264,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 159:
 YY_RULE_SETUP
-#line 1642 "dhcp6_lexer.ll"
+#line 1650 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4258,9 +4276,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 160:
 YY_RULE_SETUP
-#line 1651 "dhcp6_lexer.ll"
+#line 1659 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4270,9 +4288,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 161:
 YY_RULE_SETUP
-#line 1660 "dhcp6_lexer.ll"
+#line 1668 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4282,9 +4300,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 161:
+case 162:
 YY_RULE_SETUP
-#line 1669 "dhcp6_lexer.ll"
+#line 1677 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4294,9 +4312,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 162:
+case 163:
 YY_RULE_SETUP
-#line 1678 "dhcp6_lexer.ll"
+#line 1686 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4306,9 +4324,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 163:
+case 164:
 YY_RULE_SETUP
-#line 1687 "dhcp6_lexer.ll"
+#line 1695 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4318,9 +4336,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 164:
+case 165:
 YY_RULE_SETUP
-#line 1696 "dhcp6_lexer.ll"
+#line 1704 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4330,9 +4348,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 165:
+case 166:
 YY_RULE_SETUP
-#line 1705 "dhcp6_lexer.ll"
+#line 1713 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4342,9 +4360,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 166:
+case 167:
 YY_RULE_SETUP
-#line 1714 "dhcp6_lexer.ll"
+#line 1722 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4354,9 +4372,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 167:
+case 168:
 YY_RULE_SETUP
-#line 1723 "dhcp6_lexer.ll"
+#line 1731 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4366,9 +4384,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 168:
+case 169:
 YY_RULE_SETUP
-#line 1732 "dhcp6_lexer.ll"
+#line 1740 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4378,9 +4396,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 169:
+case 170:
 YY_RULE_SETUP
-#line 1741 "dhcp6_lexer.ll"
+#line 1749 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4390,9 +4408,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 170:
+case 171:
 YY_RULE_SETUP
-#line 1750 "dhcp6_lexer.ll"
+#line 1758 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4402,9 +4420,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 171:
+case 172:
 YY_RULE_SETUP
-#line 1759 "dhcp6_lexer.ll"
+#line 1767 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4414,9 +4432,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 172:
+case 173:
 YY_RULE_SETUP
-#line 1769 "dhcp6_lexer.ll"
+#line 1777 "dhcp6_lexer.ll"
 {
     /* A string has been matched. It contains the actual string and single quotes.
        We need to get those quotes out of the way and just use its content, e.g.
@@ -4516,65 +4534,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 173:
-/* rule 173 can match eol */
+case 174:
+/* rule 174 can match eol */
 YY_RULE_SETUP
-#line 1868 "dhcp6_lexer.ll"
+#line 1876 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 174:
-/* rule 174 can match eol */
+case 175:
+/* rule 175 can match eol */
 YY_RULE_SETUP
-#line 1873 "dhcp6_lexer.ll"
+#line 1881 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 175:
+case 176:
 YY_RULE_SETUP
-#line 1878 "dhcp6_lexer.ll"
+#line 1886 "dhcp6_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 176:
+case 177:
 YY_RULE_SETUP
-#line 1883 "dhcp6_lexer.ll"
+#line 1891 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 177:
+case 178:
 YY_RULE_SETUP
-#line 1884 "dhcp6_lexer.ll"
+#line 1892 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 178:
+case 179:
 YY_RULE_SETUP
-#line 1885 "dhcp6_lexer.ll"
+#line 1893 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 179:
+case 180:
 YY_RULE_SETUP
-#line 1886 "dhcp6_lexer.ll"
+#line 1894 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 180:
+case 181:
 YY_RULE_SETUP
-#line 1887 "dhcp6_lexer.ll"
+#line 1895 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 181:
+case 182:
 YY_RULE_SETUP
-#line 1888 "dhcp6_lexer.ll"
+#line 1896 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 182:
+case 183:
 YY_RULE_SETUP
-#line 1890 "dhcp6_lexer.ll"
+#line 1898 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4593,9 +4611,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 183:
+case 184:
 YY_RULE_SETUP
-#line 1908 "dhcp6_lexer.ll"
+#line 1916 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -4609,43 +4627,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 184:
+case 185:
 YY_RULE_SETUP
-#line 1921 "dhcp6_lexer.ll"
+#line 1929 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 185:
+case 186:
 YY_RULE_SETUP
-#line 1926 "dhcp6_lexer.ll"
+#line 1934 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 186:
+case 187:
 YY_RULE_SETUP
-#line 1930 "dhcp6_lexer.ll"
+#line 1938 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 187:
+case 188:
 YY_RULE_SETUP
-#line 1932 "dhcp6_lexer.ll"
+#line 1940 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 188:
+case 189:
 YY_RULE_SETUP
-#line 1934 "dhcp6_lexer.ll"
+#line 1942 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 189:
+case 190:
 YY_RULE_SETUP
-#line 1936 "dhcp6_lexer.ll"
+#line 1944 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1938 "dhcp6_lexer.ll"
+#line 1946 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -4669,12 +4687,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 190:
+case 191:
 YY_RULE_SETUP
-#line 1961 "dhcp6_lexer.ll"
+#line 1969 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4677 "dhcp6_lexer.cc"
+#line 4696 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4993,7 +5011,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 >= 1615 )
+                       if ( yy_current_state >= 1621 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5026,11 +5044,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 >= 1615 )
+               if ( yy_current_state >= 1621 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1614);
+       yy_is_jam = (yy_current_state == 1620);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5779,7 +5797,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1961 "dhcp6_lexer.ll"
+#line 1969 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index 28cf46bdcc6b247e30eabcf2775908e94b8a20e1..e4f95b018f365ad73d05dda91ff87911c8f8ced8 100644 (file)
@@ -1314,6 +1314,14 @@ ControlCharacterFill            [^"\\]|\\{JSONEscapeSequence}
     }
 }
 
+\"pattern\" {
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
+        return isc::dhcp::Dhcp6Parser::make_PATTERN(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("pattern", driver.loc_);
+    }
+}
 
 \"debuglevel\" {
     switch(driver.ctx_) {
index 3cb9d24354d88880e690c5d366d5c8c6b530cd37..a2cdd439fa132e6186874bcde6e11c90ad69debe 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.4.1.
+// A Bison parser, made by GNU Bison 3.2.1.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 
 
 // Unqualified %code blocks.
-#line 34 "dhcp6_parser.yy"
+#line 34 "dhcp6_parser.yy" // lalr1.cc:438
 
 #include <dhcp6/parser_context.h>
 
-#line 51 "dhcp6_parser.cc"
+#line 51 "dhcp6_parser.cc" // lalr1.cc:438
 
 
 #ifndef YY_
@@ -88,7 +88,7 @@
         {                                                               \
           (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end;      \
         }                                                               \
-    while (false)
+    while (/*CONSTCOND*/ false)
 # endif
 
 
 #define YYERROR         goto yyerrorlab
 #define YYRECOVERING()  (!!yyerrstatus_)
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // lalr1.cc:513
 namespace isc { namespace dhcp {
-#line 146 "dhcp6_parser.cc"
-
+#line 146 "dhcp6_parser.cc" // lalr1.cc:513
 
   /* Return YYSTR after stripping away unnecessary quotes and
      backslashes, so that it's suitable for yyerror.  The heuristic is
@@ -155,7 +154,7 @@ namespace isc { namespace dhcp {
   {
     if (*yystr == '"')
       {
-        std::string yyr;
+        std::string yyr = "";
         char const *yyp = yystr;
 
         for (;;)
@@ -168,10 +167,7 @@ namespace isc { namespace dhcp {
             case '\\':
               if (*++yyp != '\\')
                 goto do_not_strip_quotes;
-              else
-                goto append;
-
-            append:
+              // Fall through.
             default:
               yyr += *yyp;
               break;
@@ -199,8 +195,6 @@ namespace isc { namespace dhcp {
   Dhcp6Parser::~Dhcp6Parser ()
   {}
 
-  Dhcp6Parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
-  {}
 
   /*---------------.
   | Symbol types.  |
@@ -209,16 +203,16 @@ namespace isc { namespace dhcp {
 
 
   // by_state.
-  Dhcp6Parser::by_state::by_state () YY_NOEXCEPT
+  Dhcp6Parser::by_state::by_state ()
     : state (empty_state)
   {}
 
-  Dhcp6Parser::by_state::by_state (const by_state& that) YY_NOEXCEPT
-    : state (that.state)
+  Dhcp6Parser::by_state::by_state (const by_state& other)
+    : state (other.state)
   {}
 
   void
-  Dhcp6Parser::by_state::clear () YY_NOEXCEPT
+  Dhcp6Parser::by_state::clear ()
   {
     state = empty_state;
   }
@@ -230,12 +224,12 @@ namespace isc { namespace dhcp {
     that.clear ();
   }
 
-  Dhcp6Parser::by_state::by_state (state_type s) YY_NOEXCEPT
+  Dhcp6Parser::by_state::by_state (state_type s)
     : state (s)
   {}
 
   Dhcp6Parser::symbol_number_type
-  Dhcp6Parser::by_state::type_get () const YY_NOEXCEPT
+  Dhcp6Parser::by_state::type_get () const
   {
     if (state == empty_state)
       return empty_symbol;
@@ -251,29 +245,29 @@ namespace isc { namespace dhcp {
   {
     switch (that.type_get ())
     {
-      case 202: // value
-      case 206: // map_value
-      case 267: // db_type
-      case 360: // hr_mode
-      case 496: // duid_type
-      case 531: // ncr_protocol_value
-      case 538: // replace_client_name_value
+      case 203: // value
+      case 207: // map_value
+      case 268: // db_type
+      case 361: // hr_mode
+      case 497: // duid_type
+      case 532: // ncr_protocol_value
+      case 539: // replace_client_name_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 184: // "boolean"
+      case 185: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 183: // "floating point"
+      case 184: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 182: // "integer"
+      case 183: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 181: // "constant string"
+      case 182: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -281,7 +275,7 @@ namespace isc { namespace dhcp {
         break;
     }
 
-#if 201103L <= YY_CPLUSPLUS
+#if defined __cplusplus && 201103L <= __cplusplus
     // that is emptied.
     that.state = empty_state;
 #endif
@@ -292,29 +286,29 @@ namespace isc { namespace dhcp {
   {
     switch (that.type_get ())
     {
-      case 202: // value
-      case 206: // map_value
-      case 267: // db_type
-      case 360: // hr_mode
-      case 496: // duid_type
-      case 531: // ncr_protocol_value
-      case 538: // replace_client_name_value
+      case 203: // value
+      case 207: // map_value
+      case 268: // db_type
+      case 361: // hr_mode
+      case 497: // duid_type
+      case 532: // ncr_protocol_value
+      case 539: // replace_client_name_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 184: // "boolean"
+      case 185: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 183: // "floating point"
+      case 184: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 182: // "integer"
+      case 183: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 181: // "constant string"
+      case 182: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -326,36 +320,36 @@ namespace isc { namespace dhcp {
     that.type = empty_symbol;
   }
 
-#if YY_CPLUSPLUS < 201103L
+#if !defined __cplusplus || __cplusplus < 201103L
   Dhcp6Parser::stack_symbol_type&
   Dhcp6Parser::stack_symbol_type::operator= (stack_symbol_type& that)
   {
     state = that.state;
     switch (that.type_get ())
     {
-      case 202: // value
-      case 206: // map_value
-      case 267: // db_type
-      case 360: // hr_mode
-      case 496: // duid_type
-      case 531: // ncr_protocol_value
-      case 538: // replace_client_name_value
+      case 203: // value
+      case 207: // map_value
+      case 268: // db_type
+      case 361: // hr_mode
+      case 497: // duid_type
+      case 532: // ncr_protocol_value
+      case 539: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 184: // "boolean"
+      case 185: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 183: // "floating point"
+      case 184: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 182: // "integer"
+      case 183: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 181: // "constant string"
+      case 182: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -387,83 +381,93 @@ namespace isc { namespace dhcp {
     std::ostream& yyoutput = yyo;
     YYUSE (yyoutput);
     symbol_number_type yytype = yysym.type_get ();
-#if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ * 100 + __GNUC_MINOR__ <= 408
     // Avoid a (spurious) G++ 4.8 warning about "array subscript is
     // below array bounds".
     if (yysym.empty ())
       std::abort ();
-#endif
     yyo << (yytype < yyntokens_ ? "token" : "nterm")
         << ' ' << yytname_[yytype] << " ("
         << yysym.location << ": ";
     switch (yytype)
     {
-      case 181: // "constant string"
-#line 260 "dhcp6_parser.yy"
-        { yyoutput << yysym.value.template as < std::string > (); }
-#line 405 "dhcp6_parser.cc"
+            case 182: // "constant string"
+
+#line 261 "dhcp6_parser.yy" // lalr1.cc:672
+        { yyoutput << yysym.value.template as< std::string > (); }
+#line 398 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 182: // "integer"
-#line 260 "dhcp6_parser.yy"
-        { yyoutput << yysym.value.template as < int64_t > (); }
-#line 411 "dhcp6_parser.cc"
+      case 183: // "integer"
+
+#line 261 "dhcp6_parser.yy" // lalr1.cc:672
+        { yyoutput << yysym.value.template as< int64_t > (); }
+#line 405 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 183: // "floating point"
-#line 260 "dhcp6_parser.yy"
-        { yyoutput << yysym.value.template as < double > (); }
-#line 417 "dhcp6_parser.cc"
+      case 184: // "floating point"
+
+#line 261 "dhcp6_parser.yy" // lalr1.cc:672
+        { yyoutput << yysym.value.template as< double > (); }
+#line 412 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 184: // "boolean"
-#line 260 "dhcp6_parser.yy"
-        { yyoutput << yysym.value.template as < bool > (); }
-#line 423 "dhcp6_parser.cc"
+      case 185: // "boolean"
+
+#line 261 "dhcp6_parser.yy" // lalr1.cc:672
+        { yyoutput << yysym.value.template as< bool > (); }
+#line 419 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 202: // value
-#line 260 "dhcp6_parser.yy"
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 429 "dhcp6_parser.cc"
+      case 203: // value
+
+#line 261 "dhcp6_parser.yy" // lalr1.cc:672
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 426 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 206: // map_value
-#line 260 "dhcp6_parser.yy"
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 435 "dhcp6_parser.cc"
+      case 207: // map_value
+
+#line 261 "dhcp6_parser.yy" // lalr1.cc:672
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 433 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 267: // db_type
-#line 260 "dhcp6_parser.yy"
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 441 "dhcp6_parser.cc"
+      case 268: // db_type
+
+#line 261 "dhcp6_parser.yy" // lalr1.cc:672
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 440 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 360: // hr_mode
-#line 260 "dhcp6_parser.yy"
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 447 "dhcp6_parser.cc"
+      case 361: // hr_mode
+
+#line 261 "dhcp6_parser.yy" // lalr1.cc:672
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 447 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 496: // duid_type
-#line 260 "dhcp6_parser.yy"
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 453 "dhcp6_parser.cc"
+      case 497: // duid_type
+
+#line 261 "dhcp6_parser.yy" // lalr1.cc:672
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 454 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 531: // ncr_protocol_value
-#line 260 "dhcp6_parser.yy"
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 459 "dhcp6_parser.cc"
+      case 532: // ncr_protocol_value
+
+#line 261 "dhcp6_parser.yy" // lalr1.cc:672
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 461 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 538: // replace_client_name_value
-#line 260 "dhcp6_parser.yy"
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 465 "dhcp6_parser.cc"
+      case 539: // replace_client_name_value
+
+#line 261 "dhcp6_parser.yy" // lalr1.cc:672
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 468 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
+
       default:
         break;
     }
@@ -482,7 +486,7 @@ namespace isc { namespace dhcp {
   void
   Dhcp6Parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
   {
-#if 201103L <= YY_CPLUSPLUS
+#if defined __cplusplus && 201103L <= __cplusplus
     yypush_ (m, stack_symbol_type (s, std::move (sym)));
 #else
     stack_symbol_type ss (s, sym);
@@ -586,22 +590,17 @@ namespace isc { namespace dhcp {
     yystack_.clear ();
     yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
 
-  /*-----------------------------------------------.
-  | yynewstate -- push a new symbol on the stack.  |
-  `-----------------------------------------------*/
+    // A new symbol was pushed on the stack.
   yynewstate:
     YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
 
     // Accept?
     if (yystack_[0].state == yyfinal_)
-      YYACCEPT;
+      goto yyacceptlab;
 
     goto yybackup;
 
-
-  /*-----------.
-  | yybackup.  |
-  `-----------*/
+    // Backup.
   yybackup:
     // Try to take a decision without lookahead.
     yyn = yypact_[yystack_[0].state];
@@ -622,7 +621,6 @@ namespace isc { namespace dhcp {
 #if YY_EXCEPTIONS
         catch (const syntax_error& yyexc)
           {
-            YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
             error (yyexc);
             goto yyerrlab1;
           }
@@ -654,7 +652,6 @@ namespace isc { namespace dhcp {
     yypush_ ("Shifting", yyn, YY_MOVE (yyla));
     goto yynewstate;
 
-
   /*-----------------------------------------------------------.
   | yydefault -- do the default action for the current state.  |
   `-----------------------------------------------------------*/
@@ -664,9 +661,8 @@ namespace isc { namespace dhcp {
       goto yyerrlab;
     goto yyreduce;
 
-
   /*-----------------------------.
-  | yyreduce -- do a reduction.  |
+  | yyreduce -- Do a reduction.  |
   `-----------------------------*/
   yyreduce:
     yylen = yyr2_[yyn];
@@ -678,29 +674,29 @@ namespace isc { namespace dhcp {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 202: // value
-      case 206: // map_value
-      case 267: // db_type
-      case 360: // hr_mode
-      case 496: // duid_type
-      case 531: // ncr_protocol_value
-      case 538: // replace_client_name_value
+      case 203: // value
+      case 207: // map_value
+      case 268: // db_type
+      case 361: // hr_mode
+      case 497: // duid_type
+      case 532: // ncr_protocol_value
+      case 539: // replace_client_name_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 184: // "boolean"
+      case 185: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 183: // "floating point"
+      case 184: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 182: // "integer"
+      case 183: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 181: // "constant string"
+      case 182: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -711,8 +707,8 @@ namespace isc { namespace dhcp {
 
       // Default location.
       {
-        stack_type::slice range (yystack_, yylen);
-        YYLLOC_DEFAULT (yylhs.location, range, yylen);
+        slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
+        YYLLOC_DEFAULT (yylhs.location, slice, yylen);
         yyerror_range[1].location = yylhs.location;
       }
 
@@ -725,286 +721,286 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 269 "dhcp6_parser.yy"
+#line 270 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 731 "dhcp6_parser.cc"
+#line 727 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 4:
-#line 270 "dhcp6_parser.yy"
+#line 271 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.CONFIG; }
-#line 737 "dhcp6_parser.cc"
+#line 733 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 6:
-#line 271 "dhcp6_parser.yy"
+#line 272 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.DHCP6; }
-#line 743 "dhcp6_parser.cc"
+#line 739 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 8:
-#line 272 "dhcp6_parser.yy"
+#line 273 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 749 "dhcp6_parser.cc"
+#line 745 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 10:
-#line 273 "dhcp6_parser.yy"
+#line 274 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.SUBNET6; }
-#line 755 "dhcp6_parser.cc"
+#line 751 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 12:
-#line 274 "dhcp6_parser.yy"
+#line 275 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.POOLS; }
-#line 761 "dhcp6_parser.cc"
+#line 757 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 14:
-#line 275 "dhcp6_parser.yy"
+#line 276 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.PD_POOLS; }
-#line 767 "dhcp6_parser.cc"
+#line 763 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 16:
-#line 276 "dhcp6_parser.yy"
+#line 277 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.RESERVATIONS; }
-#line 773 "dhcp6_parser.cc"
+#line 769 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 18:
-#line 277 "dhcp6_parser.yy"
+#line 278 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.DHCP6; }
-#line 779 "dhcp6_parser.cc"
+#line 775 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 20:
-#line 278 "dhcp6_parser.yy"
+#line 279 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.OPTION_DEF; }
-#line 785 "dhcp6_parser.cc"
+#line 781 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 22:
-#line 279 "dhcp6_parser.yy"
+#line 280 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.OPTION_DATA; }
-#line 791 "dhcp6_parser.cc"
+#line 787 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 24:
-#line 280 "dhcp6_parser.yy"
+#line 281 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 797 "dhcp6_parser.cc"
+#line 793 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 26:
-#line 281 "dhcp6_parser.yy"
+#line 282 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.DHCP_DDNS; }
-#line 803 "dhcp6_parser.cc"
+#line 799 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 28:
-#line 282 "dhcp6_parser.yy"
+#line 283 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.LOGGING; }
-#line 809 "dhcp6_parser.cc"
+#line 805 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 30:
-#line 283 "dhcp6_parser.yy"
+#line 284 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.CONFIG_CONTROL; }
-#line 815 "dhcp6_parser.cc"
+#line 811 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 32:
-#line 291 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 821 "dhcp6_parser.cc"
+#line 292 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
+#line 817 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 33:
-#line 292 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 827 "dhcp6_parser.cc"
+#line 293 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
+#line 823 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 34:
-#line 293 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 833 "dhcp6_parser.cc"
+#line 294 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
+#line 829 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 35:
-#line 294 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 839 "dhcp6_parser.cc"
+#line 295 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
+#line 835 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 36:
-#line 295 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 845 "dhcp6_parser.cc"
+#line 296 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+#line 841 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 37:
-#line 296 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 851 "dhcp6_parser.cc"
+#line 297 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 847 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 38:
-#line 297 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 857 "dhcp6_parser.cc"
+#line 298 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 853 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 39:
-#line 300 "dhcp6_parser.yy"
+#line 301 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Push back the JSON value on the stack
-    ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
 }
-#line 866 "dhcp6_parser.cc"
+#line 862 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 40:
-#line 305 "dhcp6_parser.yy"
+#line 306 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 877 "dhcp6_parser.cc"
+#line 873 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 41:
-#line 310 "dhcp6_parser.yy"
+#line 311 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     // for it.
 }
-#line 887 "dhcp6_parser.cc"
+#line 883 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 42:
-#line 316 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 893 "dhcp6_parser.cc"
+#line 317 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 889 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 45:
-#line 323 "dhcp6_parser.yy"
+#line 324 "dhcp6_parser.yy" // lalr1.cc:907
     {
                   // map containing a single entry
-                  ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
+                  ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 902 "dhcp6_parser.cc"
+#line 898 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 46:
-#line 327 "dhcp6_parser.yy"
+#line 328 "dhcp6_parser.yy" // lalr1.cc:907
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
-                  ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
+                  ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 912 "dhcp6_parser.cc"
+#line 908 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 47:
-#line 334 "dhcp6_parser.yy"
+#line 335 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
 }
-#line 921 "dhcp6_parser.cc"
+#line 917 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 48:
-#line 337 "dhcp6_parser.yy"
+#line 338 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // list parsing complete. Put any sanity checking here
 }
-#line 929 "dhcp6_parser.cc"
+#line 925 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 51:
-#line 345 "dhcp6_parser.yy"
+#line 346 "dhcp6_parser.yy" // lalr1.cc:907
     {
                   // List consisting of a single element.
-                  ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
+                  ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 938 "dhcp6_parser.cc"
+#line 934 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 52:
-#line 349 "dhcp6_parser.yy"
+#line 350 "dhcp6_parser.yy" // lalr1.cc:907
     {
                   // List ending with , and a value.
-                  ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
+                  ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 947 "dhcp6_parser.cc"
+#line 943 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 53:
-#line 356 "dhcp6_parser.yy"
+#line 357 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // List parsing about to start
 }
-#line 955 "dhcp6_parser.cc"
+#line 951 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 54:
-#line 358 "dhcp6_parser.yy"
+#line 359 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
 }
-#line 964 "dhcp6_parser.cc"
+#line 960 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 57:
-#line 367 "dhcp6_parser.yy"
+#line 368 "dhcp6_parser.yy" // lalr1.cc:907
     {
-                          ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+                          ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 973 "dhcp6_parser.cc"
+#line 969 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 58:
-#line 371 "dhcp6_parser.yy"
+#line 372 "dhcp6_parser.yy" // lalr1.cc:907
     {
-                          ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+                          ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 982 "dhcp6_parser.cc"
+#line 978 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 59:
-#line 382 "dhcp6_parser.yy"
+#line 383 "dhcp6_parser.yy" // lalr1.cc:907
     {
     const std::string& where = ctx.contextName();
-    const std::string& keyword = yystack_[1].value.as < std::string > ();
+    const std::string& keyword = yystack_[1].value.as< std::string > ();
     error(yystack_[1].location,
           "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
 }
-#line 993 "dhcp6_parser.cc"
+#line 989 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 60:
-#line 392 "dhcp6_parser.yy"
+#line 393 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1004 "dhcp6_parser.cc"
+#line 1000 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 61:
-#line 397 "dhcp6_parser.yy"
+#line 398 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -1013,11 +1009,11 @@ namespace isc { namespace dhcp {
     // Dhcp6 is required
     ctx.require("Dhcp6", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 1017 "dhcp6_parser.cc"
+#line 1013 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 70:
-#line 420 "dhcp6_parser.yy"
+#line 421 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1026,956 +1022,956 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP6);
 }
-#line 1030 "dhcp6_parser.cc"
+#line 1026 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 71:
-#line 427 "dhcp6_parser.yy"
+#line 428 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No global parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1040 "dhcp6_parser.cc"
+#line 1036 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 72:
-#line 435 "dhcp6_parser.yy"
+#line 436 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1050 "dhcp6_parser.cc"
+#line 1046 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 73:
-#line 439 "dhcp6_parser.yy"
+#line 440 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No global parameter is required
     // parsing completed
 }
-#line 1059 "dhcp6_parser.cc"
+#line 1055 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 119:
-#line 495 "dhcp6_parser.yy"
+#line 496 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1067 "dhcp6_parser.cc"
+#line 1063 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 120:
-#line 497 "dhcp6_parser.yy"
+#line 498 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr datadir(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data-directory", datadir);
     ctx.leave();
 }
-#line 1077 "dhcp6_parser.cc"
+#line 1073 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 121:
-#line 503 "dhcp6_parser.yy"
+#line 504 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("preferred-lifetime", prf);
 }
-#line 1086 "dhcp6_parser.cc"
+#line 1082 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 122:
-#line 508 "dhcp6_parser.yy"
+#line 509 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("min-preferred-lifetime", prf);
 }
-#line 1095 "dhcp6_parser.cc"
+#line 1091 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 123:
-#line 513 "dhcp6_parser.yy"
+#line 514 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-preferred-lifetime", prf);
 }
-#line 1104 "dhcp6_parser.cc"
+#line 1100 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 124:
-#line 518 "dhcp6_parser.yy"
+#line 519 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
 }
-#line 1113 "dhcp6_parser.cc"
+#line 1109 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 125:
-#line 523 "dhcp6_parser.yy"
+#line 524 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("min-valid-lifetime", prf);
 }
-#line 1122 "dhcp6_parser.cc"
+#line 1118 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 126:
-#line 528 "dhcp6_parser.yy"
+#line 529 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-valid-lifetime", prf);
 }
-#line 1131 "dhcp6_parser.cc"
+#line 1127 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 127:
-#line 533 "dhcp6_parser.yy"
+#line 534 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
 }
-#line 1140 "dhcp6_parser.cc"
+#line 1136 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 128:
-#line 538 "dhcp6_parser.yy"
+#line 539 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
 }
-#line 1149 "dhcp6_parser.cc"
+#line 1145 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 129:
-#line 543 "dhcp6_parser.yy"
+#line 544 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr ctt(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("calculate-tee-times", ctt);
 }
-#line 1158 "dhcp6_parser.cc"
+#line 1154 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 130:
-#line 548 "dhcp6_parser.yy"
+#line 549 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr t1(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t1-percent", t1);
 }
-#line 1167 "dhcp6_parser.cc"
+#line 1163 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 131:
-#line 553 "dhcp6_parser.yy"
+#line 554 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr t2(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t2-percent", t2);
 }
-#line 1176 "dhcp6_parser.cc"
+#line 1172 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 132:
-#line 558 "dhcp6_parser.yy"
+#line 559 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
 }
-#line 1185 "dhcp6_parser.cc"
+#line 1181 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 133:
-#line 563 "dhcp6_parser.yy"
+#line 564 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1193 "dhcp6_parser.cc"
+#line 1189 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 134:
-#line 565 "dhcp6_parser.yy"
+#line 566 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr stag(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-tag", stag);
     ctx.leave();
 }
-#line 1203 "dhcp6_parser.cc"
+#line 1199 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 135:
-#line 571 "dhcp6_parser.yy"
+#line 572 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.INTERFACES_CONFIG);
 }
-#line 1214 "dhcp6_parser.cc"
+#line 1210 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 136:
-#line 576 "dhcp6_parser.yy"
+#line 577 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1224 "dhcp6_parser.cc"
+#line 1220 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 137:
-#line 582 "dhcp6_parser.yy"
+#line 583 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1234 "dhcp6_parser.cc"
+#line 1230 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 138:
-#line 586 "dhcp6_parser.yy"
+#line 587 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1243 "dhcp6_parser.cc"
+#line 1239 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 146:
-#line 602 "dhcp6_parser.yy"
+#line 603 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1254 "dhcp6_parser.cc"
+#line 1250 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 147:
-#line 607 "dhcp6_parser.yy"
+#line 608 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1263 "dhcp6_parser.cc"
+#line 1259 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 148:
-#line 612 "dhcp6_parser.yy"
+#line 613 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
 }
-#line 1272 "dhcp6_parser.cc"
+#line 1268 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 149:
-#line 618 "dhcp6_parser.yy"
+#line 619 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.LEASE_DATABASE);
 }
-#line 1283 "dhcp6_parser.cc"
+#line 1279 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 150:
-#line 623 "dhcp6_parser.yy"
+#line 624 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1294 "dhcp6_parser.cc"
+#line 1290 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 151:
-#line 630 "dhcp6_parser.yy"
+#line 631 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1305 "dhcp6_parser.cc"
+#line 1301 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 152:
-#line 635 "dhcp6_parser.yy"
+#line 636 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1316 "dhcp6_parser.cc"
+#line 1312 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 153:
-#line 642 "dhcp6_parser.yy"
+#line 643 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1327 "dhcp6_parser.cc"
+#line 1323 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 154:
-#line 647 "dhcp6_parser.yy"
+#line 648 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1336 "dhcp6_parser.cc"
+#line 1332 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 159:
-#line 660 "dhcp6_parser.yy"
+#line 661 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1346 "dhcp6_parser.cc"
+#line 1342 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 160:
-#line 664 "dhcp6_parser.yy"
+#line 665 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1356 "dhcp6_parser.cc"
+#line 1352 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 183:
-#line 696 "dhcp6_parser.yy"
+#line 697 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1364 "dhcp6_parser.cc"
+#line 1360 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 184:
-#line 698 "dhcp6_parser.yy"
+#line 699 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1373 "dhcp6_parser.cc"
+#line 1369 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 185:
-#line 703 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1379 "dhcp6_parser.cc"
+#line 704 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
+#line 1375 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 186:
-#line 704 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1385 "dhcp6_parser.cc"
+#line 705 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
+#line 1381 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 187:
-#line 705 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1391 "dhcp6_parser.cc"
+#line 706 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
+#line 1387 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 188:
-#line 706 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1397 "dhcp6_parser.cc"
+#line 707 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
+#line 1393 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 189:
-#line 709 "dhcp6_parser.yy"
+#line 710 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1405 "dhcp6_parser.cc"
+#line 1401 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 190:
-#line 711 "dhcp6_parser.yy"
+#line 712 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1415 "dhcp6_parser.cc"
+#line 1411 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 191:
-#line 717 "dhcp6_parser.yy"
+#line 718 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1423 "dhcp6_parser.cc"
+#line 1419 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 192:
-#line 719 "dhcp6_parser.yy"
+#line 720 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1433 "dhcp6_parser.cc"
+#line 1429 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 193:
-#line 725 "dhcp6_parser.yy"
+#line 726 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1441 "dhcp6_parser.cc"
+#line 1437 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 194:
-#line 727 "dhcp6_parser.yy"
+#line 728 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1451 "dhcp6_parser.cc"
+#line 1447 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 195:
-#line 733 "dhcp6_parser.yy"
+#line 734 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1460 "dhcp6_parser.cc"
+#line 1456 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 196:
-#line 738 "dhcp6_parser.yy"
+#line 739 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1468 "dhcp6_parser.cc"
+#line 1464 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 197:
-#line 740 "dhcp6_parser.yy"
+#line 741 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1478 "dhcp6_parser.cc"
+#line 1474 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 198:
-#line 746 "dhcp6_parser.yy"
+#line 747 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1487 "dhcp6_parser.cc"
+#line 1483 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 199:
-#line 751 "dhcp6_parser.yy"
+#line 752 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1496 "dhcp6_parser.cc"
+#line 1492 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 200:
-#line 756 "dhcp6_parser.yy"
+#line 757 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1505 "dhcp6_parser.cc"
+#line 1501 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 201:
-#line 761 "dhcp6_parser.yy"
+#line 762 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1514 "dhcp6_parser.cc"
+#line 1510 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 202:
-#line 766 "dhcp6_parser.yy"
+#line 767 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reconnect-wait-time", n);
 }
-#line 1523 "dhcp6_parser.cc"
+#line 1519 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 203:
-#line 771 "dhcp6_parser.yy"
+#line 772 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("request-timeout", n);
 }
-#line 1532 "dhcp6_parser.cc"
+#line 1528 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 204:
-#line 776 "dhcp6_parser.yy"
+#line 777 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-keepalive", n);
 }
-#line 1541 "dhcp6_parser.cc"
+#line 1537 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 205:
-#line 781 "dhcp6_parser.yy"
+#line 782 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-nodelay", n);
 }
-#line 1550 "dhcp6_parser.cc"
+#line 1546 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 206:
-#line 786 "dhcp6_parser.yy"
+#line 787 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1558 "dhcp6_parser.cc"
+#line 1554 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 207:
-#line 788 "dhcp6_parser.yy"
+#line 789 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
-#line 1568 "dhcp6_parser.cc"
+#line 1564 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 208:
-#line 794 "dhcp6_parser.yy"
+#line 795 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reconnect-tries", n);
 }
-#line 1577 "dhcp6_parser.cc"
+#line 1573 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 209:
-#line 799 "dhcp6_parser.yy"
+#line 800 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1585 "dhcp6_parser.cc"
+#line 1581 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 210:
-#line 801 "dhcp6_parser.yy"
+#line 802 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1595 "dhcp6_parser.cc"
+#line 1591 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 211:
-#line 807 "dhcp6_parser.yy"
+#line 808 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1603 "dhcp6_parser.cc"
+#line 1599 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 212:
-#line 809 "dhcp6_parser.yy"
+#line 810 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("consistency", c);
     ctx.leave();
 }
-#line 1613 "dhcp6_parser.cc"
+#line 1609 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 213:
-#line 815 "dhcp6_parser.yy"
+#line 816 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1621 "dhcp6_parser.cc"
+#line 1617 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 214:
-#line 817 "dhcp6_parser.yy"
+#line 818 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("serial-consistency", c);
     ctx.leave();
 }
-#line 1631 "dhcp6_parser.cc"
+#line 1627 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 215:
-#line 823 "dhcp6_parser.yy"
+#line 824 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sanity-checks", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SANITY_CHECKS);
 }
-#line 1642 "dhcp6_parser.cc"
+#line 1638 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 216:
-#line 828 "dhcp6_parser.yy"
+#line 829 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1651 "dhcp6_parser.cc"
+#line 1647 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 220:
-#line 838 "dhcp6_parser.yy"
+#line 839 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1659 "dhcp6_parser.cc"
+#line 1655 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 221:
-#line 840 "dhcp6_parser.yy"
+#line 841 "dhcp6_parser.yy" // lalr1.cc:907
     {
 
-    if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
-         (string(yystack_[0].value.as < std::string > ()) == "warn") ||
-         (string(yystack_[0].value.as < std::string > ()) == "fix") ||
-         (string(yystack_[0].value.as < std::string > ()) == "fix-del") ||
-         (string(yystack_[0].value.as < std::string > ()) == "del")) {
-        ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    if ( (string(yystack_[0].value.as< std::string > ()) == "none") ||
+         (string(yystack_[0].value.as< std::string > ()) == "warn") ||
+         (string(yystack_[0].value.as< std::string > ()) == "fix") ||
+         (string(yystack_[0].value.as< std::string > ()) == "fix-del") ||
+         (string(yystack_[0].value.as< std::string > ()) == "del")) {
+        ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
         ctx.stack_.back()->set("lease-checks", user);
         ctx.leave();
     } else {
-        error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as < std::string > ()) +
+        error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as< std::string > ()) +
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1679 "dhcp6_parser.cc"
+#line 1675 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 222:
-#line 856 "dhcp6_parser.yy"
+#line 857 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("mac-sources", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.MAC_SOURCES);
 }
-#line 1690 "dhcp6_parser.cc"
+#line 1686 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 223:
-#line 861 "dhcp6_parser.yy"
+#line 862 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1699 "dhcp6_parser.cc"
+#line 1695 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 228:
-#line 874 "dhcp6_parser.yy"
+#line 875 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1708 "dhcp6_parser.cc"
+#line 1704 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 229:
-#line 879 "dhcp6_parser.yy"
+#line 880 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1717 "dhcp6_parser.cc"
+#line 1713 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 230:
-#line 884 "dhcp6_parser.yy"
+#line 885 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
-#line 1728 "dhcp6_parser.cc"
+#line 1724 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 231:
-#line 889 "dhcp6_parser.yy"
+#line 890 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1737 "dhcp6_parser.cc"
+#line 1733 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 237:
-#line 903 "dhcp6_parser.yy"
+#line 904 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1746 "dhcp6_parser.cc"
+#line 1742 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 238:
-#line 908 "dhcp6_parser.yy"
+#line 909 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1755 "dhcp6_parser.cc"
+#line 1751 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 239:
-#line 915 "dhcp6_parser.yy"
+#line 916 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay-supplied-options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1766 "dhcp6_parser.cc"
+#line 1762 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 240:
-#line 920 "dhcp6_parser.yy"
+#line 921 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1775 "dhcp6_parser.cc"
+#line 1771 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 241:
-#line 925 "dhcp6_parser.yy"
+#line 926 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 1786 "dhcp6_parser.cc"
+#line 1782 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 242:
-#line 930 "dhcp6_parser.yy"
+#line 931 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1795 "dhcp6_parser.cc"
+#line 1791 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 247:
-#line 943 "dhcp6_parser.yy"
+#line 944 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1805 "dhcp6_parser.cc"
+#line 1801 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 248:
-#line 947 "dhcp6_parser.yy"
+#line 948 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1815 "dhcp6_parser.cc"
+#line 1811 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 249:
-#line 953 "dhcp6_parser.yy"
+#line 954 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1825 "dhcp6_parser.cc"
+#line 1821 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 250:
-#line 957 "dhcp6_parser.yy"
+#line 958 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1835 "dhcp6_parser.cc"
+#line 1831 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 256:
-#line 972 "dhcp6_parser.yy"
+#line 973 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1843 "dhcp6_parser.cc"
+#line 1839 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 257:
-#line 974 "dhcp6_parser.yy"
+#line 975 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1853 "dhcp6_parser.cc"
+#line 1849 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 258:
-#line 980 "dhcp6_parser.yy"
+#line 981 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1861 "dhcp6_parser.cc"
+#line 1857 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 259:
-#line 982 "dhcp6_parser.yy"
+#line 983 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1870 "dhcp6_parser.cc"
+#line 1866 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 260:
-#line 988 "dhcp6_parser.yy"
+#line 989 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
 }
-#line 1881 "dhcp6_parser.cc"
+#line 1877 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 261:
-#line 993 "dhcp6_parser.yy"
+#line 994 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1891 "dhcp6_parser.cc"
+#line 1887 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 270:
-#line 1011 "dhcp6_parser.yy"
+#line 1012 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reclaim-timer-wait-time", value);
 }
-#line 1900 "dhcp6_parser.cc"
+#line 1896 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 271:
-#line 1016 "dhcp6_parser.yy"
+#line 1017 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
 }
-#line 1909 "dhcp6_parser.cc"
+#line 1905 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 272:
-#line 1021 "dhcp6_parser.yy"
+#line 1022 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 1918 "dhcp6_parser.cc"
+#line 1914 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 273:
-#line 1026 "dhcp6_parser.yy"
+#line 1027 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 1927 "dhcp6_parser.cc"
+#line 1923 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 274:
-#line 1031 "dhcp6_parser.yy"
+#line 1032 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 1936 "dhcp6_parser.cc"
+#line 1932 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 275:
-#line 1036 "dhcp6_parser.yy"
+#line 1037 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 1945 "dhcp6_parser.cc"
+#line 1941 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 276:
-#line 1044 "dhcp6_parser.yy"
+#line 1045 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet6", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET6);
 }
-#line 1956 "dhcp6_parser.cc"
+#line 1952 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 277:
-#line 1049 "dhcp6_parser.yy"
+#line 1050 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1965 "dhcp6_parser.cc"
+#line 1961 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 282:
-#line 1069 "dhcp6_parser.yy"
+#line 1070 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1975 "dhcp6_parser.cc"
+#line 1971 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 283:
-#line 1073 "dhcp6_parser.yy"
+#line 1074 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -1997,267 +1993,267 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2001 "dhcp6_parser.cc"
+#line 1997 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 284:
-#line 1095 "dhcp6_parser.yy"
+#line 1096 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2011 "dhcp6_parser.cc"
+#line 2007 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 285:
-#line 1099 "dhcp6_parser.yy"
+#line 1100 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The subnet subnet6 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2021 "dhcp6_parser.cc"
+#line 2017 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 315:
-#line 1140 "dhcp6_parser.yy"
+#line 1141 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2029 "dhcp6_parser.cc"
+#line 2025 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 316:
-#line 1142 "dhcp6_parser.yy"
+#line 1143 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 2039 "dhcp6_parser.cc"
+#line 2035 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 317:
-#line 1148 "dhcp6_parser.yy"
+#line 1149 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2047 "dhcp6_parser.cc"
+#line 2043 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 318:
-#line 1150 "dhcp6_parser.yy"
+#line 1151 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 2057 "dhcp6_parser.cc"
+#line 2053 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 319:
-#line 1156 "dhcp6_parser.yy"
+#line 1157 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2065 "dhcp6_parser.cc"
+#line 2061 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 320:
-#line 1158 "dhcp6_parser.yy"
+#line 1159 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface-id", iface);
     ctx.leave();
 }
-#line 2075 "dhcp6_parser.cc"
+#line 2071 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 321:
-#line 1164 "dhcp6_parser.yy"
+#line 1165 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2083 "dhcp6_parser.cc"
+#line 2079 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 322:
-#line 1166 "dhcp6_parser.yy"
+#line 1167 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 2093 "dhcp6_parser.cc"
+#line 2089 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 323:
-#line 1172 "dhcp6_parser.yy"
+#line 1173 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("require-client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2104 "dhcp6_parser.cc"
+#line 2100 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 324:
-#line 1177 "dhcp6_parser.yy"
+#line 1178 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2113 "dhcp6_parser.cc"
+#line 2109 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 325:
-#line 1182 "dhcp6_parser.yy"
+#line 1183 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2121 "dhcp6_parser.cc"
+#line 2117 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 326:
-#line 1184 "dhcp6_parser.yy"
+#line 1185 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2130 "dhcp6_parser.cc"
+#line 2126 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 327:
-#line 1189 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2136 "dhcp6_parser.cc"
+#line 1190 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
+#line 2132 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 328:
-#line 1190 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2142 "dhcp6_parser.cc"
+#line 1191 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
+#line 2138 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 329:
-#line 1191 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2148 "dhcp6_parser.cc"
+#line 1192 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
+#line 2144 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 330:
-#line 1192 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2154 "dhcp6_parser.cc"
+#line 1193 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
+#line 2150 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 331:
-#line 1195 "dhcp6_parser.yy"
+#line 1196 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 2163 "dhcp6_parser.cc"
+#line 2159 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 332:
-#line 1200 "dhcp6_parser.yy"
+#line 1201 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
 }
-#line 2172 "dhcp6_parser.cc"
+#line 2168 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 333:
-#line 1208 "dhcp6_parser.yy"
+#line 1209 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("shared-networks", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SHARED_NETWORK);
 }
-#line 2183 "dhcp6_parser.cc"
+#line 2179 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 334:
-#line 1213 "dhcp6_parser.yy"
+#line 1214 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2192 "dhcp6_parser.cc"
+#line 2188 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 339:
-#line 1228 "dhcp6_parser.yy"
+#line 1229 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2202 "dhcp6_parser.cc"
+#line 2198 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 340:
-#line 1232 "dhcp6_parser.yy"
+#line 1233 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
 }
-#line 2210 "dhcp6_parser.cc"
+#line 2206 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 367:
-#line 1270 "dhcp6_parser.yy"
+#line 1271 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 2221 "dhcp6_parser.cc"
+#line 2217 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 368:
-#line 1275 "dhcp6_parser.yy"
+#line 1276 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2230 "dhcp6_parser.cc"
+#line 2226 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 369:
-#line 1283 "dhcp6_parser.yy"
+#line 1284 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2239 "dhcp6_parser.cc"
+#line 2235 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 370:
-#line 1286 "dhcp6_parser.yy"
+#line 1287 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // parsing completed
 }
-#line 2247 "dhcp6_parser.cc"
+#line 2243 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 375:
-#line 1302 "dhcp6_parser.yy"
+#line 1303 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2257 "dhcp6_parser.cc"
+#line 2253 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 376:
-#line 1306 "dhcp6_parser.yy"
+#line 1307 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2265,21 +2261,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2269 "dhcp6_parser.cc"
+#line 2265 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 377:
-#line 1317 "dhcp6_parser.yy"
+#line 1318 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2279 "dhcp6_parser.cc"
+#line 2275 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 378:
-#line 1321 "dhcp6_parser.yy"
+#line 1322 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2287,283 +2283,283 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2291 "dhcp6_parser.cc"
+#line 2287 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 394:
-#line 1353 "dhcp6_parser.yy"
+#line 1354 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 2300 "dhcp6_parser.cc"
+#line 2296 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 396:
-#line 1360 "dhcp6_parser.yy"
+#line 1361 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2308 "dhcp6_parser.cc"
+#line 2304 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 397:
-#line 1362 "dhcp6_parser.yy"
+#line 1363 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2318 "dhcp6_parser.cc"
+#line 2314 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 398:
-#line 1368 "dhcp6_parser.yy"
+#line 1369 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2326 "dhcp6_parser.cc"
+#line 2322 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 399:
-#line 1370 "dhcp6_parser.yy"
+#line 1371 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 2336 "dhcp6_parser.cc"
+#line 2332 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 400:
-#line 1376 "dhcp6_parser.yy"
+#line 1377 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2344 "dhcp6_parser.cc"
+#line 2340 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 401:
-#line 1378 "dhcp6_parser.yy"
+#line 1379 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2354 "dhcp6_parser.cc"
+#line 2350 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 403:
-#line 1386 "dhcp6_parser.yy"
+#line 1387 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2362 "dhcp6_parser.cc"
+#line 2358 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 404:
-#line 1388 "dhcp6_parser.yy"
+#line 1389 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2372 "dhcp6_parser.cc"
+#line 2368 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 405:
-#line 1394 "dhcp6_parser.yy"
+#line 1395 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2381 "dhcp6_parser.cc"
+#line 2377 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 406:
-#line 1403 "dhcp6_parser.yy"
+#line 1404 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 2392 "dhcp6_parser.cc"
+#line 2388 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 407:
-#line 1408 "dhcp6_parser.yy"
+#line 1409 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2401 "dhcp6_parser.cc"
+#line 2397 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 412:
-#line 1427 "dhcp6_parser.yy"
+#line 1428 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2411 "dhcp6_parser.cc"
+#line 2407 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 413:
-#line 1431 "dhcp6_parser.yy"
+#line 1432 "dhcp6_parser.yy" // lalr1.cc:907
     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2420 "dhcp6_parser.cc"
+#line 2416 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 414:
-#line 1439 "dhcp6_parser.yy"
+#line 1440 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2430 "dhcp6_parser.cc"
+#line 2426 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 415:
-#line 1443 "dhcp6_parser.yy"
+#line 1444 "dhcp6_parser.yy" // lalr1.cc:907
     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2439 "dhcp6_parser.cc"
+#line 2435 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 430:
-#line 1476 "dhcp6_parser.yy"
+#line 1477 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2447 "dhcp6_parser.cc"
+#line 2443 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 431:
-#line 1478 "dhcp6_parser.yy"
+#line 1479 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2457 "dhcp6_parser.cc"
+#line 2453 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 434:
-#line 1488 "dhcp6_parser.yy"
+#line 1489 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2466 "dhcp6_parser.cc"
+#line 2462 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 435:
-#line 1493 "dhcp6_parser.yy"
+#line 1494 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-send", persist);
 }
-#line 2475 "dhcp6_parser.cc"
+#line 2471 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 436:
-#line 1501 "dhcp6_parser.yy"
+#line 1502 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.POOLS);
 }
-#line 2486 "dhcp6_parser.cc"
+#line 2482 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 437:
-#line 1506 "dhcp6_parser.yy"
+#line 1507 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2495 "dhcp6_parser.cc"
+#line 2491 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 442:
-#line 1521 "dhcp6_parser.yy"
+#line 1522 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2505 "dhcp6_parser.cc"
+#line 2501 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 443:
-#line 1525 "dhcp6_parser.yy"
+#line 1526 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2515 "dhcp6_parser.cc"
+#line 2511 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 444:
-#line 1531 "dhcp6_parser.yy"
+#line 1532 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2525 "dhcp6_parser.cc"
+#line 2521 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 445:
-#line 1535 "dhcp6_parser.yy"
+#line 1536 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 2534 "dhcp6_parser.cc"
+#line 2530 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 455:
-#line 1553 "dhcp6_parser.yy"
+#line 1554 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2542 "dhcp6_parser.cc"
+#line 2538 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 456:
-#line 1555 "dhcp6_parser.yy"
+#line 1556 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2552 "dhcp6_parser.cc"
+#line 2548 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 457:
-#line 1561 "dhcp6_parser.yy"
+#line 1562 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2560 "dhcp6_parser.cc"
+#line 2556 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 458:
-#line 1563 "dhcp6_parser.yy"
+#line 1564 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr parent = ctx.stack_.back();
-    ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
+    ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
     ConstElementPtr old = parent->get("user-context");
 
     // Handle already existing user context
@@ -2583,23 +2579,23 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2587 "dhcp6_parser.cc"
+#line 2583 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 459:
-#line 1586 "dhcp6_parser.yy"
+#line 1587 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2595 "dhcp6_parser.cc"
+#line 2591 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 460:
-#line 1588 "dhcp6_parser.yy"
+#line 1589 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
-    ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr comment(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     user_context->set("comment", comment);
 
     // Handle already existing user context
@@ -2620,41 +2616,41 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2624 "dhcp6_parser.cc"
+#line 2620 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 461:
-#line 1616 "dhcp6_parser.yy"
+#line 1617 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pd-pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.PD_POOLS);
 }
-#line 2635 "dhcp6_parser.cc"
+#line 2631 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 462:
-#line 1621 "dhcp6_parser.yy"
+#line 1622 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2644 "dhcp6_parser.cc"
+#line 2640 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 467:
-#line 1636 "dhcp6_parser.yy"
+#line 1637 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2654 "dhcp6_parser.cc"
+#line 2650 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 468:
-#line 1640 "dhcp6_parser.yy"
+#line 1641 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2662,21 +2658,21 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2666 "dhcp6_parser.cc"
+#line 2662 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 469:
-#line 1648 "dhcp6_parser.yy"
+#line 1649 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2676 "dhcp6_parser.cc"
+#line 2672 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 470:
-#line 1652 "dhcp6_parser.yy"
+#line 1653 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2684,546 +2680,546 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2688 "dhcp6_parser.cc"
+#line 2684 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 484:
-#line 1677 "dhcp6_parser.yy"
+#line 1678 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2696 "dhcp6_parser.cc"
+#line 2692 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 485:
-#line 1679 "dhcp6_parser.yy"
+#line 1680 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
     ctx.leave();
 }
-#line 2706 "dhcp6_parser.cc"
+#line 2702 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 486:
-#line 1685 "dhcp6_parser.yy"
+#line 1686 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix-len", prf);
 }
-#line 2715 "dhcp6_parser.cc"
+#line 2711 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 487:
-#line 1690 "dhcp6_parser.yy"
+#line 1691 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2723 "dhcp6_parser.cc"
+#line 2719 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 488:
-#line 1692 "dhcp6_parser.yy"
+#line 1693 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix", prf);
     ctx.leave();
 }
-#line 2733 "dhcp6_parser.cc"
+#line 2729 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 489:
-#line 1698 "dhcp6_parser.yy"
+#line 1699 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix-len", prf);
 }
-#line 2742 "dhcp6_parser.cc"
+#line 2738 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 490:
-#line 1703 "dhcp6_parser.yy"
+#line 1704 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("delegated-len", deleg);
 }
-#line 2751 "dhcp6_parser.cc"
+#line 2747 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 491:
-#line 1711 "dhcp6_parser.yy"
+#line 1712 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.RESERVATIONS);
 }
-#line 2762 "dhcp6_parser.cc"
+#line 2758 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 492:
-#line 1716 "dhcp6_parser.yy"
+#line 1717 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2771 "dhcp6_parser.cc"
+#line 2767 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 497:
-#line 1729 "dhcp6_parser.yy"
+#line 1730 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2781 "dhcp6_parser.cc"
+#line 2777 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 498:
-#line 1733 "dhcp6_parser.yy"
+#line 1734 "dhcp6_parser.yy" // lalr1.cc:907
     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 2790 "dhcp6_parser.cc"
+#line 2786 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 499:
-#line 1738 "dhcp6_parser.yy"
+#line 1739 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2800 "dhcp6_parser.cc"
+#line 2796 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 500:
-#line 1742 "dhcp6_parser.yy"
+#line 1743 "dhcp6_parser.yy" // lalr1.cc:907
     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 2809 "dhcp6_parser.cc"
+#line 2805 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 516:
-#line 1769 "dhcp6_parser.yy"
+#line 1770 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-addresses", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2820 "dhcp6_parser.cc"
+#line 2816 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 517:
-#line 1774 "dhcp6_parser.yy"
+#line 1775 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2829 "dhcp6_parser.cc"
+#line 2825 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 518:
-#line 1779 "dhcp6_parser.yy"
+#line 1780 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefixes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2840 "dhcp6_parser.cc"
+#line 2836 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 519:
-#line 1784 "dhcp6_parser.yy"
+#line 1785 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2849 "dhcp6_parser.cc"
+#line 2845 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 520:
-#line 1789 "dhcp6_parser.yy"
+#line 1790 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2857 "dhcp6_parser.cc"
+#line 2853 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 521:
-#line 1791 "dhcp6_parser.yy"
+#line 1792 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 2867 "dhcp6_parser.cc"
+#line 2863 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 522:
-#line 1797 "dhcp6_parser.yy"
+#line 1798 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2875 "dhcp6_parser.cc"
+#line 2871 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 523:
-#line 1799 "dhcp6_parser.yy"
+#line 1800 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
     ctx.leave();
 }
-#line 2885 "dhcp6_parser.cc"
+#line 2881 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 524:
-#line 1805 "dhcp6_parser.yy"
+#line 1806 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2893 "dhcp6_parser.cc"
+#line 2889 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 525:
-#line 1807 "dhcp6_parser.yy"
+#line 1808 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 2903 "dhcp6_parser.cc"
+#line 2899 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 526:
-#line 1813 "dhcp6_parser.yy"
+#line 1814 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2911 "dhcp6_parser.cc"
+#line 2907 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 527:
-#line 1815 "dhcp6_parser.yy"
+#line 1816 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
     ctx.leave();
 }
-#line 2921 "dhcp6_parser.cc"
+#line 2917 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 528:
-#line 1821 "dhcp6_parser.yy"
+#line 1822 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2932 "dhcp6_parser.cc"
+#line 2928 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 529:
-#line 1826 "dhcp6_parser.yy"
+#line 1827 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2941 "dhcp6_parser.cc"
+#line 2937 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 530:
-#line 1834 "dhcp6_parser.yy"
+#line 1835 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.RELAY);
 }
-#line 2952 "dhcp6_parser.cc"
+#line 2948 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 531:
-#line 1839 "dhcp6_parser.yy"
+#line 1840 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2961 "dhcp6_parser.cc"
+#line 2957 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 534:
-#line 1848 "dhcp6_parser.yy"
+#line 1849 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2969 "dhcp6_parser.cc"
+#line 2965 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 535:
-#line 1850 "dhcp6_parser.yy"
+#line 1851 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
     ctx.leave();
 }
-#line 2979 "dhcp6_parser.cc"
+#line 2975 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 536:
-#line 1859 "dhcp6_parser.yy"
+#line 1860 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENT_CLASSES);
 }
-#line 2990 "dhcp6_parser.cc"
+#line 2986 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 537:
-#line 1864 "dhcp6_parser.yy"
+#line 1865 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2999 "dhcp6_parser.cc"
+#line 2995 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 540:
-#line 1873 "dhcp6_parser.yy"
+#line 1874 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3009 "dhcp6_parser.cc"
+#line 3005 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 541:
-#line 1877 "dhcp6_parser.yy"
+#line 1878 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 3019 "dhcp6_parser.cc"
+#line 3015 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 554:
-#line 1902 "dhcp6_parser.yy"
+#line 1903 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3027 "dhcp6_parser.cc"
+#line 3023 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 555:
-#line 1904 "dhcp6_parser.yy"
+#line 1905 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 3037 "dhcp6_parser.cc"
+#line 3033 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 556:
-#line 1910 "dhcp6_parser.yy"
+#line 1911 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("only-if-required", b);
 }
-#line 3046 "dhcp6_parser.cc"
+#line 3042 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 557:
-#line 1918 "dhcp6_parser.yy"
+#line 1919 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-id", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER_ID);
 }
-#line 3057 "dhcp6_parser.cc"
+#line 3053 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 558:
-#line 1923 "dhcp6_parser.yy"
+#line 1924 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The type parameter is required.
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3068 "dhcp6_parser.cc"
+#line 3064 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 570:
-#line 1945 "dhcp6_parser.yy"
+#line 1946 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 3076 "dhcp6_parser.cc"
+#line 3072 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 571:
-#line 1947 "dhcp6_parser.yy"
+#line 1948 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3085 "dhcp6_parser.cc"
+#line 3081 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 572:
-#line 1952 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 3091 "dhcp6_parser.cc"
+#line 1953 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
+#line 3087 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 573:
-#line 1953 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 3097 "dhcp6_parser.cc"
+#line 1954 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
+#line 3093 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 574:
-#line 1954 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 3103 "dhcp6_parser.cc"
+#line 1955 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
+#line 3099 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 575:
-#line 1957 "dhcp6_parser.yy"
+#line 1958 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("htype", htype);
 }
-#line 3112 "dhcp6_parser.cc"
+#line 3108 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 576:
-#line 1962 "dhcp6_parser.yy"
+#line 1963 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3120 "dhcp6_parser.cc"
+#line 3116 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 577:
-#line 1964 "dhcp6_parser.yy"
+#line 1965 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
     ctx.leave();
 }
-#line 3130 "dhcp6_parser.cc"
+#line 3126 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 578:
-#line 1970 "dhcp6_parser.yy"
+#line 1971 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("time", time);
 }
-#line 3139 "dhcp6_parser.cc"
+#line 3135 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 579:
-#line 1975 "dhcp6_parser.yy"
+#line 1976 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enterprise-id", time);
 }
-#line 3148 "dhcp6_parser.cc"
+#line 3144 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 580:
-#line 1982 "dhcp6_parser.yy"
+#line 1983 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 3157 "dhcp6_parser.cc"
+#line 3153 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 581:
-#line 1989 "dhcp6_parser.yy"
+#line 1990 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKET);
 }
-#line 3168 "dhcp6_parser.cc"
+#line 3164 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 582:
-#line 1994 "dhcp6_parser.yy"
+#line 1995 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3177 "dhcp6_parser.cc"
+#line 3173 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 590:
-#line 2010 "dhcp6_parser.yy"
+#line 2011 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3185 "dhcp6_parser.cc"
+#line 3181 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 591:
-#line 2012 "dhcp6_parser.yy"
+#line 2013 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
     ctx.leave();
 }
-#line 3195 "dhcp6_parser.cc"
+#line 3191 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 592:
-#line 2018 "dhcp6_parser.yy"
+#line 2019 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3203 "dhcp6_parser.cc"
+#line 3199 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 593:
-#line 2020 "dhcp6_parser.yy"
+#line 2021 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
     ctx.leave();
 }
-#line 3213 "dhcp6_parser.cc"
+#line 3209 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 594:
-#line 2028 "dhcp6_parser.yy"
+#line 2029 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3221 "dhcp6_parser.cc"
+#line 3217 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 595:
-#line 2030 "dhcp6_parser.yy"
+#line 2031 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr qc = yystack_[0].value.as < ElementPtr > ();
+    ElementPtr qc = yystack_[0].value.as< ElementPtr > ();
     ctx.stack_.back()->set("dhcp-queue-control", qc);
 
     // Doing this manually, because dhcp-queue-control
@@ -3257,627 +3253,644 @@ namespace isc { namespace dhcp {
 
     ctx.leave();
 }
-#line 3261 "dhcp6_parser.cc"
+#line 3257 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 596:
-#line 2068 "dhcp6_parser.yy"
+#line 2069 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 3272 "dhcp6_parser.cc"
+#line 3268 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 597:
-#line 2073 "dhcp6_parser.yy"
+#line 2074 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3283 "dhcp6_parser.cc"
+#line 3279 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 598:
-#line 2080 "dhcp6_parser.yy"
+#line 2081 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3293 "dhcp6_parser.cc"
+#line 3289 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 599:
-#line 2084 "dhcp6_parser.yy"
+#line 2085 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 3303 "dhcp6_parser.cc"
+#line 3299 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 620:
-#line 2114 "dhcp6_parser.yy"
+#line 2115 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 3312 "dhcp6_parser.cc"
+#line 3308 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 621:
-#line 2119 "dhcp6_parser.yy"
+#line 2120 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3320 "dhcp6_parser.cc"
+#line 3316 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 622:
-#line 2121 "dhcp6_parser.yy"
+#line 2122 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
     ctx.leave();
 }
-#line 3330 "dhcp6_parser.cc"
+#line 3326 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 623:
-#line 2127 "dhcp6_parser.yy"
+#line 2128 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3338 "dhcp6_parser.cc"
+#line 3334 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 624:
-#line 2129 "dhcp6_parser.yy"
+#line 2130 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
     ctx.leave();
 }
-#line 3348 "dhcp6_parser.cc"
+#line 3344 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 625:
-#line 2135 "dhcp6_parser.yy"
+#line 2136 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 3357 "dhcp6_parser.cc"
+#line 3353 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 626:
-#line 2140 "dhcp6_parser.yy"
+#line 2141 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3365 "dhcp6_parser.cc"
+#line 3361 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 627:
-#line 2142 "dhcp6_parser.yy"
+#line 2143 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
     ctx.leave();
 }
-#line 3375 "dhcp6_parser.cc"
+#line 3371 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 628:
-#line 2148 "dhcp6_parser.yy"
+#line 2149 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 3384 "dhcp6_parser.cc"
+#line 3380 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 629:
-#line 2153 "dhcp6_parser.yy"
+#line 2154 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 3393 "dhcp6_parser.cc"
+#line 3389 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 630:
-#line 2158 "dhcp6_parser.yy"
+#line 2159 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3401 "dhcp6_parser.cc"
+#line 3397 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 631:
-#line 2160 "dhcp6_parser.yy"
+#line 2161 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3410 "dhcp6_parser.cc"
+#line 3406 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 632:
-#line 2166 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3416 "dhcp6_parser.cc"
+#line 2167 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
+#line 3412 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 633:
-#line 2167 "dhcp6_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3422 "dhcp6_parser.cc"
+#line 2168 "dhcp6_parser.yy" // lalr1.cc:907
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
+#line 3418 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 634:
-#line 2170 "dhcp6_parser.yy"
+#line 2171 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3430 "dhcp6_parser.cc"
+#line 3426 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 635:
-#line 2172 "dhcp6_parser.yy"
+#line 2173 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3440 "dhcp6_parser.cc"
+#line 3436 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 636:
-#line 2178 "dhcp6_parser.yy"
+#line 2179 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 3449 "dhcp6_parser.cc"
+#line 3445 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 637:
-#line 2183 "dhcp6_parser.yy"
+#line 2184 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 3458 "dhcp6_parser.cc"
+#line 3454 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 638:
-#line 2188 "dhcp6_parser.yy"
+#line 2189 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3466 "dhcp6_parser.cc"
+#line 3462 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 639:
-#line 2190 "dhcp6_parser.yy"
+#line 2191 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3475 "dhcp6_parser.cc"
+#line 3471 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 640:
-#line 2196 "dhcp6_parser.yy"
+#line 2197 "dhcp6_parser.yy" // lalr1.cc:907
     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3483 "dhcp6_parser.cc"
+#line 3479 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 641:
-#line 2199 "dhcp6_parser.yy"
+#line 2200 "dhcp6_parser.yy" // lalr1.cc:907
     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3491 "dhcp6_parser.cc"
+#line 3487 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 642:
-#line 2202 "dhcp6_parser.yy"
+#line 2203 "dhcp6_parser.yy" // lalr1.cc:907
     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3499 "dhcp6_parser.cc"
+#line 3495 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 643:
-#line 2205 "dhcp6_parser.yy"
+#line 2206 "dhcp6_parser.yy" // lalr1.cc:907
     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3507 "dhcp6_parser.cc"
+#line 3503 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 644:
-#line 2208 "dhcp6_parser.yy"
+#line 2209 "dhcp6_parser.yy" // lalr1.cc:907
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 3516 "dhcp6_parser.cc"
+#line 3512 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 645:
-#line 2214 "dhcp6_parser.yy"
+#line 2215 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3524 "dhcp6_parser.cc"
+#line 3520 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 646:
-#line 2216 "dhcp6_parser.yy"
+#line 2217 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
     ctx.leave();
 }
-#line 3534 "dhcp6_parser.cc"
+#line 3530 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 647:
-#line 2222 "dhcp6_parser.yy"
+#line 2223 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3542 "dhcp6_parser.cc"
+#line 3538 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 648:
-#line 2224 "dhcp6_parser.yy"
+#line 2225 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 3552 "dhcp6_parser.cc"
+#line 3548 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 649:
-#line 2230 "dhcp6_parser.yy"
+#line 2231 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3560 "dhcp6_parser.cc"
+#line 3556 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 650:
-#line 2232 "dhcp6_parser.yy"
+#line 2233 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 3570 "dhcp6_parser.cc"
+#line 3566 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 651:
-#line 2240 "dhcp6_parser.yy"
+#line 2241 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3578 "dhcp6_parser.cc"
+#line 3574 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 652:
-#line 2242 "dhcp6_parser.yy"
+#line 2243 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3587 "dhcp6_parser.cc"
+#line 3583 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 653:
-#line 2247 "dhcp6_parser.yy"
+#line 2248 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3595 "dhcp6_parser.cc"
+#line 3591 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 654:
-#line 2249 "dhcp6_parser.yy"
+#line 2250 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3604 "dhcp6_parser.cc"
+#line 3600 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 655:
-#line 2254 "dhcp6_parser.yy"
+#line 2255 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3612 "dhcp6_parser.cc"
+#line 3608 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 656:
-#line 2256 "dhcp6_parser.yy"
+#line 2257 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3621 "dhcp6_parser.cc"
+#line 3617 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 657:
-#line 2263 "dhcp6_parser.yy"
+#line 2264 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-control", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.CONFIG_CONTROL);
 }
-#line 3632 "dhcp6_parser.cc"
+#line 3628 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 658:
-#line 2268 "dhcp6_parser.yy"
+#line 2269 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3642 "dhcp6_parser.cc"
+#line 3638 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 659:
-#line 2274 "dhcp6_parser.yy"
+#line 2275 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3652 "dhcp6_parser.cc"
+#line 3648 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 660:
-#line 2278 "dhcp6_parser.yy"
+#line 2279 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No config_control params are required
     // parsing completed
 }
-#line 3661 "dhcp6_parser.cc"
+#line 3657 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 665:
-#line 2293 "dhcp6_parser.yy"
+#line 2294 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CONFIG_DATABASE);
 }
-#line 3672 "dhcp6_parser.cc"
+#line 3668 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 666:
-#line 2298 "dhcp6_parser.yy"
+#line 2299 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3681 "dhcp6_parser.cc"
+#line 3677 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 667:
-#line 2303 "dhcp6_parser.yy"
+#line 2304 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-fetch-wait-time", value);
 }
-#line 3690 "dhcp6_parser.cc"
+#line 3686 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 668:
-#line 2313 "dhcp6_parser.yy"
+#line 2314 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.LOGGING);
 }
-#line 3701 "dhcp6_parser.cc"
+#line 3697 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 669:
-#line 2318 "dhcp6_parser.yy"
+#line 2319 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3710 "dhcp6_parser.cc"
+#line 3706 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 670:
-#line 2323 "dhcp6_parser.yy"
+#line 2324 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the Logging map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3720 "dhcp6_parser.cc"
+#line 3716 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 671:
-#line 2327 "dhcp6_parser.yy"
+#line 2328 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // parsing completed
 }
-#line 3728 "dhcp6_parser.cc"
+#line 3724 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 675:
-#line 2343 "dhcp6_parser.yy"
+#line 2344 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 3739 "dhcp6_parser.cc"
+#line 3735 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 676:
-#line 2348 "dhcp6_parser.yy"
+#line 2349 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3748 "dhcp6_parser.cc"
+#line 3744 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 679:
-#line 2360 "dhcp6_parser.yy"
+#line 2361 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 3758 "dhcp6_parser.cc"
+#line 3754 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 680:
-#line 2364 "dhcp6_parser.yy"
+#line 2365 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
 }
-#line 3766 "dhcp6_parser.cc"
+#line 3762 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 690:
-#line 2381 "dhcp6_parser.yy"
+#line 2382 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 3775 "dhcp6_parser.cc"
+#line 3771 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 691:
-#line 2386 "dhcp6_parser.yy"
+#line 2387 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3783 "dhcp6_parser.cc"
+#line 3779 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 692:
-#line 2388 "dhcp6_parser.yy"
+#line 2389 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 3793 "dhcp6_parser.cc"
+#line 3789 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 693:
-#line 2394 "dhcp6_parser.yy"
+#line 2395 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 3804 "dhcp6_parser.cc"
+#line 3800 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 694:
-#line 2399 "dhcp6_parser.yy"
+#line 2400 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3813 "dhcp6_parser.cc"
+#line 3809 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 697:
-#line 2408 "dhcp6_parser.yy"
+#line 2409 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3823 "dhcp6_parser.cc"
+#line 3819 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 698:
-#line 2412 "dhcp6_parser.yy"
+#line 2413 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
 }
-#line 3831 "dhcp6_parser.cc"
+#line 3827 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 705:
-#line 2426 "dhcp6_parser.yy"
+  case 706:
+#line 2428 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3839 "dhcp6_parser.cc"
+#line 3835 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 706:
-#line 2428 "dhcp6_parser.yy"
+  case 707:
+#line 2430 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 3849 "dhcp6_parser.cc"
+#line 3845 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 707:
-#line 2434 "dhcp6_parser.yy"
+  case 708:
+#line 2436 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 3858 "dhcp6_parser.cc"
+#line 3854 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 708:
-#line 2439 "dhcp6_parser.yy"
+  case 709:
+#line 2441 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 3867 "dhcp6_parser.cc"
+#line 3863 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 709:
-#line 2444 "dhcp6_parser.yy"
+  case 710:
+#line 2446 "dhcp6_parser.yy" // lalr1.cc:907
     {
-    ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 3876 "dhcp6_parser.cc"
+#line 3872 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
+  case 711:
+#line 2451 "dhcp6_parser.yy" // lalr1.cc:907
+    {
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 3880 "dhcp6_parser.cc" // lalr1.cc:907
+    break;
+
+  case 712:
+#line 2453 "dhcp6_parser.yy" // lalr1.cc:907
+    {
+    ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("pattern", sev);
+    ctx.leave();
+}
+#line 3890 "dhcp6_parser.cc" // lalr1.cc:907
+    break;
 
-#line 3880 "dhcp6_parser.cc"
 
+#line 3894 "dhcp6_parser.cc" // lalr1.cc:907
             default:
               break;
             }
@@ -3885,7 +3898,6 @@ namespace isc { namespace dhcp {
 #if YY_EXCEPTIONS
       catch (const syntax_error& yyexc)
         {
-          YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
           error (yyexc);
           YYERROR;
         }
@@ -3900,7 +3912,6 @@ namespace isc { namespace dhcp {
     }
     goto yynewstate;
 
-
   /*--------------------------------------.
   | yyerrlab -- here on detecting error.  |
   `--------------------------------------*/
@@ -3937,18 +3948,18 @@ namespace isc { namespace dhcp {
   | yyerrorlab -- error raised explicitly by YYERROR.  |
   `---------------------------------------------------*/
   yyerrorlab:
-    /* Pacify compilers when the user code never invokes YYERROR and
-       the label yyerrorlab therefore never appears in user code.  */
-    if (false)
-      YYERROR;
 
+    /* Pacify compilers like GCC when the user code never invokes
+       YYERROR and the label yyerrorlab therefore never appears in user
+       code.  */
+    if (false)
+      goto yyerrorlab;
     /* Do not reclaim the symbols of the rule whose action triggered
        this YYERROR.  */
     yypop_ (yylen);
     yylen = 0;
     goto yyerrlab1;
 
-
   /*-------------------------------------------------------------.
   | yyerrlab1 -- common code for both syntax error and YYERROR.  |
   `-------------------------------------------------------------*/
@@ -3989,26 +4000,16 @@ namespace isc { namespace dhcp {
     }
     goto yynewstate;
 
-
-  /*-------------------------------------.
-  | yyacceptlab -- YYACCEPT comes here.  |
-  `-------------------------------------*/
+    // Accept.
   yyacceptlab:
     yyresult = 0;
     goto yyreturn;
 
-
-  /*-----------------------------------.
-  | yyabortlab -- YYABORT comes here.  |
-  `-----------------------------------*/
+    // Abort.
   yyabortlab:
     yyresult = 1;
     goto yyreturn;
 
-
-  /*-----------------------------------------------------.
-  | yyreturn -- parsing is finished, return the result.  |
-  `-----------------------------------------------------*/
   yyreturn:
     if (!yyla.empty ())
       yy_destroy_ ("Cleanup: discarding lookahead", yyla);
@@ -4154,121 +4155,122 @@ namespace isc { namespace dhcp {
   const short
   Dhcp6Parser::yypact_[] =
   {
-     428,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,  -875,  -875,    46,    70,    63,    65,
-      69,    71,    84,    93,    96,   100,   108,   130,   156,   184,
-     188,   190,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
+     480,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,  -875,  -875,  -875,    45,    70,    59,    69,
+      78,   131,   133,   135,   144,   146,   173,   184,   197,   206,
+     207,   219,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,    70,   -95,    29,    78,    41,   263,    80,   277,
-     444,   170,    43,   179,   -65,   506,    58,   291,  -875,   144,
-     273,   262,   275,   323,  -875,  -875,  -875,  -875,  -875,   332,
-    -875,    91,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,   334,   343,   353,   355,   359,   387,
-     391,   393,   394,   398,   399,   401,  -875,  -875,  -875,  -875,
+    -875,  -875,    70,  -139,    30,    79,    41,   280,    81,   164,
+     172,    39,    43,   444,   -28,   464,  -103,    93,  -875,   236,
+     224,   239,   242,   255,  -875,  -875,  -875,  -875,  -875,   274,
+    -875,    75,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,  -875,   299,   301,   308,   317,   318,   339,
+     341,   345,   347,   349,   351,   361,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,   403,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,    98,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,   362,  -875,  -875,  -875,  -875,  -875,  -875,
+    -875,    85,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,  -875,  -875,   405,  -875,   136,  -875,
-    -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,   408,
-     413,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,  -875,  -875,   137,  -875,  -875,  -875,
+    -875,  -875,  -875,  -875,  -875,  -875,   381,  -875,   113,  -875,
+    -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,   383,
+     391,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,  -875,  -875,  -875,   138,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,   143,  -875,
-    -875,  -875,  -875,  -875,   415,  -875,   418,   420,  -875,  -875,
-    -875,  -875,  -875,  -875,   150,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,   141,  -875,
+    -875,  -875,  -875,  -875,   401,  -875,   405,   415,  -875,  -875,
+    -875,  -875,  -875,  -875,   169,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,   320,   364,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,   419,  -875,  -875,   422,  -875,  -875,  -875,   426,
-    -875,  -875,   421,   439,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,  -875,  -875,  -875,   447,   458,  -875,
-    -875,  -875,  -875,   435,   463,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,  -875,  -875,  -875,   168,  -875,  -875,
-    -875,   466,  -875,  -875,   467,  -875,   469,   470,  -875,  -875,
-     471,   472,  -875,  -875,  -875,  -875,  -875,   182,  -875,  -875,
+    -875,  -875,   359,   421,  -875,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,   418,  -875,  -875,   423,  -875,  -875,  -875,   425,
+    -875,  -875,   422,   438,  -875,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,  -875,  -875,  -875,  -875,   439,   440,  -875,
+    -875,  -875,  -875,   443,   455,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,  -875,  -875,  -875,  -875,   185,  -875,  -875,
+    -875,   462,  -875,  -875,   463,  -875,   466,   467,  -875,  -875,
+     473,   486,  -875,  -875,  -875,  -875,  -875,   199,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,   204,  -875,  -875,  -875,   473,   212,
-    -875,  -875,  -875,  -875,    70,    70,  -875,   286,   486,   487,
-     489,   492,   493,  -875,    29,  -875,   494,   495,   496,   497,
-     499,   500,   325,   326,   327,   328,   329,   335,   340,   341,
-     330,   342,   344,   346,   501,   502,   520,   522,   525,   526,
-     528,   529,   531,   532,   533,   535,   536,   537,   539,   546,
-     547,   372,   548,   549,   551,   552,   554,   555,    78,  -875,
-     556,   377,    41,  -875,   558,   559,   561,   562,   563,   386,
-     385,   566,   567,   568,   263,  -875,   569,    80,  -875,   573,
-     396,   575,   402,   404,   277,  -875,   576,   577,   583,   587,
-     608,   610,   612,  -875,   444,  -875,   614,   615,   438,   617,
-     618,   619,   440,  -875,    43,   622,   443,   445,  -875,   179,
-     624,   626,   246,  -875,   448,   627,   629,   454,   647,   474,
-     475,   648,   649,   476,   477,   650,   651,   506,  -875,    58,
-    -875,   658,   481,   291,  -875,  -875,  -875,   661,   659,   660,
-      70,    70,    70,  -875,   488,   663,   664,   665,   666,   669,
+    -875,  -875,  -875,  -875,   200,  -875,  -875,  -875,   487,   212,
+    -875,  -875,  -875,  -875,    70,    70,  -875,   311,   492,   493,
+     494,   495,   496,  -875,    30,  -875,   497,   498,   505,   506,
+     507,   510,   340,   342,   343,   346,   350,   352,   353,   354,
+     337,   348,   355,   360,   513,   520,   523,   524,   526,   534,
+     540,   541,   542,   543,   544,   545,   546,   547,   548,   549,
+     550,   372,   552,   554,   555,   556,   557,   558,    79,  -875,
+     559,   380,    41,  -875,   562,   563,   564,   565,   566,   389,
+     386,   569,   573,   574,   280,  -875,   575,    81,  -875,   576,
+     398,   578,   400,   403,   164,  -875,   580,   583,   587,   590,
+     591,   608,   610,  -875,   172,  -875,   615,   616,   441,   617,
+     618,   619,   442,  -875,    43,   621,   445,   446,  -875,   444,
+     624,   625,    65,  -875,   447,   629,   632,   456,   634,   457,
+     458,   638,   639,   459,   460,   658,   659,   464,  -875,  -103,
+    -875,   661,   483,    93,  -875,  -875,  -875,   663,   662,   664,
+      70,    70,    70,  -875,   488,   665,   666,   667,   668,   671,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,   498,   670,   671,   672,   673,   504,   301,   676,
-     677,   678,   681,   682,   683,   685,   686,   687,   688,  -875,
-     689,   673,   690,   511,   512,   693,  -875,   694,  -875,  -875,
-     695,   696,   521,   523,   524,  -875,  -875,   694,   527,   699,
-    -875,   530,  -875,   534,  -875,   538,  -875,  -875,  -875,   694,
-     694,   694,   540,   541,   542,   543,  -875,   544,   545,  -875,
-     550,   553,   557,  -875,  -875,   560,  -875,  -875,  -875,   564,
-      70,  -875,  -875,   565,   570,  -875,   571,  -875,  -875,   248,
-     580,  -875,  -875,   -37,   572,  -875,  -875,   698,  -875,  -875,
-      70,    78,    58,  -875,  -875,  -875,  -875,   291,    41,   260,
-     260,   700,  -875,   702,   703,   705,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,   706,   -33,    70,    79,   585,   707,
-     709,   710,   157,   122,    97,  -875,   506,  -875,  -875,   711,
-    -875,  -875,   713,   721,  -875,  -875,  -875,  -875,  -875,   -48,
+    -875,  -875,   499,   672,   673,   674,   675,   501,   363,   680,
+     681,   682,   683,   684,   685,   687,   688,   689,   690,  -875,
+     691,   675,   692,   512,   518,   696,  -875,   697,  -875,  -875,
+     698,   699,   525,   527,   528,  -875,  -875,   697,   529,   701,
+    -875,   530,  -875,   531,  -875,   532,  -875,  -875,  -875,   697,
+     697,   697,   533,   535,   536,   537,  -875,   538,   539,  -875,
+     551,   553,   560,  -875,  -875,   561,  -875,  -875,  -875,   567,
+      70,  -875,  -875,   568,   570,  -875,   571,  -875,  -875,    36,
+     521,  -875,  -875,   159,   572,  -875,  -875,   700,  -875,  -875,
+      70,    79,  -103,  -875,  -875,  -875,  -875,    93,    41,   260,
+     260,   709,  -875,   715,   716,   717,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,  -875,   718,   -37,    70,   -33,   596,   719,
+     720,   721,   257,   122,    35,  -875,   464,  -875,  -875,   722,
+    -875,  -875,   723,   724,  -875,  -875,  -875,  -875,  -875,   -61,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,   700,  -875,   220,   226,   254,   255,  -875,  -875,
-    -875,  -875,   725,   726,   728,   729,   731,  -875,   732,   733,
-    -875,  -875,  -875,   735,   736,   738,  -875,   257,  -875,  -875,
+    -875,  -875,   709,  -875,   221,   225,   248,   261,  -875,  -875,
+    -875,  -875,   676,   702,   728,   730,   732,  -875,   733,   734,
+    -875,  -875,  -875,   735,   736,   737,  -875,   262,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,   272,  -875,
-     662,   740,  -875,  -875,   741,   745,  -875,  -875,   743,   747,
-    -875,  -875,   748,   752,  -875,  -875,   750,   754,  -875,  -875,
-    -875,    37,  -875,  -875,  -875,   753,  -875,  -875,  -875,    82,
-    -875,  -875,  -875,  -875,   274,  -875,  -875,  -875,   200,  -875,
-    -875,   755,   757,  -875,  -875,   756,   760,  -875,   761,   762,
-     763,   764,   765,   766,   276,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,   767,   768,   769,  -875,  -875,  -875,
-    -875,   314,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,   315,  -875,  -875,  -875,   321,  -875,   211,
-    -875,   593,  -875,   758,   772,  -875,  -875,   770,   774,  -875,
-    -875,  -875,   771,  -875,   775,  -875,  -875,  -875,  -875,   776,
-     778,   779,   780,   596,   574,   603,   602,   605,   784,   607,
-     609,   786,   788,   789,   613,   616,   620,   260,  -875,  -875,
-     260,  -875,   700,   263,  -875,   702,    43,  -875,   703,   179,
-    -875,   705,   436,  -875,   706,   -33,  -875,  -875,    79,  -875,
-     790,   585,  -875,    83,   707,  -875,   444,  -875,   709,   -65,
-    -875,   710,   621,   623,   625,   628,   630,   631,   157,  -875,
-     792,   793,   632,   633,   634,   122,  -875,   795,   796,    97,
-    -875,  -875,     6,   711,  -875,  -875,   800,   798,    80,  -875,
-     713,   277,  -875,   721,   804,  -875,  -875,   425,   636,   637,
-     639,  -875,  -875,  -875,  -875,  -875,   640,  -875,  -875,   643,
-     645,   646,  -875,  -875,  -875,  -875,   322,  -875,   324,  -875,
-     794,  -875,   801,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,   276,  -875,
+     738,   742,  -875,  -875,   740,   744,  -875,  -875,   745,   752,
+    -875,  -875,   750,   754,  -875,  -875,   753,   755,  -875,  -875,
+    -875,    83,  -875,  -875,  -875,   756,  -875,  -875,  -875,    97,
+    -875,  -875,  -875,  -875,   310,  -875,  -875,  -875,   186,  -875,
+    -875,   757,   758,  -875,  -875,   759,   761,  -875,   762,   763,
+     764,   765,   766,   767,   331,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,  -875,   768,   769,   770,  -875,  -875,  -875,
+    -875,   332,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,   333,  -875,  -875,  -875,   334,  -875,   254,
+    -875,   593,  -875,   771,   773,  -875,  -875,   772,   776,  -875,
+    -875,  -875,   774,  -875,   775,  -875,  -875,  -875,  -875,   779,
+     780,   781,   782,   577,   595,   604,   603,   606,   786,   609,
+     611,   787,   789,   791,   613,   614,   620,   260,  -875,  -875,
+     260,  -875,   709,   280,  -875,   715,    43,  -875,   716,   444,
+    -875,   717,   436,  -875,   718,   -37,  -875,  -875,   -33,  -875,
+     794,   596,  -875,    89,   719,  -875,   172,  -875,   720,   -28,
+    -875,   721,   623,   626,   627,   628,   630,   631,   257,  -875,
+     795,   796,   633,   635,   637,   122,  -875,   797,   798,    35,
+    -875,  -875,   124,   722,  -875,  -875,   801,   800,    81,  -875,
+     723,   164,  -875,   724,   804,  -875,  -875,   451,   622,   642,
+     644,  -875,  -875,  -875,  -875,  -875,   645,  -875,  -875,   647,
+     652,   654,  -875,  -875,  -875,  -875,   344,  -875,   373,  -875,
+     807,  -875,   809,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,   362,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,   653,  -875,  -875,   807,  -875,  -875,  -875,
-    -875,  -875,   821,   833,  -875,  -875,  -875,  -875,  -875,   829,
-    -875,   363,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-     129,   657,  -875,  -875,  -875,  -875,   667,   691,  -875,  -875,
-     837,  -875,  -875,  -875,  -875,  -875,   370,  -875,  -875,  -875,
-    -875,  -875,  -875,   718,   371,  -875,   373,  -875,   720,  -875,
+    -875,  -875,  -875,  -875,   374,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,   655,  -875,  -875,   808,  -875,  -875,  -875,
+    -875,  -875,   813,   835,  -875,  -875,  -875,  -875,  -875,   833,
+    -875,   385,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
+      40,   669,  -875,  -875,  -875,  -875,   670,   677,  -875,  -875,
+     844,  -875,  -875,  -875,  -875,  -875,   394,  -875,  -875,  -875,
+    -875,  -875,  -875,   712,   395,  -875,   404,  -875,   725,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,  -875,   436,  -875,  -875,   846,   668,
-    -875,    83,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,   847,   701,   850,     6,  -875,  -875,  -875,  -875,  -875,
-    -875,   723,  -875,  -875,   739,  -875,   734,  -875,  -875,   852,
-    -875,  -875,   331,  -875,    75,   852,  -875,  -875,   865,   890,
-     898,   374,  -875,  -875,  -875,  -875,  -875,  -875,   903,   730,
-     742,   744,    75,  -875,   737,  -875,  -875,  -875,  -875,  -875
+    -875,  -875,  -875,  -875,  -875,   436,  -875,  -875,   846,   714,
+    -875,    89,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
+    -875,   850,   686,   868,   124,  -875,  -875,  -875,  -875,  -875,
+    -875,   741,  -875,  -875,   743,  -875,   746,  -875,  -875,   876,
+    -875,  -875,   388,  -875,   154,   876,  -875,  -875,   897,   898,
+     900,  -875,   414,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
+     910,   731,   747,   748,   911,   154,  -875,   751,  -875,  -875,
+    -875,   760,  -875,  -875,  -875
   };
 
   const unsigned short
@@ -4386,55 +4388,56 @@ namespace isc { namespace dhcp {
      541,     0,   498,   248,   572,   573,   574,   571,   577,   591,
      593,     0,     0,     0,     0,   680,    58,   443,   468,   535,
      342,     0,   556,   545,     0,   690,     0,   682,   555,     0,
-     692,   697,     0,   695,     0,     0,   694,   705,     0,     0,
-       0,     0,   699,   701,   702,   703,   704,   696,     0,     0,
-       0,     0,     0,   698,     0,   707,   708,   709,   700,   706
+     692,   697,     0,   695,     0,     0,   694,   706,     0,     0,
+       0,   711,     0,   699,   701,   702,   703,   704,   705,   696,
+       0,     0,     0,     0,     0,     0,   698,     0,   708,   709,
+     710,     0,   700,   707,   712
   };
 
   const short
   Dhcp6Parser::yypgoto_[] =
   {
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,  -875,  -875,  -875,    54,  -875,  -480,
-    -875,   366,  -875,  -875,  -875,  -875,   267,  -875,  -389,  -875,
-    -875,  -875,   -74,  -875,  -875,  -875,   578,  -875,  -875,  -875,
-    -875,   285,   490,  -875,  -875,   -70,   -46,   -40,   -36,   -22,
+    -875,  -875,  -875,  -875,  -875,  -875,  -875,    54,  -875,  -502,
+    -875,   134,  -875,  -875,  -875,  -875,   268,  -875,  -476,  -875,
+    -875,  -875,   -74,  -875,  -875,  -875,   579,  -875,  -875,  -875,
+    -875,   287,   489,  -875,  -875,   -70,   -46,   -40,   -36,   -22,
      -17,   -14,     3,     7,    10,    15,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,   287,   491,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,   217,  -875,    38,  -875,  -622,    44,
+    -875,  -875,  -875,   288,   490,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,  -875,   213,  -875,    37,  -875,  -622,    47,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
      -21,  -875,  -650,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,    21,  -875,  -875,  -875,  -875,  -875,    30,  -641,
-    -875,  -875,  -875,  -875,    26,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,    17,  -875,  -875,  -875,    20,   449,  -875,
-    -875,  -875,  -875,  -875,  -875,  -875,     8,  -875,  -875,  -875,
-    -875,  -875,  -875,  -874,  -875,  -875,  -875,    47,  -875,  -875,
-    -875,    51,   503,  -875,  -875,  -869,  -875,  -867,  -875,   -11,
+    -875,  -875,    24,  -875,  -875,  -875,  -875,  -875,    31,  -641,
+    -875,  -875,  -875,  -875,    33,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,    17,  -875,  -875,  -875,    20,   452,  -875,
+    -875,  -875,  -875,  -875,  -875,  -875,    19,  -875,  -875,  -875,
+    -875,  -875,  -875,  -874,  -875,  -875,  -875,    50,  -875,  -875,
+    -875,    55,   500,  -875,  -875,  -869,  -875,  -867,  -875,   -11,
     -875,    -5,  -875,    18,  -875,  -875,  -875,  -866,  -875,  -875,
-    -875,  -875,    45,  -875,  -875,  -140,   866,  -875,  -875,  -875,
-    -875,  -875,    50,  -875,  -875,  -875,    55,  -875,   468,  -875,
+    -875,  -875,    46,  -875,  -875,  -136,   870,  -875,  -875,  -875,
+    -875,  -875,    57,  -875,  -875,  -875,    56,  -875,   469,  -875,
      -69,  -875,  -875,  -875,  -875,  -875,   -66,  -875,  -875,  -875,
-    -875,  -875,   -58,  -875,  -875,  -875,    49,  -875,  -875,  -875,
-      56,  -875,   464,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,  -875,     4,  -875,  -875,  -875,    11,   505,
+    -875,  -875,   -58,  -875,  -875,  -875,    58,  -875,  -875,  -875,
+      61,  -875,   468,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,  -875,     6,  -875,  -875,  -875,    13,   508,
     -875,  -875,   -53,  -875,   -29,  -875,  -875,  -875,  -875,  -875,
-       5,  -875,  -875,  -875,     9,   507,  -875,  -875,  -875,  -875,
-    -875,  -875,  -875,   -62,  -875,  -875,  -875,    48,  -875,  -875,
-    -875,    40,  -875,   508,   282,  -875,  -875,  -875,  -875,  -875,
+       5,  -875,  -875,  -875,    11,   502,  -875,  -875,  -875,  -875,
+    -875,  -875,  -875,   -62,  -875,  -875,  -875,    49,  -875,  -875,
+    -875,    48,  -875,   503,   284,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -864,  -875,
-    -875,  -875,  -875,  -875,  -875,  -875,    53,  -875,  -875,  -875,
-    -128,  -875,  -875,  -875,  -875,  -875,  -875,  -875,    33,  -875,
+    -875,  -875,  -875,  -875,  -875,  -875,    60,  -875,  -875,  -875,
+    -123,  -875,  -875,  -875,  -875,  -875,  -875,  -875,    34,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,    25,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-    -875,  -875,   299,   462,  -875,  -875,  -875,  -875,  -875,  -875,
+    -875,    32,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
+    -875,  -875,   304,   465,  -875,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,   -73,  -875,   -51,  -875,
     -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,  -875,
-     333,   460,  -875,  -875,  -875,  -875,  -875,  -875,  -875,   345,
-     465,   -44,  -875,  -875,    32,  -875,  -875,  -126,  -875,  -875,
-    -875,  -875,  -875,  -875,  -149,  -875,  -875,  -163,  -875,  -875,
-    -875,  -875,  -875
+     338,   470,  -875,  -875,  -875,  -875,  -875,  -875,  -875,   356,
+     471,   -44,  -875,  -875,    38,  -875,  -875,  -128,  -875,  -875,
+    -875,  -875,  -875,  -875,  -147,  -875,  -875,  -166,  -875,  -875,
+    -875,  -875,  -875,  -875,  -875
   };
 
   const short
@@ -4479,8 +4482,8 @@ namespace isc { namespace dhcp {
      104,   390,   105,   391,   106,   392,   193,   397,    71,    87,
      379,   380,   381,   511,   382,   107,   389,    69,    86,   374,
      375,   194,   437,   849,   850,   942,  1056,  1057,  1058,  1059,
-    1103,  1060,  1101,  1122,  1123,  1124,  1131,  1132,  1133,  1138,
-    1134,  1135,  1136
+    1103,  1060,  1101,  1122,  1123,  1124,  1132,  1133,  1134,  1140,
+    1135,  1136,  1137,  1138,  1144
   };
 
   const unsigned short
@@ -4489,102 +4492,102 @@ namespace isc { namespace dhcp {
      100,   150,   197,   214,   244,   258,   278,   215,   300,   319,
      336,   354,   372,   828,   321,   241,   788,   322,   758,   236,
      247,   261,   279,   202,   238,   251,   262,   280,   997,   314,
-     332,   216,   355,   998,   373,   999,  1003,   217,  1009,    94,
-     905,   218,   376,   906,   334,   335,    32,   203,   239,   252,
-     263,   281,   272,   315,   333,   219,   356,   195,   196,   860,
-     220,   301,   320,   221,   293,   294,   646,   245,   259,   779,
-      44,    40,    46,   246,   260,    33,    48,    34,    50,    35,
-     222,   646,   130,   131,   223,   908,    91,   224,   909,   108,
-     109,    52,   225,   110,   394,   233,   111,   112,   113,   395,
-      54,   438,   294,    56,   295,   296,   439,    58,   297,   298,
-     299,   705,   706,   707,   708,    60,    99,   130,   131,   130,
-     131,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,    62,   129,   442,
-     454,   129,   294,   822,   443,   455,   457,   709,   780,   243,
-     383,   458,   723,   464,   130,   131,   130,   131,   465,   130,
-     131,   132,  1049,    64,  1050,  1051,   133,   134,   135,   136,
-     137,   492,   138,   130,   131,   211,   493,   139,   212,  1015,
-    1016,   779,   786,    95,   787,   507,   140,    99,   677,   141,
-     508,    66,    96,    97,    98,    68,   142,    70,   130,   131,
-     683,   684,   685,   914,   143,   144,   915,   509,   145,   146,
-      99,   997,   510,   149,   943,   513,   998,   944,   999,  1003,
-     514,  1009,    99,   438,    99,   838,   839,   128,   865,   509,
-     147,   148,  1127,   149,   866,  1128,  1129,  1130,   294,   316,
-     295,   296,   317,   318,   823,   824,   825,   826,  1094,  1095,
-    1096,    36,    37,    38,    39,   130,   131,   513,   442,    99,
-     887,    99,   867,   868,    99,   888,   385,   788,   976,   808,
-     809,   810,   811,   812,   813,   887,   384,   911,    99,   928,
-     889,   718,   912,   386,   929,   828,   719,   720,   721,   722,
+     332,   216,   355,   998,   373,   999,  1003,   217,  1009,   272,
+      94,   218,   376,    91,   646,    32,   860,   203,   239,   252,
+     263,   281,   149,   315,   333,   219,   356,   195,   196,   646,
+     220,   301,   320,   221,   293,   779,    44,   245,   259,   779,
+     786,    40,   787,   246,   260,    33,    46,    34,   394,    35,
+     222,   334,   335,   395,   223,    48,   905,   224,   438,   906,
+     108,   109,   225,   439,   110,   233,   128,   111,   112,   113,
+     908,   677,   294,   909,   295,   296,   377,   378,   297,   298,
+     299,   130,   131,   683,   684,   685,   442,   130,   131,   130,
+     131,   443,   114,   115,   116,   117,   118,   119,   120,   121,
+     122,   123,   124,   125,   126,   127,   128,   129,    50,   129,
+      52,   454,    54,   822,   457,   780,   455,   129,   294,   458,
+     243,    56,   723,    58,    99,   130,   131,   130,   131,  1094,
+    1095,  1096,   132,   838,   839,   130,   131,   133,   134,   135,
+     136,   137,   464,   138,   334,   335,   211,   465,   139,   212,
+      60,   701,   702,   294,    95,  1015,  1016,   140,   492,   914,
+     141,    62,   915,   493,    96,    97,    98,   142,   130,   131,
+     130,   131,   507,   509,    64,   143,   144,   508,   510,   145,
+     146,   997,    99,    66,    68,   513,   998,    99,   999,  1003,
+     514,  1009,   129,    99,   438,    99,    70,   384,   509,   865,
+     129,   147,   148,   866,   149,   253,   254,   255,   256,   257,
+     130,   131,   383,   385,   823,   824,   825,   826,   130,   131,
+     386,   513,    36,    37,    38,    39,   867,   943,   387,   211,
+     944,    99,   212,    99,   442,   887,   271,   788,   976,   868,
+     888,    99,   272,   273,   274,   275,   276,   277,   393,   887,
+    1049,   718,  1050,  1051,   889,   828,   719,   720,   721,   722,
      723,   724,   725,   726,   727,   728,   729,   730,   731,   732,
-     733,   734,   735,    99,   377,   378,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,   124,   935,   939,   294,
-     100,   129,   936,   940,   507,   887,   387,   454,   473,   941,
-    1081,   204,  1082,   205,  1125,   129,   393,  1126,   402,   130,
-     131,   206,   207,   208,   209,   210,   132,   403,   253,   254,
-     255,   256,   257,   130,   131,   334,   335,   404,   211,   405,
-      99,   212,   139,   406,   150,  1085,   492,   474,   197,   213,
-    1086,  1093,   211,  1104,   457,   212,   464,  1142,  1105,  1107,
-     214,  1108,  1143,   244,   215,   649,   650,   651,   652,   202,
-     258,   407,   241,   701,   702,   408,   236,   409,   410,   247,
-     278,   238,   411,   412,   251,   413,   261,   431,   216,   441,
-     300,   262,   449,   203,   217,   319,   279,   450,   218,   460,
-     321,   280,   462,   322,   463,   239,   478,   475,   252,   483,
-     482,   314,   219,   354,   372,   263,   332,   220,   515,   516,
-     221,    99,   484,   488,    99,   281,   245,  1069,  1070,  1071,
-    1072,   486,   246,   259,   355,   315,   373,   222,    99,   260,
-     333,   223,   487,   301,   224,   376,   489,   517,   320,   225,
-     494,   497,   233,   499,   500,   503,   504,   512,   356,   114,
+     733,   734,   735,   402,    99,   403,    99,   705,   706,   707,
+     708,  1127,   404,   911,  1128,  1129,  1130,  1131,   912,   294,
+     100,   405,   406,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   928,   935,   939,   507,   129,   929,
+     936,   940,   941,   407,   709,   408,    99,   887,   204,   409,
+     205,   410,  1081,   411,    99,   412,   130,   131,   206,   207,
+     208,   209,   210,   132,   150,   413,   431,   473,   197,   808,
+     809,   810,   811,   812,   813,   211,   454,  1085,   212,   139,
+     214,  1082,  1086,   244,   215,   441,   213,   449,   492,   202,
+     258,  1125,   241,  1093,  1126,   450,   236,  1104,   457,   247,
+     278,   238,  1105,  1107,   251,   460,   261,   464,   216,   462,
+     300,   262,  1108,   203,   217,   319,   279,  1145,   218,   463,
+     321,   280,  1146,   322,   474,   239,   475,   478,   252,   482,
+     483,   314,   219,   354,   372,   263,   332,   220,   515,   516,
+     221,   484,    99,   486,   487,   281,   245,   649,   650,   651,
+     652,   488,   246,   259,   355,   315,   373,   222,   489,   260,
+     333,   223,    99,   301,   224,   376,   494,   497,   320,   225,
+     499,   500,   233,  1069,  1070,  1071,  1072,   503,   356,   114,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     518,   519,   127,   520,   129,   294,   521,   522,   524,   525,
-     526,   527,   129,   528,   529,   542,   543,   530,   531,   532,
-     533,   534,   130,   131,   538,   207,   208,   535,   210,   132,
-     130,   131,   536,   537,   544,   539,   545,   540,   541,   546,
-     547,   211,   548,   549,   212,   550,   551,   552,   271,   553,
-     554,   555,   213,   556,   272,   273,   274,   275,   276,   277,
-     557,   558,   560,   561,   559,   562,   563,   150,   564,   565,
-     567,   568,   570,   571,   197,   572,   573,   574,   575,   576,
-     577,   578,   579,   581,   633,   634,   635,   583,   584,   585,
-     589,   590,   130,   131,   586,   202,   587,   591,   376,   827,
-     840,   592,   354,   372,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,   203,
-     829,   841,   593,   355,   594,   373,   595,    99,   597,   598,
-     599,   600,   601,   602,   603,    99,   605,   606,   609,   607,
-     610,   613,   612,   614,   830,   842,   615,   356,   341,   342,
-     343,   344,   345,   346,   347,   348,   349,   350,   351,   352,
-     353,   616,   619,   620,   623,   624,   617,   618,   147,   148,
-     621,   622,   627,   628,   697,   630,   631,   632,   891,   636,
-     637,   638,   639,   640,   641,   643,   644,   645,   793,   642,
-      34,   654,   655,   656,   713,   648,   657,    99,   659,   658,
-     660,   661,   667,   668,   662,   663,   664,   666,   669,   670,
-     672,   673,   674,   712,   675,   676,   679,   759,   678,   763,
-     767,   680,   771,   775,   797,   681,   800,   804,   848,   682,
-     852,   686,   687,   688,   689,   690,   691,   704,   856,   873,
-     874,   692,   875,   876,   693,   877,   879,   880,   694,   884,
-     885,   695,   886,   892,  1119,   696,   698,   894,   895,   897,
-     898,   699,   700,   711,   900,   901,   903,   904,   962,   907,
-     918,   917,   920,   921,   949,   922,   923,   924,   925,   926,
-     927,   932,   933,   934,   945,   950,   952,   953,   961,   955,
-     957,   956,   958,   959,   960,   963,   964,   965,   966,   967,
-     969,   968,   970,   971,  1013,   972,  1040,  1041,   973,  1046,
-    1047,  1063,  1083,  1033,   974,  1034,  1062,  1035,  1068,  1084,
-    1036,  1089,  1037,  1038,  1042,  1043,  1044,  1074,  1075,   214,
-    1076,  1077,   300,   215,  1078,   319,  1079,  1080,   984,  1090,
-     321,   241,   985,   322,  1087,   236,  1091,  1092,  1098,  1017,
-     238,  1102,   278,   314,  1006,   336,   332,   216,  1099,  1007,
-    1111,  1114,  1112,   217,  1116,  1019,   986,   218,   279,  1121,
-    1020,   827,   987,   280,   239,   840,   988,   315,  1052,  1139,
-     333,   219,  1100,  1008,   244,   301,   220,   258,   320,   221,
-     989,   996,   829,  1115,  1021,   990,   841,   281,   991,  1054,
-     247,  1000,  1018,   261,  1140,   251,   222,  1001,   262,  1106,
-     223,  1109,  1141,   224,  1118,   992,   830,  1144,   225,   993,
-     842,   233,   994,  1055,  1145,  1120,   714,   995,  1149,   252,
-    1002,  1053,   263,   785,  1146,   717,  1147,   665,   566,   864,
-     977,   975,  1014,   569,  1012,  1011,  1039,   245,  1032,  1031,
-     259,   611,   979,   246,   978,  1110,   260,   292,   981,  1010,
-     983,   980,   604,   608,  1065,   982,  1029,   580,  1067,  1064,
-    1066,   861,   582,  1113,  1048,   847,  1030,  1028,  1045,   625,
-     716,   588,   523,   629,   626,  1061,  1137,   715,  1117,  1148,
-       0,     0,   596,     0,     0,     0,     0,     0,     0,     0,
+     504,   512,   127,   517,   129,   294,   518,   519,   520,   521,
+     522,   524,   525,   294,   316,   295,   296,   317,   318,   526,
+     527,   528,   130,   131,   529,   207,   208,   542,   210,   132,
+     130,   131,   538,   530,   543,   531,   532,   544,   545,   533,
+     546,   211,   539,   534,   212,   535,   536,   537,   547,   540,
+     130,   131,   213,   541,   548,   549,   550,   551,   552,   553,
+     554,   555,   556,   557,   558,   559,   560,   150,   561,   562,
+     563,   564,   565,   567,   197,   568,   570,   571,   572,   573,
+     574,   576,   575,   577,   633,   634,   635,   578,   579,   581,
+     583,   584,   585,   586,   589,   202,   587,   590,   376,   827,
+     840,   591,   354,   372,   592,   593,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   203,
+     829,   841,   594,   355,   595,   373,   147,   148,    99,   597,
+     598,   600,   601,   602,   599,   605,    99,   603,   609,   610,
+     606,   607,   612,   613,   830,   842,   614,   356,   616,   615,
+     617,   618,   619,   620,   621,   622,    99,     1,     2,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,   623,   624,   697,   627,   628,   630,   704,   631,
+     636,   632,   637,   638,   639,   640,   641,   643,   644,   645,
+     873,   642,    34,   648,   713,   654,   655,   656,   657,   793,
+     659,   658,   660,   661,   667,   665,   662,   663,   664,   666,
+     668,   669,   670,   672,   673,   712,   874,   674,   679,   675,
+     676,   678,   680,   681,   682,   686,   759,   687,   688,   689,
+     690,   691,   763,   767,   771,   775,   797,   800,   804,   848,
+     852,   856,   875,   692,   876,   693,   877,   879,   880,   884,
+     885,   886,   694,   695,   891,   892,   894,   895,  1119,   696,
+     698,   897,   699,   700,   711,   898,   900,   901,   904,   903,
+     961,   918,   907,   917,   921,   920,   922,   923,   924,   925,
+     926,   927,   932,   933,   934,   945,   950,   949,   952,   953,
+     962,   956,   955,   957,   958,   959,   960,   963,   964,   965,
+     966,   969,   967,   970,   968,   971,   972,   973,  1013,  1040,
+    1041,  1046,  1047,  1063,  1074,   974,  1033,  1062,  1068,  1034,
+    1035,  1036,  1089,  1037,  1038,  1083,  1042,  1084,  1043,   214,
+    1044,  1090,   300,   215,  1075,   319,  1076,  1077,   984,  1078,
+     321,   241,   985,   322,  1079,   236,  1080,  1087,  1091,  1017,
+     238,  1092,   278,   314,  1006,   336,   332,   216,  1102,  1007,
+    1111,  1098,  1099,   217,  1114,  1019,   986,   218,   279,  1100,
+    1020,   827,   987,   280,   239,   840,   988,   315,  1052,  1115,
+     333,   219,  1116,  1008,   244,   301,   220,   258,   320,   221,
+     989,   996,   829,  1121,  1021,   990,   841,   281,   991,  1054,
+     247,  1000,  1018,   261,  1106,   251,   222,  1001,   262,  1112,
+     223,  1141,  1142,   224,  1143,   992,   830,  1109,   225,   993,
+     842,   233,   994,  1055,  1147,  1151,  1148,   995,   714,   252,
+    1002,  1053,   263,  1118,   785,   864,   717,   566,  1120,   977,
+    1149,  1150,   569,  1153,   975,  1014,  1011,   245,  1032,  1031,
+     259,  1012,  1154,   246,   611,   979,   260,  1039,   978,  1110,
+    1010,   292,   980,   604,   580,   981,  1065,   608,  1067,   983,
+     982,  1064,  1066,   861,  1029,   582,   588,  1030,  1113,  1045,
+     847,  1048,   625,   523,  1028,   716,  1117,   596,  1139,  1152,
+     626,  1061,     0,   629,     0,     0,     0,     0,   715,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,   984,     0,     0,     0,   985,     0,  1017,     0,     0,
@@ -4605,102 +4608,102 @@ namespace isc { namespace dhcp {
       74,    75,    76,    77,    78,    79,    80,    77,    82,    83,
       84,    85,    85,   663,    83,    77,   657,    83,   640,    77,
       78,    79,    80,    76,    77,    78,    79,    80,   902,    82,
-      83,    77,    85,   902,    85,   902,   902,    77,   902,    10,
-       3,    77,    86,     6,   109,   110,     0,    76,    77,    78,
-      79,    80,   100,    82,    83,    77,    85,    16,    17,   107,
-      77,    82,    83,    77,    21,    59,   546,    78,    79,   102,
-       7,    17,     7,    78,    79,     5,     7,     7,     7,     9,
-      77,   561,    76,    77,    77,     3,   181,    77,     6,    11,
-      12,     7,    77,    15,     3,    77,    18,    19,    20,     8,
-       7,     3,    59,     7,    61,    62,     8,     7,    65,    66,
-      67,   148,   149,   150,   151,     7,   181,    76,    77,    76,
-      77,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     7,    58,     3,
-       3,    58,    59,    21,     8,     8,     3,   184,   181,    69,
-       6,     8,    30,     3,    76,    77,    76,    77,     8,    76,
-      77,    83,   156,     7,   158,   159,    88,    89,    90,    91,
-      92,     3,    94,    76,    77,    95,     8,    99,    98,    96,
-      97,   102,   103,   154,   105,     3,   108,   181,   577,   111,
-       8,     7,   163,   164,   165,     7,   118,     7,    76,    77,
-     589,   590,   591,     3,   126,   127,     6,     3,   130,   131,
-     181,  1085,     8,   155,     3,     3,  1085,     6,  1085,  1085,
-       8,  1085,   181,     3,   181,   128,   129,    57,     8,     3,
-     152,   153,   157,   155,     8,   160,   161,   162,    59,    60,
-      61,    62,    63,    64,   122,   123,   124,   125,   119,   120,
-     121,   181,   182,   183,   184,    76,    77,     3,     3,   181,
-       3,   181,     8,     8,   181,     8,     4,   908,   890,   112,
-     113,   114,   115,   116,   117,     3,     3,     3,   181,     3,
-       8,    21,     8,     8,     8,   935,    26,    27,    28,    29,
+      83,    77,    85,   902,    85,   902,   902,    77,   902,   100,
+      10,    77,    86,   182,   546,     0,   107,    76,    77,    78,
+      79,    80,   155,    82,    83,    77,    85,    16,    17,   561,
+      77,    82,    83,    77,    21,   102,     7,    78,    79,   102,
+     103,    17,   105,    78,    79,     5,     7,     7,     3,     9,
+      77,   109,   110,     8,    77,     7,     3,    77,     3,     6,
+      11,    12,    77,     8,    15,    77,    57,    18,    19,    20,
+       3,   577,    59,     6,    61,    62,    13,    14,    65,    66,
+      67,    76,    77,   589,   590,   591,     3,    76,    77,    76,
+      77,     8,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     7,    58,
+       7,     3,     7,    21,     3,   182,     8,    58,    59,     8,
+      69,     7,    30,     7,   182,    76,    77,    76,    77,   119,
+     120,   121,    83,   128,   129,    76,    77,    88,    89,    90,
+      91,    92,     3,    94,   109,   110,    95,     8,    99,    98,
+       7,   145,   146,    59,   154,    96,    97,   108,     3,     3,
+     111,     7,     6,     8,   164,   165,   166,   118,    76,    77,
+      76,    77,     3,     3,     7,   126,   127,     8,     8,   130,
+     131,  1085,   182,     7,     7,     3,  1085,   182,  1085,  1085,
+       8,  1085,    58,   182,     3,   182,     7,     3,     3,     8,
+      58,   152,   153,     8,   155,    71,    72,    73,    74,    75,
+      76,    77,     6,     4,   122,   123,   124,   125,    76,    77,
+       8,     3,   182,   183,   184,   185,     8,     3,     3,    95,
+       6,   182,    98,   182,     3,     3,    94,   908,   890,     8,
+       8,   182,   100,   101,   102,   103,   104,   105,     4,     3,
+     156,    21,   158,   159,     8,   935,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,   181,    13,    14,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,     3,     3,    59,
-     394,    58,     8,     8,     3,     3,     3,     3,     8,     8,
-       8,    68,     8,    70,     3,    58,     4,     6,     4,    76,
-      77,    78,    79,    80,    81,    82,    83,     4,    71,    72,
-      73,    74,    75,    76,    77,   109,   110,     4,    95,     4,
-     181,    98,    99,     4,   438,     3,     3,     3,   442,   106,
-       8,     8,    95,     3,     3,    98,     3,     3,     8,     8,
-     454,     8,     8,   457,   454,    84,    85,    86,    87,   442,
-     464,     4,   454,   145,   146,     4,   454,     4,     4,   457,
-     474,   454,     4,     4,   457,     4,   464,     4,   454,     4,
-     484,   464,     4,   442,   454,   489,   474,     4,   454,     4,
-     489,   474,     4,   489,     4,   454,     4,     8,   457,     8,
-       4,   484,   454,   507,   507,   464,   489,   454,   384,   385,
-     454,   181,     3,     8,   181,   474,   457,    22,    23,    24,
-      25,     4,   457,   464,   507,   484,   507,   454,   181,   464,
-     489,   454,     4,   484,   454,   509,     3,   181,   489,   454,
-       4,     4,   454,     4,     4,     4,     4,     4,   507,    43,
+      40,    41,    42,     4,   182,     4,   182,   148,   149,   150,
+     151,   157,     4,     3,   160,   161,   162,   163,     8,    59,
+     394,     4,     4,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,     3,     3,     3,     3,    58,     8,
+       8,     8,     8,     4,   185,     4,   182,     3,    68,     4,
+      70,     4,     8,     4,   182,     4,    76,    77,    78,    79,
+      80,    81,    82,    83,   438,     4,     4,     8,   442,   112,
+     113,   114,   115,   116,   117,    95,     3,     3,    98,    99,
+     454,     8,     8,   457,   454,     4,   106,     4,     3,   442,
+     464,     3,   454,     8,     6,     4,   454,     3,     3,   457,
+     474,   454,     8,     8,   457,     4,   464,     3,   454,     4,
+     484,   464,     8,   442,   454,   489,   474,     3,   454,     4,
+     489,   474,     8,   489,     3,   454,     8,     4,   457,     4,
+       8,   484,   454,   507,   507,   464,   489,   454,   384,   385,
+     454,     3,   182,     4,     4,   474,   457,    84,    85,    86,
+      87,     8,   457,   464,   507,   484,   507,   454,     3,   464,
+     489,   454,   182,   484,   454,   509,     4,     4,   489,   454,
+       4,     4,   454,    22,    23,    24,    25,     4,   507,    43,
       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-       4,     4,    56,     4,    58,    59,     4,     4,     4,     4,
-       4,     4,    58,     4,     4,     4,     4,   182,   182,   182,
-     182,   182,    76,    77,   184,    79,    80,   182,    82,    83,
-      76,    77,   182,   182,     4,   183,     4,   183,   182,     4,
-       4,    95,     4,     4,    98,     4,     4,     4,    94,     4,
-       4,     4,   106,     4,   100,   101,   102,   103,   104,   105,
-       4,     4,     4,     4,   182,     4,     4,   631,     4,     4,
-       4,   184,     4,     4,   638,     4,     4,     4,   182,   184,
-       4,     4,     4,     4,   520,   521,   522,     4,   182,     4,
-       4,     4,    76,    77,   182,   638,   182,     4,   632,   663,
-     664,     4,   666,   666,   166,   167,   168,   169,   170,   171,
-     172,   173,   174,   175,   176,   177,   178,   179,   180,   638,
-     663,   664,     4,   666,     4,   666,     4,   181,     4,     4,
-     182,     4,     4,     4,   184,   181,     4,   184,     4,   184,
-       4,     4,   184,     4,   663,   664,   182,   666,   132,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,     4,     4,     4,     4,     4,   182,   182,   152,   153,
-     184,   184,     4,   182,   610,     4,     7,     7,     6,   181,
-       7,     7,     7,     7,     5,     5,     5,     5,    93,   181,
-       7,     5,     5,     5,   630,   181,     5,   181,     5,     7,
-       5,     5,   181,   181,     7,     7,     7,     7,     5,     5,
-       5,     5,   181,     5,   181,   181,     7,     7,   181,     7,
-       7,   181,     7,     7,     7,   181,     7,     7,     7,   181,
-       7,   181,   181,   181,   181,   181,   181,   147,     7,     4,
-       4,   181,     4,     4,   181,     4,     4,     4,   181,     4,
-       4,   181,     4,     3,     5,   181,   181,     6,     3,     6,
-       3,   181,   181,   181,     6,     3,     6,     3,   184,     6,
-       3,     6,     6,     3,     6,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,   181,     3,     6,     3,   182,     8,
-       4,     6,     4,     4,     4,   182,   184,   182,     4,   182,
-       4,   182,     4,     4,     4,   182,     4,     4,   182,     4,
-       4,     3,     8,   182,   184,   182,     6,   182,     4,     8,
-     182,     4,   182,   182,   182,   182,   182,   181,   181,   893,
-     181,   181,   896,   893,   181,   899,   181,   181,   902,     8,
-     899,   893,   902,   899,   181,   893,     3,     8,   181,   913,
-     893,     4,   916,   896,   902,   919,   899,   893,   181,   902,
-       4,     4,   184,   893,     4,   913,   902,   893,   916,     7,
-     913,   935,   902,   916,   893,   939,   902,   896,   942,     4,
-     899,   893,   181,   902,   948,   896,   893,   951,   899,   893,
-     902,   902,   935,   182,   913,   902,   939,   916,   902,   942,
-     948,   902,   913,   951,     4,   948,   893,   902,   951,   181,
-     893,   181,     4,   893,   181,   902,   935,     4,   893,   902,
-     939,   893,   902,   942,   184,   181,   631,   902,   181,   948,
-     902,   942,   951,   656,   182,   638,   182,   561,   438,   712,
-     892,   887,   911,   442,   908,   905,   928,   948,   921,   919,
-     951,   492,   895,   948,   893,  1085,   951,    81,   898,   904,
-     901,   896,   484,   489,   950,   899,   916,   454,   953,   948,
-     951,   679,   457,  1091,   939,   666,   918,   914,   935,   507,
-     637,   464,   394,   513,   509,   943,  1125,   632,  1104,  1142,
-      -1,    -1,   474,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       4,     4,    56,   182,    58,    59,     4,     4,     4,     4,
+       4,     4,     4,    59,    60,    61,    62,    63,    64,     4,
+       4,     4,    76,    77,     4,    79,    80,     4,    82,    83,
+      76,    77,   185,   183,     4,   183,   183,     4,     4,   183,
+       4,    95,   184,   183,    98,   183,   183,   183,     4,   184,
+      76,    77,   106,   183,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,   183,     4,   631,     4,     4,
+       4,     4,     4,     4,   638,   185,     4,     4,     4,     4,
+       4,   185,   183,     4,   520,   521,   522,     4,     4,     4,
+       4,   183,     4,   183,     4,   638,   183,     4,   632,   663,
+     664,     4,   666,   666,     4,     4,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   638,
+     663,   664,     4,   666,     4,   666,   152,   153,   182,     4,
+       4,     4,     4,     4,   183,     4,   182,   185,     4,     4,
+     185,   185,   185,     4,   663,   664,     4,   666,     4,   183,
+     183,   183,     4,     4,   185,   185,   182,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,     4,     4,   610,     4,   183,     4,   147,     7,
+     182,     7,     7,     7,     7,     7,     5,     5,     5,     5,
+       4,   182,     7,   182,   630,     5,     5,     5,     5,    93,
+       5,     7,     5,     5,   182,   561,     7,     7,     7,     7,
+     182,     5,     5,     5,     5,     5,     4,   182,     7,   182,
+     182,   182,   182,   182,   182,   182,     7,   182,   182,   182,
+     182,   182,     7,     7,     7,     7,     7,     7,     7,     7,
+       7,     7,     4,   182,     4,   182,     4,     4,     4,     4,
+       4,     4,   182,   182,     6,     3,     6,     3,     5,   182,
+     182,     6,   182,   182,   182,     3,     6,     3,     3,     6,
+     183,     3,     6,     6,     3,     6,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,   182,     3,     6,     6,     3,
+     185,     6,     8,     4,     4,     4,     4,   183,   185,   183,
+       4,     4,   183,     4,   183,     4,   183,   183,     4,     4,
+       4,     4,     4,     3,   182,   185,   183,     6,     4,   183,
+     183,   183,     4,   183,   183,     8,   183,     8,   183,   893,
+     183,     8,   896,   893,   182,   899,   182,   182,   902,   182,
+     899,   893,   902,   899,   182,   893,   182,   182,     3,   913,
+     893,     8,   916,   896,   902,   919,   899,   893,     4,   902,
+       4,   182,   182,   893,     4,   913,   902,   893,   916,   182,
+     913,   935,   902,   916,   893,   939,   902,   896,   942,   183,
+     899,   893,     4,   902,   948,   896,   893,   951,   899,   893,
+     902,   902,   935,     7,   913,   902,   939,   916,   902,   942,
+     948,   902,   913,   951,   182,   948,   893,   902,   951,   185,
+     893,     4,     4,   893,     4,   902,   935,   182,   893,   902,
+     939,   893,   902,   942,     4,     4,   185,   902,   631,   948,
+     902,   942,   951,   182,   656,   712,   638,   438,   182,   892,
+     183,   183,   442,   182,   887,   911,   905,   948,   921,   919,
+     951,   908,   182,   948,   492,   895,   951,   928,   893,  1085,
+     904,    81,   896,   484,   454,   898,   950,   489,   953,   901,
+     899,   948,   951,   679,   916,   457,   464,   918,  1091,   935,
+     666,   939,   507,   394,   914,   637,  1104,   474,  1125,  1145,
+     509,   943,    -1,   513,    -1,    -1,    -1,    -1,   632,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,  1085,    -1,    -1,    -1,  1085,    -1,  1091,    -1,    -1,
@@ -4718,197 +4721,199 @@ namespace isc { namespace dhcp {
   const unsigned short
   Dhcp6Parser::yystos_[] =
   {
-       0,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,     0,     5,     7,     9,   181,   182,   183,   184,
-     202,   203,   204,   209,     7,   218,     7,   224,     7,   246,
-       7,   344,     7,   421,     7,   437,     7,   454,     7,   373,
-       7,   379,     7,   403,     7,   320,     7,   515,     7,   562,
-       7,   553,   210,   205,   219,   225,   247,   345,   422,   438,
-     455,   374,   380,   404,   321,   516,   563,   554,   202,   211,
-     212,   181,   207,   208,    10,   154,   163,   164,   165,   181,
-     217,   220,   221,   222,   545,   547,   549,   560,    11,    12,
+       0,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+     201,   202,     0,     5,     7,     9,   182,   183,   184,   185,
+     203,   204,   205,   210,     7,   219,     7,   225,     7,   247,
+       7,   345,     7,   422,     7,   438,     7,   455,     7,   374,
+       7,   380,     7,   404,     7,   321,     7,   516,     7,   563,
+       7,   554,   211,   206,   220,   226,   248,   346,   423,   439,
+     456,   375,   381,   405,   322,   517,   564,   555,   203,   212,
+     213,   182,   208,   209,    10,   154,   164,   165,   166,   182,
+     218,   221,   222,   223,   546,   548,   550,   561,    11,    12,
       15,    18,    19,    20,    43,    44,    45,    46,    47,    48,
       49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
       76,    77,    83,    88,    89,    90,    91,    92,    94,    99,
      108,   111,   118,   126,   127,   130,   131,   152,   153,   155,
-     217,   226,   227,   228,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   244,   253,   255,
-     257,   294,   300,   306,   312,   314,   328,   338,   358,   363,
-     371,   397,   427,   429,   448,   478,   490,   502,   503,   511,
-     513,   541,   543,   551,   566,    16,    17,   217,   248,   249,
-     250,   252,   427,   429,    68,    70,    78,    79,    80,    81,
-      82,    95,    98,   106,   217,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   346,   347,   348,   350,
-     352,   354,   356,   358,   361,   362,   397,   415,   427,   429,
-     431,   448,   473,    69,   217,   354,   356,   397,   423,   424,
-     425,   427,   429,    71,    72,    73,    74,    75,   217,   354,
-     356,   397,   427,   429,   439,   440,   441,   443,   444,   446,
-     447,    94,   100,   101,   102,   103,   104,   105,   217,   397,
-     427,   429,   456,   457,   458,   459,   461,   463,   465,   467,
-     469,   471,   371,    21,    59,    61,    62,    65,    66,    67,
-     217,   275,   381,   382,   383,   384,   385,   386,   387,   389,
-     391,   393,   394,   396,   427,   429,    60,    63,    64,   217,
-     275,   385,   391,   405,   406,   407,   408,   409,   411,   412,
-     413,   414,   427,   429,   109,   110,   217,   322,   323,   324,
-     326,   132,   133,   134,   135,   136,   137,   138,   139,   140,
-     141,   142,   143,   144,   217,   427,   429,   517,   518,   519,
-     520,   522,   524,   525,   527,   528,   529,   532,   534,   535,
-     536,   539,   541,   543,   564,   565,   566,    13,    14,   555,
-     556,   557,   559,     6,     3,     4,     8,     3,   223,   561,
-     546,   548,   550,     4,     3,     8,   229,   552,   245,   254,
-     256,   258,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,   243,   339,   372,   398,   428,   430,
-     359,   364,   301,   313,   307,   295,   479,   449,   315,   329,
-     491,     4,   504,   512,   514,   542,   544,   567,     3,     8,
-     251,     4,     3,     8,   416,   432,   349,   351,   353,     4,
-       4,   357,   355,   474,     3,     8,   426,     3,     8,   442,
-       4,   445,     4,     4,     3,     8,   472,   460,   462,   464,
-     466,   468,   470,     8,     3,     8,   388,   276,     4,   392,
-     390,   395,     4,     8,     3,   410,     4,     4,     8,     3,
-     325,   327,     3,     8,     4,   521,   523,     4,   526,     4,
-       4,   530,   533,     4,     4,   537,   540,     3,     8,     3,
-       8,   558,     4,     3,     8,   202,   202,   181,     4,     4,
-       4,     4,     4,   221,     4,     4,     4,     4,     4,     4,
-     182,   182,   182,   182,   182,   182,   182,   182,   184,   183,
-     183,   182,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,   182,
-       4,     4,     4,     4,     4,     4,   227,     4,   184,   249,
-       4,     4,     4,     4,     4,   182,   184,     4,     4,     4,
-     347,     4,   424,     4,   182,     4,   182,   182,   440,     4,
-       4,     4,     4,     4,     4,     4,   458,     4,     4,   182,
-       4,     4,     4,   184,   383,     4,   184,   184,   407,     4,
-       4,   323,   184,     4,     4,   182,     4,   182,   182,     4,
-       4,   184,   184,     4,     4,   518,   565,     4,   182,   556,
-       4,     7,     7,   202,   202,   202,   181,     7,     7,     7,
-       7,     5,   181,     5,     5,     5,   204,   206,   181,    84,
-      85,    86,    87,   360,     5,     5,     5,     5,     7,     5,
-       5,     5,     7,     7,     7,   206,     7,   181,   181,     5,
-       5,   213,     5,     5,   181,   181,   181,   213,   181,     7,
-     181,   181,   181,   213,   213,   213,   181,   181,   181,   181,
-     181,   181,   181,   181,   181,   181,   181,   202,   181,   181,
-     181,   145,   146,   531,   147,   148,   149,   150,   151,   184,
-     538,   181,     5,   202,   226,   564,   555,   248,    21,    26,
+     218,   227,   228,   229,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   245,   254,   256,
+     258,   295,   301,   307,   313,   315,   329,   339,   359,   364,
+     372,   398,   428,   430,   449,   479,   491,   503,   504,   512,
+     514,   542,   544,   552,   567,    16,    17,   218,   249,   250,
+     251,   253,   428,   430,    68,    70,    78,    79,    80,    81,
+      82,    95,    98,   106,   218,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   347,   348,   349,   351,
+     353,   355,   357,   359,   362,   363,   398,   416,   428,   430,
+     432,   449,   474,    69,   218,   355,   357,   398,   424,   425,
+     426,   428,   430,    71,    72,    73,    74,    75,   218,   355,
+     357,   398,   428,   430,   440,   441,   442,   444,   445,   447,
+     448,    94,   100,   101,   102,   103,   104,   105,   218,   398,
+     428,   430,   457,   458,   459,   460,   462,   464,   466,   468,
+     470,   472,   372,    21,    59,    61,    62,    65,    66,    67,
+     218,   276,   382,   383,   384,   385,   386,   387,   388,   390,
+     392,   394,   395,   397,   428,   430,    60,    63,    64,   218,
+     276,   386,   392,   406,   407,   408,   409,   410,   412,   413,
+     414,   415,   428,   430,   109,   110,   218,   323,   324,   325,
+     327,   132,   133,   134,   135,   136,   137,   138,   139,   140,
+     141,   142,   143,   144,   218,   428,   430,   518,   519,   520,
+     521,   523,   525,   526,   528,   529,   530,   533,   535,   536,
+     537,   540,   542,   544,   565,   566,   567,    13,    14,   556,
+     557,   558,   560,     6,     3,     4,     8,     3,   224,   562,
+     547,   549,   551,     4,     3,     8,   230,   553,   246,   255,
+     257,   259,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,   244,   340,   373,   399,   429,   431,
+     360,   365,   302,   314,   308,   296,   480,   450,   316,   330,
+     492,     4,   505,   513,   515,   543,   545,   568,     3,     8,
+     252,     4,     3,     8,   417,   433,   350,   352,   354,     4,
+       4,   358,   356,   475,     3,     8,   427,     3,     8,   443,
+       4,   446,     4,     4,     3,     8,   473,   461,   463,   465,
+     467,   469,   471,     8,     3,     8,   389,   277,     4,   393,
+     391,   396,     4,     8,     3,   411,     4,     4,     8,     3,
+     326,   328,     3,     8,     4,   522,   524,     4,   527,     4,
+       4,   531,   534,     4,     4,   538,   541,     3,     8,     3,
+       8,   559,     4,     3,     8,   203,   203,   182,     4,     4,
+       4,     4,     4,   222,     4,     4,     4,     4,     4,     4,
+     183,   183,   183,   183,   183,   183,   183,   183,   185,   184,
+     184,   183,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,   183,
+       4,     4,     4,     4,     4,     4,   228,     4,   185,   250,
+       4,     4,     4,     4,     4,   183,   185,     4,     4,     4,
+     348,     4,   425,     4,   183,     4,   183,   183,   441,     4,
+       4,     4,     4,     4,     4,     4,   459,     4,     4,   183,
+       4,     4,     4,   185,   384,     4,   185,   185,   408,     4,
+       4,   324,   185,     4,     4,   183,     4,   183,   183,     4,
+       4,   185,   185,     4,     4,   519,   566,     4,   183,   557,
+       4,     7,     7,   203,   203,   203,   182,     7,     7,     7,
+       7,     5,   182,     5,     5,     5,   205,   207,   182,    84,
+      85,    86,    87,   361,     5,     5,     5,     5,     7,     5,
+       5,     5,     7,     7,     7,   207,     7,   182,   182,     5,
+       5,   214,     5,     5,   182,   182,   182,   214,   182,     7,
+     182,   182,   182,   214,   214,   214,   182,   182,   182,   182,
+     182,   182,   182,   182,   182,   182,   182,   203,   182,   182,
+     182,   145,   146,   532,   147,   148,   149,   150,   151,   185,
+     539,   182,     5,   203,   227,   565,   556,   249,    21,    26,
       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,   217,   263,   264,   265,
-     268,   270,   272,   274,   275,   277,   278,   279,   280,   281,
-     282,   283,   284,   285,   287,   288,   290,   292,   263,     7,
-     259,   260,   261,     7,   340,   341,   342,     7,   375,   376,
-     377,     7,   399,   400,   401,     7,   365,   366,   367,   102,
-     181,   302,   303,   304,   305,   211,   103,   105,   304,   308,
-     309,   310,   311,    93,   296,   297,   298,     7,   480,   481,
-       7,   450,   451,   452,     7,   316,   317,   318,   112,   113,
-     114,   115,   116,   117,   330,   331,   332,   333,   334,   335,
-     336,   337,    21,   122,   123,   124,   125,   217,   277,   427,
-     429,   492,   493,   494,   497,   498,   500,   501,   128,   129,
-     217,   427,   429,   505,   506,   507,   509,   517,     7,   568,
-     569,   214,     7,   417,   418,   419,     7,   433,   434,   435,
-     107,   459,   475,   476,   259,     8,     8,     8,     8,   266,
-     269,   271,   273,     4,     4,     4,     4,     4,   286,     4,
-       4,   289,   291,   293,     4,     4,     4,     3,     8,     8,
-     262,     6,     3,   343,     6,     3,   378,     6,     3,   402,
-       6,     3,   368,     6,     3,     3,     6,     6,     3,     6,
-     299,     3,     8,   482,     3,     6,   453,     6,     3,   319,
+      37,    38,    39,    40,    41,    42,   218,   264,   265,   266,
+     269,   271,   273,   275,   276,   278,   279,   280,   281,   282,
+     283,   284,   285,   286,   288,   289,   291,   293,   264,     7,
+     260,   261,   262,     7,   341,   342,   343,     7,   376,   377,
+     378,     7,   400,   401,   402,     7,   366,   367,   368,   102,
+     182,   303,   304,   305,   306,   212,   103,   105,   305,   309,
+     310,   311,   312,    93,   297,   298,   299,     7,   481,   482,
+       7,   451,   452,   453,     7,   317,   318,   319,   112,   113,
+     114,   115,   116,   117,   331,   332,   333,   334,   335,   336,
+     337,   338,    21,   122,   123,   124,   125,   218,   278,   428,
+     430,   493,   494,   495,   498,   499,   501,   502,   128,   129,
+     218,   428,   430,   506,   507,   508,   510,   518,     7,   569,
+     570,   215,     7,   418,   419,   420,     7,   434,   435,   436,
+     107,   460,   476,   477,   260,     8,     8,     8,     8,   267,
+     270,   272,   274,     4,     4,     4,     4,     4,   287,     4,
+       4,   290,   292,   294,     4,     4,     4,     3,     8,     8,
+     263,     6,     3,   344,     6,     3,   379,     6,     3,   403,
+       6,     3,   369,     6,     3,     3,     6,     6,     3,     6,
+     300,     3,     8,   483,     3,     6,   454,     6,     3,   320,
        6,     3,     4,     4,     4,     4,     4,     4,     3,     8,
-     495,   499,     4,     4,     4,     3,     8,   508,   510,     3,
-       8,     8,   570,     3,     6,   181,   215,   216,   420,     6,
-       3,   436,     6,     3,   477,     8,     6,     4,     4,     4,
-       4,   182,   184,   182,   184,   182,     4,   182,   182,     4,
-       4,     4,   182,   182,   184,   264,   263,   261,   346,   342,
-     381,   377,   405,   401,   217,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   275,   338,   350,   352,
-     354,   356,   358,   362,   369,   370,   397,   427,   429,   473,
-     367,   303,   309,     4,   297,    96,    97,   217,   275,   397,
-     427,   429,   483,   484,   485,   486,   487,   489,   481,   456,
-     452,   322,   318,   182,   182,   182,   182,   182,   182,   331,
-       4,     4,   182,   182,   182,   493,     4,     4,   506,   156,
-     158,   159,   217,   275,   427,   429,   571,   572,   573,   574,
-     576,   569,     6,     3,   423,   419,   439,   435,     4,    22,
-      23,    24,    25,   267,   181,   181,   181,   181,   181,   181,
-     181,     8,     8,     8,     8,     3,     8,   181,   488,     4,
-       8,     3,     8,     8,   119,   120,   121,   496,   181,   181,
-     181,   577,     4,   575,     3,     8,   181,     8,     8,   181,
-     370,     4,   184,   485,     4,   182,     4,   572,   181,     5,
-     181,     7,   578,   579,   580,     3,     6,   157,   160,   161,
-     162,   581,   582,   583,   585,   586,   587,   579,   584,     4,
-       4,     4,     3,     8,     4,   184,   182,   182,   582,   181
+     496,   500,     4,     4,     4,     3,     8,   509,   511,     3,
+       8,     8,   571,     3,     6,   182,   216,   217,   421,     6,
+       3,   437,     6,     3,   478,     8,     6,     4,     4,     4,
+       4,   183,   185,   183,   185,   183,     4,   183,   183,     4,
+       4,     4,   183,   183,   185,   265,   264,   262,   347,   343,
+     382,   378,   406,   402,   218,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   276,   339,   351,   353,
+     355,   357,   359,   363,   370,   371,   398,   428,   430,   474,
+     368,   304,   310,     4,   298,    96,    97,   218,   276,   398,
+     428,   430,   484,   485,   486,   487,   488,   490,   482,   457,
+     453,   323,   319,   183,   183,   183,   183,   183,   183,   332,
+       4,     4,   183,   183,   183,   494,     4,     4,   507,   156,
+     158,   159,   218,   276,   428,   430,   572,   573,   574,   575,
+     577,   570,     6,     3,   424,   420,   440,   436,     4,    22,
+      23,    24,    25,   268,   182,   182,   182,   182,   182,   182,
+     182,     8,     8,     8,     8,     3,     8,   182,   489,     4,
+       8,     3,     8,     8,   119,   120,   121,   497,   182,   182,
+     182,   578,     4,   576,     3,     8,   182,     8,     8,   182,
+     371,     4,   185,   486,     4,   183,     4,   573,   182,     5,
+     182,     7,   579,   580,   581,     3,     6,   157,   160,   161,
+     162,   163,   582,   583,   584,   586,   587,   588,   589,   580,
+     585,     4,     4,     4,   590,     3,     8,     4,   185,   183,
+     183,     4,   583,   182,   182
   };
 
   const unsigned short
   Dhcp6Parser::yyr1_[] =
   {
-       0,   185,   187,   186,   188,   186,   189,   186,   190,   186,
-     191,   186,   192,   186,   193,   186,   194,   186,   195,   186,
-     196,   186,   197,   186,   198,   186,   199,   186,   200,   186,
-     201,   186,   202,   202,   202,   202,   202,   202,   202,   203,
-     205,   204,   206,   207,   207,   208,   208,   210,   209,   211,
-     211,   212,   212,   214,   213,   215,   215,   216,   216,   217,
-     219,   218,   220,   220,   221,   221,   221,   221,   221,   221,
-     223,   222,   225,   224,   226,   226,   227,   227,   227,   227,
-     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
-     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
-     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
-     227,   227,   227,   227,   227,   227,   227,   227,   227,   229,
-     228,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   243,   242,   245,   244,   247,   246,   248,
-     248,   249,   249,   249,   249,   249,   251,   250,   252,   254,
-     253,   256,   255,   258,   257,   259,   259,   260,   260,   262,
-     261,   263,   263,   264,   264,   264,   264,   264,   264,   264,
-     264,   264,   264,   264,   264,   264,   264,   264,   264,   264,
-     264,   264,   264,   266,   265,   267,   267,   267,   267,   269,
-     268,   271,   270,   273,   272,   274,   276,   275,   277,   278,
-     279,   280,   281,   282,   283,   284,   286,   285,   287,   289,
-     288,   291,   290,   293,   292,   295,   294,   296,   296,   297,
-     299,   298,   301,   300,   302,   302,   303,   303,   304,   305,
-     307,   306,   308,   308,   309,   309,   309,   310,   311,   313,
-     312,   315,   314,   316,   316,   317,   317,   319,   318,   321,
-     320,   322,   322,   322,   323,   323,   325,   324,   327,   326,
-     329,   328,   330,   330,   331,   331,   331,   331,   331,   331,
-     332,   333,   334,   335,   336,   337,   339,   338,   340,   340,
-     341,   341,   343,   342,   345,   344,   346,   346,   347,   347,
-     347,   347,   347,   347,   347,   347,   347,   347,   347,   347,
-     347,   347,   347,   347,   347,   347,   347,   347,   347,   347,
-     347,   347,   347,   347,   347,   349,   348,   351,   350,   353,
-     352,   355,   354,   357,   356,   359,   358,   360,   360,   360,
-     360,   361,   362,   364,   363,   365,   365,   366,   366,   368,
-     367,   369,   369,   370,   370,   370,   370,   370,   370,   370,
-     370,   370,   370,   370,   370,   370,   370,   370,   370,   370,
-     370,   370,   370,   370,   370,   370,   370,   372,   371,   374,
-     373,   375,   375,   376,   376,   378,   377,   380,   379,   381,
-     381,   382,   382,   383,   383,   383,   383,   383,   383,   383,
-     383,   383,   383,   384,   385,   386,   388,   387,   390,   389,
-     392,   391,   393,   395,   394,   396,   398,   397,   399,   399,
-     400,   400,   402,   401,   404,   403,   405,   405,   406,   406,
-     407,   407,   407,   407,   407,   407,   407,   407,   407,   408,
-     410,   409,   411,   412,   413,   414,   416,   415,   417,   417,
-     418,   418,   420,   419,   422,   421,   423,   423,   424,   424,
-     424,   424,   424,   424,   424,   426,   425,   428,   427,   430,
-     429,   432,   431,   433,   433,   434,   434,   436,   435,   438,
-     437,   439,   439,   440,   440,   440,   440,   440,   440,   440,
-     440,   440,   440,   440,   442,   441,   443,   445,   444,   446,
-     447,   449,   448,   450,   450,   451,   451,   453,   452,   455,
-     454,   456,   456,   457,   457,   458,   458,   458,   458,   458,
-     458,   458,   458,   458,   458,   458,   460,   459,   462,   461,
-     464,   463,   466,   465,   468,   467,   470,   469,   472,   471,
-     474,   473,   475,   475,   477,   476,   479,   478,   480,   480,
-     482,   481,   483,   483,   484,   484,   485,   485,   485,   485,
-     485,   485,   485,   486,   488,   487,   489,   491,   490,   492,
-     492,   493,   493,   493,   493,   493,   493,   493,   493,   493,
-     495,   494,   496,   496,   496,   497,   499,   498,   500,   501,
-     502,   504,   503,   505,   505,   506,   506,   506,   506,   506,
-     508,   507,   510,   509,   512,   511,   514,   513,   516,   515,
-     517,   517,   518,   518,   518,   518,   518,   518,   518,   518,
-     518,   518,   518,   518,   518,   518,   518,   518,   518,   518,
-     519,   521,   520,   523,   522,   524,   526,   525,   527,   528,
-     530,   529,   531,   531,   533,   532,   534,   535,   537,   536,
-     538,   538,   538,   538,   538,   540,   539,   542,   541,   544,
-     543,   546,   545,   548,   547,   550,   549,   552,   551,   554,
-     553,   555,   555,   556,   556,   558,   557,   559,   561,   560,
-     563,   562,   564,   564,   565,   567,   566,   568,   568,   570,
-     569,   571,   571,   572,   572,   572,   572,   572,   572,   572,
-     573,   575,   574,   577,   576,   578,   578,   580,   579,   581,
-     581,   582,   582,   582,   582,   584,   583,   585,   586,   587
+       0,   186,   188,   187,   189,   187,   190,   187,   191,   187,
+     192,   187,   193,   187,   194,   187,   195,   187,   196,   187,
+     197,   187,   198,   187,   199,   187,   200,   187,   201,   187,
+     202,   187,   203,   203,   203,   203,   203,   203,   203,   204,
+     206,   205,   207,   208,   208,   209,   209,   211,   210,   212,
+     212,   213,   213,   215,   214,   216,   216,   217,   217,   218,
+     220,   219,   221,   221,   222,   222,   222,   222,   222,   222,
+     224,   223,   226,   225,   227,   227,   228,   228,   228,   228,
+     228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
+     228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
+     228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
+     228,   228,   228,   228,   228,   228,   228,   228,   228,   230,
+     229,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   244,   243,   246,   245,   248,   247,   249,
+     249,   250,   250,   250,   250,   250,   252,   251,   253,   255,
+     254,   257,   256,   259,   258,   260,   260,   261,   261,   263,
+     262,   264,   264,   265,   265,   265,   265,   265,   265,   265,
+     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
+     265,   265,   265,   267,   266,   268,   268,   268,   268,   270,
+     269,   272,   271,   274,   273,   275,   277,   276,   278,   279,
+     280,   281,   282,   283,   284,   285,   287,   286,   288,   290,
+     289,   292,   291,   294,   293,   296,   295,   297,   297,   298,
+     300,   299,   302,   301,   303,   303,   304,   304,   305,   306,
+     308,   307,   309,   309,   310,   310,   310,   311,   312,   314,
+     313,   316,   315,   317,   317,   318,   318,   320,   319,   322,
+     321,   323,   323,   323,   324,   324,   326,   325,   328,   327,
+     330,   329,   331,   331,   332,   332,   332,   332,   332,   332,
+     333,   334,   335,   336,   337,   338,   340,   339,   341,   341,
+     342,   342,   344,   343,   346,   345,   347,   347,   348,   348,
+     348,   348,   348,   348,   348,   348,   348,   348,   348,   348,
+     348,   348,   348,   348,   348,   348,   348,   348,   348,   348,
+     348,   348,   348,   348,   348,   350,   349,   352,   351,   354,
+     353,   356,   355,   358,   357,   360,   359,   361,   361,   361,
+     361,   362,   363,   365,   364,   366,   366,   367,   367,   369,
+     368,   370,   370,   371,   371,   371,   371,   371,   371,   371,
+     371,   371,   371,   371,   371,   371,   371,   371,   371,   371,
+     371,   371,   371,   371,   371,   371,   371,   373,   372,   375,
+     374,   376,   376,   377,   377,   379,   378,   381,   380,   382,
+     382,   383,   383,   384,   384,   384,   384,   384,   384,   384,
+     384,   384,   384,   385,   386,   387,   389,   388,   391,   390,
+     393,   392,   394,   396,   395,   397,   399,   398,   400,   400,
+     401,   401,   403,   402,   405,   404,   406,   406,   407,   407,
+     408,   408,   408,   408,   408,   408,   408,   408,   408,   409,
+     411,   410,   412,   413,   414,   415,   417,   416,   418,   418,
+     419,   419,   421,   420,   423,   422,   424,   424,   425,   425,
+     425,   425,   425,   425,   425,   427,   426,   429,   428,   431,
+     430,   433,   432,   434,   434,   435,   435,   437,   436,   439,
+     438,   440,   440,   441,   441,   441,   441,   441,   441,   441,
+     441,   441,   441,   441,   443,   442,   444,   446,   445,   447,
+     448,   450,   449,   451,   451,   452,   452,   454,   453,   456,
+     455,   457,   457,   458,   458,   459,   459,   459,   459,   459,
+     459,   459,   459,   459,   459,   459,   461,   460,   463,   462,
+     465,   464,   467,   466,   469,   468,   471,   470,   473,   472,
+     475,   474,   476,   476,   478,   477,   480,   479,   481,   481,
+     483,   482,   484,   484,   485,   485,   486,   486,   486,   486,
+     486,   486,   486,   487,   489,   488,   490,   492,   491,   493,
+     493,   494,   494,   494,   494,   494,   494,   494,   494,   494,
+     496,   495,   497,   497,   497,   498,   500,   499,   501,   502,
+     503,   505,   504,   506,   506,   507,   507,   507,   507,   507,
+     509,   508,   511,   510,   513,   512,   515,   514,   517,   516,
+     518,   518,   519,   519,   519,   519,   519,   519,   519,   519,
+     519,   519,   519,   519,   519,   519,   519,   519,   519,   519,
+     520,   522,   521,   524,   523,   525,   527,   526,   528,   529,
+     531,   530,   532,   532,   534,   533,   535,   536,   538,   537,
+     539,   539,   539,   539,   539,   541,   540,   543,   542,   545,
+     544,   547,   546,   549,   548,   551,   550,   553,   552,   555,
+     554,   556,   556,   557,   557,   559,   558,   560,   562,   561,
+     564,   563,   565,   565,   566,   568,   567,   569,   569,   571,
+     570,   572,   572,   573,   573,   573,   573,   573,   573,   573,
+     574,   576,   575,   578,   577,   579,   579,   581,   580,   582,
+     582,   583,   583,   583,   583,   583,   585,   584,   586,   587,
+     588,   590,   589
   };
 
   const unsigned char
@@ -4984,7 +4989,8 @@ namespace isc { namespace dhcp {
        0,     4,     1,     3,     1,     0,     6,     1,     3,     0,
        4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
        3,     0,     4,     0,     6,     1,     3,     0,     4,     1,
-       3,     1,     1,     1,     1,     0,     4,     3,     3,     3
+       3,     1,     1,     1,     1,     1,     0,     4,     3,     3,
+       3,     0,     4
   };
 
 
@@ -5041,10 +5047,10 @@ namespace isc { namespace dhcp {
   "\"when-not-present\"", "\"hostname-char-set\"",
   "\"hostname-char-replacement\"", "\"Logging\"", "\"loggers\"",
   "\"output_options\"", "\"output\"", "\"debuglevel\"", "\"severity\"",
-  "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"Dhcp4\"", "\"DhcpDdns\"",
-  "\"Control-agent\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP6", "SUB_DHCP6",
-  "SUB_INTERFACES6", "SUB_SUBNET6", "SUB_POOL6", "SUB_PD_POOL",
-  "SUB_RESERVATION", "SUB_OPTION_DEFS", "SUB_OPTION_DEF",
+  "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"pattern\"", "\"Dhcp4\"",
+  "\"DhcpDdns\"", "\"Control-agent\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP6",
+  "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6", "SUB_POOL6",
+  "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEFS", "SUB_OPTION_DEF",
   "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS", "SUB_LOGGING",
   "SUB_CONFIG_CONTROL", "\"constant string\"", "\"integer\"",
   "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2",
@@ -5142,84 +5148,85 @@ namespace isc { namespace dhcp {
   "logger_param", "debuglevel", "severity", "$@128", "output_options_list",
   "$@129", "output_options_list_content", "output_entry", "$@130",
   "output_params_list", "output_params", "output", "$@131", "flush",
-  "maxsize", "maxver", YY_NULLPTR
+  "maxsize", "maxver", "pattern", "$@132", YY_NULLPTR
   };
 
 #if PARSER6_DEBUG
   const unsigned short
   Dhcp6Parser::yyrline_[] =
   {
-       0,   269,   269,   269,   270,   270,   271,   271,   272,   272,
-     273,   273,   274,   274,   275,   275,   276,   276,   277,   277,
-     278,   278,   279,   279,   280,   280,   281,   281,   282,   282,
-     283,   283,   291,   292,   293,   294,   295,   296,   297,   300,
-     305,   305,   316,   319,   320,   323,   327,   334,   334,   341,
-     342,   345,   349,   356,   356,   363,   364,   367,   371,   382,
-     392,   392,   407,   408,   412,   413,   414,   415,   416,   417,
-     420,   420,   435,   435,   444,   445,   450,   451,   452,   453,
-     454,   455,   456,   457,   458,   459,   460,   461,   462,   463,
-     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
-     474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
-     484,   485,   486,   487,   488,   489,   490,   491,   492,   495,
-     495,   503,   508,   513,   518,   523,   528,   533,   538,   543,
-     548,   553,   558,   563,   563,   571,   571,   582,   582,   591,
-     592,   595,   596,   597,   598,   599,   602,   602,   612,   618,
-     618,   630,   630,   642,   642,   652,   653,   656,   657,   660,
-     660,   670,   671,   674,   675,   676,   677,   678,   679,   680,
-     681,   682,   683,   684,   685,   686,   687,   688,   689,   690,
-     691,   692,   693,   696,   696,   703,   704,   705,   706,   709,
-     709,   717,   717,   725,   725,   733,   738,   738,   746,   751,
-     756,   761,   766,   771,   776,   781,   786,   786,   794,   799,
-     799,   807,   807,   815,   815,   823,   823,   833,   834,   836,
-     838,   838,   856,   856,   866,   867,   870,   871,   874,   879,
-     884,   884,   894,   895,   898,   899,   900,   903,   908,   915,
-     915,   925,   925,   935,   936,   939,   940,   943,   943,   953,
-     953,   963,   964,   965,   968,   969,   972,   972,   980,   980,
-     988,   988,   999,  1000,  1003,  1004,  1005,  1006,  1007,  1008,
-    1011,  1016,  1021,  1026,  1031,  1036,  1044,  1044,  1057,  1058,
-    1061,  1062,  1069,  1069,  1095,  1095,  1106,  1107,  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,  1140,  1140,  1148,  1148,  1156,
-    1156,  1164,  1164,  1172,  1172,  1182,  1182,  1189,  1190,  1191,
-    1192,  1195,  1200,  1208,  1208,  1219,  1220,  1224,  1225,  1228,
-    1228,  1236,  1237,  1240,  1241,  1242,  1243,  1244,  1245,  1246,
-    1247,  1248,  1249,  1250,  1251,  1252,  1253,  1254,  1255,  1256,
-    1257,  1258,  1259,  1260,  1261,  1262,  1263,  1270,  1270,  1283,
-    1283,  1292,  1293,  1296,  1297,  1302,  1302,  1317,  1317,  1331,
-    1332,  1335,  1336,  1339,  1340,  1341,  1342,  1343,  1344,  1345,
-    1346,  1347,  1348,  1351,  1353,  1358,  1360,  1360,  1368,  1368,
-    1376,  1376,  1384,  1386,  1386,  1394,  1403,  1403,  1415,  1416,
-    1421,  1422,  1427,  1427,  1439,  1439,  1451,  1452,  1457,  1458,
-    1463,  1464,  1465,  1466,  1467,  1468,  1469,  1470,  1471,  1474,
-    1476,  1476,  1484,  1486,  1488,  1493,  1501,  1501,  1513,  1514,
-    1517,  1518,  1521,  1521,  1531,  1531,  1540,  1541,  1544,  1545,
-    1546,  1547,  1548,  1549,  1550,  1553,  1553,  1561,  1561,  1586,
-    1586,  1616,  1616,  1628,  1629,  1632,  1633,  1636,  1636,  1648,
-    1648,  1660,  1661,  1664,  1665,  1666,  1667,  1668,  1669,  1670,
-    1671,  1672,  1673,  1674,  1677,  1677,  1685,  1690,  1690,  1698,
-    1703,  1711,  1711,  1721,  1722,  1725,  1726,  1729,  1729,  1738,
-    1738,  1747,  1748,  1751,  1752,  1756,  1757,  1758,  1759,  1760,
-    1761,  1762,  1763,  1764,  1765,  1766,  1769,  1769,  1779,  1779,
-    1789,  1789,  1797,  1797,  1805,  1805,  1813,  1813,  1821,  1821,
-    1834,  1834,  1844,  1845,  1848,  1848,  1859,  1859,  1869,  1870,
-    1873,  1873,  1883,  1884,  1887,  1888,  1891,  1892,  1893,  1894,
-    1895,  1896,  1897,  1900,  1902,  1902,  1910,  1918,  1918,  1930,
-    1931,  1934,  1935,  1936,  1937,  1938,  1939,  1940,  1941,  1942,
-    1945,  1945,  1952,  1953,  1954,  1957,  1962,  1962,  1970,  1975,
-    1982,  1989,  1989,  1999,  2000,  2003,  2004,  2005,  2006,  2007,
-    2010,  2010,  2018,  2018,  2028,  2028,  2068,  2068,  2080,  2080,
-    2090,  2091,  2094,  2095,  2096,  2097,  2098,  2099,  2100,  2101,
-    2102,  2103,  2104,  2105,  2106,  2107,  2108,  2109,  2110,  2111,
-    2114,  2119,  2119,  2127,  2127,  2135,  2140,  2140,  2148,  2153,
-    2158,  2158,  2166,  2167,  2170,  2170,  2178,  2183,  2188,  2188,
-    2196,  2199,  2202,  2205,  2208,  2214,  2214,  2222,  2222,  2230,
-    2230,  2240,  2240,  2247,  2247,  2254,  2254,  2263,  2263,  2274,
-    2274,  2284,  2285,  2289,  2290,  2293,  2293,  2303,  2313,  2313,
-    2323,  2323,  2334,  2335,  2339,  2343,  2343,  2355,  2356,  2360,
-    2360,  2368,  2369,  2372,  2373,  2374,  2375,  2376,  2377,  2378,
-    2381,  2386,  2386,  2394,  2394,  2404,  2405,  2408,  2408,  2416,
-    2417,  2420,  2421,  2422,  2423,  2426,  2426,  2434,  2439,  2444
+       0,   270,   270,   270,   271,   271,   272,   272,   273,   273,
+     274,   274,   275,   275,   276,   276,   277,   277,   278,   278,
+     279,   279,   280,   280,   281,   281,   282,   282,   283,   283,
+     284,   284,   292,   293,   294,   295,   296,   297,   298,   301,
+     306,   306,   317,   320,   321,   324,   328,   335,   335,   342,
+     343,   346,   350,   357,   357,   364,   365,   368,   372,   383,
+     393,   393,   408,   409,   413,   414,   415,   416,   417,   418,
+     421,   421,   436,   436,   445,   446,   451,   452,   453,   454,
+     455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
+     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
+     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
+     485,   486,   487,   488,   489,   490,   491,   492,   493,   496,
+     496,   504,   509,   514,   519,   524,   529,   534,   539,   544,
+     549,   554,   559,   564,   564,   572,   572,   583,   583,   592,
+     593,   596,   597,   598,   599,   600,   603,   603,   613,   619,
+     619,   631,   631,   643,   643,   653,   654,   657,   658,   661,
+     661,   671,   672,   675,   676,   677,   678,   679,   680,   681,
+     682,   683,   684,   685,   686,   687,   688,   689,   690,   691,
+     692,   693,   694,   697,   697,   704,   705,   706,   707,   710,
+     710,   718,   718,   726,   726,   734,   739,   739,   747,   752,
+     757,   762,   767,   772,   777,   782,   787,   787,   795,   800,
+     800,   808,   808,   816,   816,   824,   824,   834,   835,   837,
+     839,   839,   857,   857,   867,   868,   871,   872,   875,   880,
+     885,   885,   895,   896,   899,   900,   901,   904,   909,   916,
+     916,   926,   926,   936,   937,   940,   941,   944,   944,   954,
+     954,   964,   965,   966,   969,   970,   973,   973,   981,   981,
+     989,   989,  1000,  1001,  1004,  1005,  1006,  1007,  1008,  1009,
+    1012,  1017,  1022,  1027,  1032,  1037,  1045,  1045,  1058,  1059,
+    1062,  1063,  1070,  1070,  1096,  1096,  1107,  1108,  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,  1141,  1141,  1149,  1149,  1157,
+    1157,  1165,  1165,  1173,  1173,  1183,  1183,  1190,  1191,  1192,
+    1193,  1196,  1201,  1209,  1209,  1220,  1221,  1225,  1226,  1229,
+    1229,  1237,  1238,  1241,  1242,  1243,  1244,  1245,  1246,  1247,
+    1248,  1249,  1250,  1251,  1252,  1253,  1254,  1255,  1256,  1257,
+    1258,  1259,  1260,  1261,  1262,  1263,  1264,  1271,  1271,  1284,
+    1284,  1293,  1294,  1297,  1298,  1303,  1303,  1318,  1318,  1332,
+    1333,  1336,  1337,  1340,  1341,  1342,  1343,  1344,  1345,  1346,
+    1347,  1348,  1349,  1352,  1354,  1359,  1361,  1361,  1369,  1369,
+    1377,  1377,  1385,  1387,  1387,  1395,  1404,  1404,  1416,  1417,
+    1422,  1423,  1428,  1428,  1440,  1440,  1452,  1453,  1458,  1459,
+    1464,  1465,  1466,  1467,  1468,  1469,  1470,  1471,  1472,  1475,
+    1477,  1477,  1485,  1487,  1489,  1494,  1502,  1502,  1514,  1515,
+    1518,  1519,  1522,  1522,  1532,  1532,  1541,  1542,  1545,  1546,
+    1547,  1548,  1549,  1550,  1551,  1554,  1554,  1562,  1562,  1587,
+    1587,  1617,  1617,  1629,  1630,  1633,  1634,  1637,  1637,  1649,
+    1649,  1661,  1662,  1665,  1666,  1667,  1668,  1669,  1670,  1671,
+    1672,  1673,  1674,  1675,  1678,  1678,  1686,  1691,  1691,  1699,
+    1704,  1712,  1712,  1722,  1723,  1726,  1727,  1730,  1730,  1739,
+    1739,  1748,  1749,  1752,  1753,  1757,  1758,  1759,  1760,  1761,
+    1762,  1763,  1764,  1765,  1766,  1767,  1770,  1770,  1780,  1780,
+    1790,  1790,  1798,  1798,  1806,  1806,  1814,  1814,  1822,  1822,
+    1835,  1835,  1845,  1846,  1849,  1849,  1860,  1860,  1870,  1871,
+    1874,  1874,  1884,  1885,  1888,  1889,  1892,  1893,  1894,  1895,
+    1896,  1897,  1898,  1901,  1903,  1903,  1911,  1919,  1919,  1931,
+    1932,  1935,  1936,  1937,  1938,  1939,  1940,  1941,  1942,  1943,
+    1946,  1946,  1953,  1954,  1955,  1958,  1963,  1963,  1971,  1976,
+    1983,  1990,  1990,  2000,  2001,  2004,  2005,  2006,  2007,  2008,
+    2011,  2011,  2019,  2019,  2029,  2029,  2069,  2069,  2081,  2081,
+    2091,  2092,  2095,  2096,  2097,  2098,  2099,  2100,  2101,  2102,
+    2103,  2104,  2105,  2106,  2107,  2108,  2109,  2110,  2111,  2112,
+    2115,  2120,  2120,  2128,  2128,  2136,  2141,  2141,  2149,  2154,
+    2159,  2159,  2167,  2168,  2171,  2171,  2179,  2184,  2189,  2189,
+    2197,  2200,  2203,  2206,  2209,  2215,  2215,  2223,  2223,  2231,
+    2231,  2241,  2241,  2248,  2248,  2255,  2255,  2264,  2264,  2275,
+    2275,  2285,  2286,  2290,  2291,  2294,  2294,  2304,  2314,  2314,
+    2324,  2324,  2335,  2336,  2340,  2344,  2344,  2356,  2357,  2361,
+    2361,  2369,  2370,  2373,  2374,  2375,  2376,  2377,  2378,  2379,
+    2382,  2387,  2387,  2395,  2395,  2405,  2406,  2409,  2409,  2417,
+    2418,  2421,  2422,  2423,  2424,  2425,  2428,  2428,  2436,  2441,
+    2446,  2451,  2451
   };
 
   // Print the state stack on the debug stream.
@@ -5252,11 +5259,10 @@ namespace isc { namespace dhcp {
 #endif // PARSER6_DEBUG
 
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // lalr1.cc:1218
 } } // isc::dhcp
-#line 5258 "dhcp6_parser.cc"
-
-#line 2449 "dhcp6_parser.yy"
+#line 5265 "dhcp6_parser.cc" // lalr1.cc:1218
+#line 2459 "dhcp6_parser.yy" // lalr1.cc:1219
 
 
 void
index 3feac2a89acd78ecae763231462cb2ffad105256..ba35ee450dec2690e3c81ab0814f62fb2ab2984b 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.4.1.
+// A Bison parser, made by GNU Bison 3.2.1.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
 #ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED
 # define YY_PARSER6_DHCP6_PARSER_H_INCLUDED
 // //                    "%code requires" blocks.
-#line 17 "dhcp6_parser.yy"
+#line 17 "dhcp6_parser.yy" // lalr1.cc:404
 
 #include <string>
 #include <cc/data.h>
@@ -56,7 +56,7 @@ using namespace isc::dhcp;
 using namespace isc::data;
 using namespace std;
 
-#line 60 "dhcp6_parser.h"
+#line 60 "dhcp6_parser.h" // lalr1.cc:404
 
 # include <cassert>
 # include <cstdlib> // std::abort
@@ -65,14 +65,8 @@ using namespace std;
 # include <string>
 # include <vector>
 
-#if defined __cplusplus
-# define YY_CPLUSPLUS __cplusplus
-#else
-# define YY_CPLUSPLUS 199711L
-#endif
-
 // Support move semantics when possible.
-#if 201103L <= YY_CPLUSPLUS
+#if defined __cplusplus && 201103L <= __cplusplus
 # define YY_MOVE           std::move
 # define YY_MOVE_OR_COPY   move
 # define YY_MOVE_REF(Type) Type&&
@@ -85,22 +79,6 @@ using namespace std;
 # define YY_RVREF(Type)    const Type&
 # define YY_COPY(Type)     const Type&
 #endif
-
-// Support noexcept when possible.
-#if 201103L <= YY_CPLUSPLUS
-# define YY_NOEXCEPT noexcept
-# define YY_NOTHROW
-#else
-# define YY_NOEXCEPT
-# define YY_NOTHROW throw ()
-#endif
-
-// Support constexpr when possible.
-#if 201703 <= YY_CPLUSPLUS
-# define YY_CONSTEXPR constexpr
-#else
-# define YY_CONSTEXPR
-#endif
 # include "location.hh"
 #include <typeinfo>
 #ifndef YYASSERT
@@ -178,80 +156,193 @@ using namespace std;
 # endif /* ! defined YYDEBUG */
 #endif  /* ! defined PARSER6_DEBUG */
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // lalr1.cc:404
 namespace isc { namespace dhcp {
-#line 184 "dhcp6_parser.h"
+#line 162 "dhcp6_parser.h" // lalr1.cc:404
+
+  /// A stack with random access from its top.
+  template <typename T, typename S = std::vector<T> >
+  class stack
+  {
+  public:
+    // Hide our reversed order.
+    typedef typename S::reverse_iterator iterator;
+    typedef typename S::const_reverse_iterator const_iterator;
+    typedef typename S::size_type size_type;
 
+    stack (size_type n = 200)
+      : seq_ (n)
+    {}
+
+    /// Random access.
+    ///
+    /// Index 0 returns the topmost element.
+    T&
+    operator[] (size_type i)
+    {
+      return seq_[size () - 1 - i];
+    }
 
+    /// Random access.
+    ///
+    /// Index 0 returns the topmost element.
+    T&
+    operator[] (int i)
+    {
+      return operator[] (size_type (i));
+    }
 
+    /// Random access.
+    ///
+    /// Index 0 returns the topmost element.
+    const T&
+    operator[] (size_type i) const
+    {
+      return seq_[size () - 1 - i];
+    }
 
-  /// A Bison parser.
-  class Dhcp6Parser
+    /// Random access.
+    ///
+    /// Index 0 returns the topmost element.
+    const T&
+    operator[] (int i) const
+    {
+      return operator[] (size_type (i));
+    }
+
+    /// Steal the contents of \a t.
+    ///
+    /// Close to move-semantics.
+    void
+    push (YY_MOVE_REF (T) t)
+    {
+      seq_.push_back (T ());
+      operator[](0).move (t);
+    }
+
+    void
+    pop (int n = 1)
+    {
+      for (; 0 < n; --n)
+        seq_.pop_back ();
+    }
+
+    void
+    clear ()
+    {
+      seq_.clear ();
+    }
+
+    size_type
+    size () const
+    {
+      return seq_.size ();
+    }
+
+    const_iterator
+    begin () const
+    {
+      return seq_.rbegin ();
+    }
+
+    const_iterator
+    end () const
+    {
+      return seq_.rend ();
+    }
+
+  private:
+    stack (const stack&);
+    stack& operator= (const stack&);
+    /// The wrapped container.
+    S seq_;
+  };
+
+  /// Present a slice of the top of a stack.
+  template <typename T, typename S = stack<T> >
+  class slice
   {
   public:
-#ifndef PARSER6_STYPE
-  /// A buffer to store and retrieve objects.
+    slice (const S& stack, int range)
+      : stack_ (stack)
+      , range_ (range)
+    {}
+
+    const T&
+    operator[] (int i) const
+    {
+      return stack_[range_ - i];
+    }
+
+  private:
+    const S& stack_;
+    int range_;
+  };
+
+
+
+  /// A char[S] buffer to store and retrieve objects.
   ///
   /// Sort of a variant, but does not keep track of the nature
   /// of the stored data, since that knowledge is available
-  /// via the current parser state.
-  class semantic_type
+  /// via the current state.
+  template <size_t S>
+  struct variant
   {
-  public:
     /// Type of *this.
-    typedef semantic_type self_type;
+    typedef variant<S> self_type;
 
     /// Empty construction.
-    semantic_type () YY_NOEXCEPT
+    variant ()
       : yybuffer_ ()
       , yytypeid_ (YY_NULLPTR)
     {}
 
     /// Construct and fill.
     template <typename T>
-    semantic_type (YY_RVREF (T) t)
+    variant (YY_RVREF (T) t)
       : yytypeid_ (&typeid (T))
     {
-      YYASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= S);
       new (yyas_<T> ()) T (YY_MOVE (t));
     }
 
     /// Destruction, allowed only if empty.
-    ~semantic_type () YY_NOEXCEPT
+    ~variant ()
     {
       YYASSERT (!yytypeid_);
     }
 
-# if 201103L <= YY_CPLUSPLUS
-    /// Instantiate a \a T in here from \a t.
-    template <typename T, typename... U>
-    T&
-    emplace (U&&... u)
-    {
-      YYASSERT (!yytypeid_);
-      YYASSERT (sizeof (T) <= size);
-      yytypeid_ = & typeid (T);
-      return *new (yyas_<T> ()) T (std::forward <U>(u)...);
-    }
-# else
     /// Instantiate an empty \a T in here.
     template <typename T>
     T&
     emplace ()
     {
       YYASSERT (!yytypeid_);
-      YYASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= S);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T ();
     }
 
+# if defined __cplusplus && 201103L <= __cplusplus
+    /// Instantiate a \a T in here from \a t.
+    template <typename T, typename U>
+    T&
+    emplace (U&& u)
+    {
+      YYASSERT (!yytypeid_);
+      YYASSERT (sizeof (T) <= S);
+      yytypeid_ = & typeid (T);
+      return *new (yyas_<T> ()) T (std::forward <U>(u));
+    }
+# else
     /// Instantiate a \a T in here from \a t.
     template <typename T>
     T&
     emplace (const T& t)
     {
       YYASSERT (!yytypeid_);
-      YYASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= S);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (t);
     }
@@ -278,75 +369,75 @@ namespace isc { namespace dhcp {
     /// Accessor to a built \a T.
     template <typename T>
     T&
-    as () YY_NOEXCEPT
+    as ()
     {
       YYASSERT (yytypeid_);
       YYASSERT (*yytypeid_ == typeid (T));
-      YYASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= S);
       return *yyas_<T> ();
     }
 
     /// Const accessor to a built \a T (for %printer).
     template <typename T>
     const T&
-    as () const YY_NOEXCEPT
+    as () const
     {
       YYASSERT (yytypeid_);
       YYASSERT (*yytypeid_ == typeid (T));
-      YYASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= S);
       return *yyas_<T> ();
     }
 
-    /// Swap the content with \a that, of same type.
+    /// Swap the content with \a other, of same type.
     ///
     /// Both variants must be built beforehand, because swapping the actual
     /// data requires reading it (with as()), and this is not possible on
     /// unconstructed variants: it would require some dynamic testing, which
     /// should not be the variant's responsibility.
     /// Swapping between built and (possibly) non-built is done with
-    /// self_type::move ().
+    /// variant::move ().
     template <typename T>
     void
-    swap (self_type& that) YY_NOEXCEPT
+    swap (self_type& other)
     {
       YYASSERT (yytypeid_);
-      YYASSERT (*yytypeid_ == *that.yytypeid_);
-      std::swap (as<T> (), that.as<T> ());
+      YYASSERT (*yytypeid_ == *other.yytypeid_);
+      std::swap (as<T> (), other.as<T> ());
     }
 
-    /// Move the content of \a that to this.
+    /// Move the content of \a other to this.
     ///
-    /// Destroys \a that.
+    /// Destroys \a other.
     template <typename T>
     void
-    move (self_type& that)
+    move (self_type& other)
     {
-# if 201103L <= YY_CPLUSPLUS
-      emplace<T> (std::move (that.as<T> ()));
+# if defined __cplusplus && 201103L <= __cplusplus
+      emplace<T> (std::move (other.as<T> ()));
 # else
       emplace<T> ();
-      swap<T> (that);
+      swap<T> (other);
 # endif
-      that.destroy<T> ();
+      other.destroy<T> ();
     }
 
-# if 201103L <= YY_CPLUSPLUS
-    /// Move the content of \a that to this.
+# if defined __cplusplus && 201103L <= __cplusplus
+    /// Move the content of \a other to this.
     template <typename T>
     void
-    move (self_type&& that)
+    move (self_type&& other)
     {
-      emplace<T> (std::move (that.as<T> ()));
-      that.destroy<T> ();
+      emplace<T> (std::move (other.as<T> ()));
+      other.destroy<T> ();
     }
 #endif
 
-    /// Copy the content of \a that to this.
+    /// Copy the content of \a other to this.
     template <typename T>
     void
-    copy (const self_type& that)
+    copy (const self_type& other)
     {
-      emplace<T> (that.as<T> ());
+      emplace<T> (other.as<T> ());
     }
 
     /// Destroy the stored \a T.
@@ -361,12 +452,12 @@ namespace isc { namespace dhcp {
   private:
     /// Prohibit blind copies.
     self_type& operator= (const self_type&);
-    semantic_type (const self_type&);
+    variant (const self_type&);
 
     /// Accessor to raw memory as \a T.
     template <typename T>
     T*
-    yyas_ () YY_NOEXCEPT
+    yyas_ ()
     {
       void *yyp = yybuffer_.yyraw;
       return static_cast<T*> (yyp);
@@ -375,12 +466,30 @@ namespace isc { namespace dhcp {
     /// Const accessor to raw memory as \a T.
     template <typename T>
     const T*
-    yyas_ () const YY_NOEXCEPT
+    yyas_ () const
     {
       const void *yyp = yybuffer_.yyraw;
       return static_cast<const T*> (yyp);
      }
 
+    union
+    {
+      /// Strongest alignment constraints.
+      long double yyalign_me;
+      /// A buffer large enough to store any of the semantic values.
+      char yyraw[S];
+    } yybuffer_;
+
+    /// Whether the content is built: if defined, the name of the stored type.
+    const std::type_info *yytypeid_;
+  };
+
+
+  /// A Bison parser.
+  class Dhcp6Parser
+  {
+  public:
+#ifndef PARSER6_STYPE
     /// An auxiliary type to compute the largest semantic type.
     union union_type
     {
@@ -404,24 +513,10 @@ namespace isc { namespace dhcp {
 
       // "constant string"
       char dummy5[sizeof (std::string)];
-    };
-
-    /// The size of the largest semantic type.
-    enum { size = sizeof (union_type) };
-
-    /// A buffer to store semantic values.
-    union
-    {
-      /// Strongest alignment constraints.
-      long double yyalign_me;
-      /// A buffer large enough to store any of the semantic values.
-      char yyraw[size];
-    } yybuffer_;
-
-    /// Whether the content is built: if defined, the name of the stored type.
-    const std::type_info *yytypeid_;
-  };
+};
 
+    /// Symbol semantic values.
+    typedef variant<sizeof (union_type)> semantic_type;
 #else
     typedef PARSER6_STYPE semantic_type;
 #endif
@@ -431,18 +526,7 @@ namespace isc { namespace dhcp {
     /// Syntax errors thrown from user actions.
     struct syntax_error : std::runtime_error
     {
-      syntax_error (const location_type& l, const std::string& m)
-        : std::runtime_error (m)
-        , location (l)
-      {}
-
-      syntax_error (const syntax_error& s)
-        : std::runtime_error (s.what ())
-        , location (s.location)
-      {}
-
-      ~syntax_error () YY_NOEXCEPT YY_NOTHROW;
-
+      syntax_error (const location_type& l, const std::string& m);
       location_type location;
     };
 
@@ -612,28 +696,29 @@ namespace isc { namespace dhcp {
         TOKEN_FLUSH = 415,
         TOKEN_MAXSIZE = 416,
         TOKEN_MAXVER = 417,
-        TOKEN_DHCP4 = 418,
-        TOKEN_DHCPDDNS = 419,
-        TOKEN_CONTROL_AGENT = 420,
-        TOKEN_TOPLEVEL_JSON = 421,
-        TOKEN_TOPLEVEL_DHCP6 = 422,
-        TOKEN_SUB_DHCP6 = 423,
-        TOKEN_SUB_INTERFACES6 = 424,
-        TOKEN_SUB_SUBNET6 = 425,
-        TOKEN_SUB_POOL6 = 426,
-        TOKEN_SUB_PD_POOL = 427,
-        TOKEN_SUB_RESERVATION = 428,
-        TOKEN_SUB_OPTION_DEFS = 429,
-        TOKEN_SUB_OPTION_DEF = 430,
-        TOKEN_SUB_OPTION_DATA = 431,
-        TOKEN_SUB_HOOKS_LIBRARY = 432,
-        TOKEN_SUB_DHCP_DDNS = 433,
-        TOKEN_SUB_LOGGING = 434,
-        TOKEN_SUB_CONFIG_CONTROL = 435,
-        TOKEN_STRING = 436,
-        TOKEN_INTEGER = 437,
-        TOKEN_FLOAT = 438,
-        TOKEN_BOOLEAN = 439
+        TOKEN_PATTERN = 418,
+        TOKEN_DHCP4 = 419,
+        TOKEN_DHCPDDNS = 420,
+        TOKEN_CONTROL_AGENT = 421,
+        TOKEN_TOPLEVEL_JSON = 422,
+        TOKEN_TOPLEVEL_DHCP6 = 423,
+        TOKEN_SUB_DHCP6 = 424,
+        TOKEN_SUB_INTERFACES6 = 425,
+        TOKEN_SUB_SUBNET6 = 426,
+        TOKEN_SUB_POOL6 = 427,
+        TOKEN_SUB_PD_POOL = 428,
+        TOKEN_SUB_RESERVATION = 429,
+        TOKEN_SUB_OPTION_DEFS = 430,
+        TOKEN_SUB_OPTION_DEF = 431,
+        TOKEN_SUB_OPTION_DATA = 432,
+        TOKEN_SUB_HOOKS_LIBRARY = 433,
+        TOKEN_SUB_DHCP_DDNS = 434,
+        TOKEN_SUB_LOGGING = 435,
+        TOKEN_SUB_CONFIG_CONTROL = 436,
+        TOKEN_STRING = 437,
+        TOKEN_INTEGER = 438,
+        TOKEN_FLOAT = 439,
+        TOKEN_BOOLEAN = 440
       };
     };
 
@@ -662,154 +747,29 @@ namespace isc { namespace dhcp {
       typedef Base super_type;
 
       /// Default constructor.
-      basic_symbol ()
-        : value ()
-        , location ()
-      {}
-
-#if 201103L <= YY_CPLUSPLUS
-      /// Move constructor.
-      basic_symbol (basic_symbol&& that);
-#endif
+      basic_symbol ();
+
+      /// Move or copy constructor.
+      basic_symbol (YY_RVREF (basic_symbol) other);
 
-      /// Copy constructor.
-      basic_symbol (const basic_symbol& that);
 
       /// Constructor for valueless symbols, and symbols from each type.
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, location_type&& l)
-        : Base (t)
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const location_type& l)
-        : Base (t)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
+      basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l);
+      basic_symbol (typename Base::kind_type t, YY_RVREF (ElementPtr) v, YY_RVREF (location_type) l);
+      basic_symbol (typename Base::kind_type t, YY_RVREF (bool) v, YY_RVREF (location_type) l);
+      basic_symbol (typename Base::kind_type t, YY_RVREF (double) v, YY_RVREF (location_type) l);
+      basic_symbol (typename Base::kind_type t, YY_RVREF (int64_t) v, YY_RVREF (location_type) l);
+      basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l);
+
 
       /// Destroy the symbol.
-      ~basic_symbol ()
-      {
-        clear ();
-      }
+      ~basic_symbol ();
 
       /// Destroy contents, and record that is empty.
-      void clear ()
-      {
-        // User destructor.
-        symbol_number_type yytype = this->type_get ();
-        basic_symbol<Base>& yysym = *this;
-        (void) yysym;
-        switch (yytype)
-        {
-       default:
-          break;
-        }
-
-        // Type destructor.
-switch (yytype)
-    {
-      case 202: // value
-      case 206: // map_value
-      case 267: // db_type
-      case 360: // hr_mode
-      case 496: // duid_type
-      case 531: // ncr_protocol_value
-      case 538: // replace_client_name_value
-        value.template destroy< ElementPtr > ();
-        break;
-
-      case 184: // "boolean"
-        value.template destroy< bool > ();
-        break;
-
-      case 183: // "floating point"
-        value.template destroy< double > ();
-        break;
-
-      case 182: // "integer"
-        value.template destroy< int64_t > ();
-        break;
-
-      case 181: // "constant string"
-        value.template destroy< std::string > ();
-        break;
-
-      default:
-        break;
-    }
-
-        Base::clear ();
-      }
+      void clear ();
 
       /// Whether empty.
-      bool empty () const YY_NOEXCEPT;
+      bool empty () const;
 
       /// Destructive move, \a s is emptied into this.
       void move (basic_symbol& s);
@@ -821,9 +781,9 @@ switch (yytype)
       location_type location;
 
     private:
-#if YY_CPLUSPLUS < 201103L
+#if !defined __cplusplus || __cplusplus < 201103L
       /// Assignment operator.
-      basic_symbol& operator= (const basic_symbol& that);
+      basic_symbol& operator= (const basic_symbol& other);
 #endif
     };
 
@@ -833,13 +793,8 @@ switch (yytype)
       /// Default constructor.
       by_type ();
 
-#if 201103L <= YY_CPLUSPLUS
-      /// Move constructor.
-      by_type (by_type&& that);
-#endif
-
       /// Copy constructor.
-      by_type (const by_type& that);
+      by_type (const by_type& other);
 
       /// The symbol type as needed by the constructor.
       typedef token_type kind_type;
@@ -855,10 +810,10 @@ switch (yytype)
 
       /// The (internal) type number (corresponding to \a type).
       /// \a empty when empty.
-      symbol_number_type type_get () const YY_NOEXCEPT;
+      symbol_number_type type_get () const;
 
       /// The token.
-      token_type token () const YY_NOEXCEPT;
+      token_type token () const;
 
       /// The symbol type.
       /// \a empty_symbol when empty.
@@ -867,81 +822,7 @@ switch (yytype)
     };
 
     /// "External" symbols: returned by the scanner.
-    struct symbol_type : basic_symbol<by_type>
-    {
-      /// Superclass.
-      typedef basic_symbol<by_type> super_type;
-
-      /// Empty symbol.
-      symbol_type () {}
-
-      /// Constructor for valueless symbols, and symbols from each type.
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, location_type l)
-        : super_type(token_type (tok), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
-      }
-#else
-      symbol_type (int tok, const location_type& l)
-        : super_type(token_type (tok), l)
-      {
-        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, bool v, location_type l)
-        : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_BOOLEAN);
-      }
-#else
-      symbol_type (int tok, const bool& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YYASSERT (tok == token::TOKEN_BOOLEAN);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, double v, location_type l)
-        : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_FLOAT);
-      }
-#else
-      symbol_type (int tok, const double& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YYASSERT (tok == token::TOKEN_FLOAT);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, int64_t v, location_type l)
-        : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_INTEGER);
-      }
-#else
-      symbol_type (int tok, const int64_t& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YYASSERT (tok == token::TOKEN_INTEGER);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, std::string v, location_type l)
-        : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_STRING);
-      }
-#else
-      symbol_type (int tok, const std::string& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YYASSERT (tok == token::TOKEN_STRING);
-      }
-#endif
-    };
+    typedef basic_symbol<by_type> symbol_type;
 
     /// Build a parser object.
     Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg);
@@ -977,3354 +858,2570 @@ switch (yytype)
     /// Report a syntax error.
     void error (const syntax_error& err);
 
-    // Implementation of make_symbol for each symbol type.
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_END (location_type l)
-      {
-        return symbol_type (token::TOKEN_END, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_END (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_END, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_COMMA (location_type l)
-      {
-        return symbol_type (token::TOKEN_COMMA, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_COMMA (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_COMMA, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_COLON (location_type l)
-      {
-        return symbol_type (token::TOKEN_COLON, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_COLON (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_COLON, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LSQUARE_BRACKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LSQUARE_BRACKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RSQUARE_BRACKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RSQUARE_BRACKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LCURLY_BRACKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LCURLY_BRACKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RCURLY_BRACKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RCURLY_BRACKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NULL_TYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_NULL_TYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NULL_TYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NULL_TYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DATA_DIRECTORY (location_type l)
-      {
-        return symbol_type (token::TOKEN_DATA_DIRECTORY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DATA_DIRECTORY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DATA_DIRECTORY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONFIG_CONTROL (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_CONTROL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONFIG_CONTROL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONFIG_DATABASES (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_DATABASES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONFIG_DATABASES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONFIG_FETCH_WAIT_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONFIG_FETCH_WAIT_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTERFACES_CONFIG (location_type l)
-      {
-        return symbol_type (token::TOKEN_INTERFACES_CONFIG, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTERFACES_CONFIG (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTERFACES_CONFIG, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTERFACES (location_type l)
-      {
-        return symbol_type (token::TOKEN_INTERFACES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTERFACES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTERFACES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RE_DETECT (location_type l)
-      {
-        return symbol_type (token::TOKEN_RE_DETECT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RE_DETECT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RE_DETECT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LEASE_DATABASE (location_type l)
-      {
-        return symbol_type (token::TOKEN_LEASE_DATABASE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LEASE_DATABASE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LEASE_DATABASE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTS_DATABASE (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTS_DATABASE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTS_DATABASE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTS_DATABASE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTS_DATABASES (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTS_DATABASES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTS_DATABASES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTS_DATABASES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_TYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MEMFILE (location_type l)
-      {
-        return symbol_type (token::TOKEN_MEMFILE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MEMFILE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MEMFILE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MYSQL (location_type l)
-      {
-        return symbol_type (token::TOKEN_MYSQL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MYSQL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MYSQL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_POSTGRESQL (location_type l)
-      {
-        return symbol_type (token::TOKEN_POSTGRESQL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_POSTGRESQL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_POSTGRESQL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CQL (location_type l)
-      {
-        return symbol_type (token::TOKEN_CQL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CQL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CQL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_USER (location_type l)
-      {
-        return symbol_type (token::TOKEN_USER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_USER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_USER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PASSWORD (location_type l)
-      {
-        return symbol_type (token::TOKEN_PASSWORD, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PASSWORD (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PASSWORD, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOST (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOST, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOST (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOST, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PORT (location_type l)
-      {
-        return symbol_type (token::TOKEN_PORT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PORT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PORT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PERSIST (location_type l)
-      {
-        return symbol_type (token::TOKEN_PERSIST, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PERSIST (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PERSIST, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LFC_INTERVAL (location_type l)
-      {
-        return symbol_type (token::TOKEN_LFC_INTERVAL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LFC_INTERVAL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LFC_INTERVAL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_READONLY (location_type l)
-      {
-        return symbol_type (token::TOKEN_READONLY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_READONLY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_READONLY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONNECT_TIMEOUT (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONNECT_TIMEOUT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONNECT_TIMEOUT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONTACT_POINTS (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONTACT_POINTS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONTACT_POINTS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONTACT_POINTS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_RECONNECT_TRIES (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_RECONNECT_TRIES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RECONNECT_WAIT_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RECONNECT_WAIT_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_KEYSPACE (location_type l)
-      {
-        return symbol_type (token::TOKEN_KEYSPACE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_KEYSPACE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_KEYSPACE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONSISTENCY (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONSISTENCY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONSISTENCY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONSISTENCY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERIAL_CONSISTENCY (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERIAL_CONSISTENCY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_REQUEST_TIMEOUT (location_type l)
-      {
-        return symbol_type (token::TOKEN_REQUEST_TIMEOUT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_REQUEST_TIMEOUT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TCP_KEEPALIVE (location_type l)
-      {
-        return symbol_type (token::TOKEN_TCP_KEEPALIVE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TCP_KEEPALIVE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TCP_NODELAY (location_type l)
-      {
-        return symbol_type (token::TOKEN_TCP_NODELAY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TCP_NODELAY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TCP_NODELAY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PREFERRED_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_PREFERRED_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PREFERRED_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PREFERRED_LIFETIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MIN_PREFERRED_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MIN_PREFERRED_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_PREFERRED_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_PREFERRED_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_VALID_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_VALID_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_VALID_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_VALID_LIFETIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MIN_VALID_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MIN_VALID_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_VALID_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_VALID_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RENEW_TIMER (location_type l)
-      {
-        return symbol_type (token::TOKEN_RENEW_TIMER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RENEW_TIMER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RENEW_TIMER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_REBIND_TIMER (location_type l)
-      {
-        return symbol_type (token::TOKEN_REBIND_TIMER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_REBIND_TIMER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_REBIND_TIMER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CALCULATE_TEE_TIMES (location_type l)
-      {
-        return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CALCULATE_TEE_TIMES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_T1_PERCENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_T1_PERCENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_T1_PERCENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_T1_PERCENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_T2_PERCENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_T2_PERCENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_T2_PERCENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_T2_PERCENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DECLINE_PROBATION_PERIOD (location_type l)
-      {
-        return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DECLINE_PROBATION_PERIOD (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERVER_TAG (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERVER_TAG, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERVER_TAG (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERVER_TAG, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUBNET6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUBNET6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUBNET6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUBNET6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OPTION_DEF (location_type l)
-      {
-        return symbol_type (token::TOKEN_OPTION_DEF, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OPTION_DEF (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OPTION_DEF, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OPTION_DATA (location_type l)
-      {
-        return symbol_type (token::TOKEN_OPTION_DATA, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OPTION_DATA (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OPTION_DATA, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_NAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DATA (location_type l)
-      {
-        return symbol_type (token::TOKEN_DATA, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DATA (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DATA, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CODE (location_type l)
-      {
-        return symbol_type (token::TOKEN_CODE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CODE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CODE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SPACE (location_type l)
-      {
-        return symbol_type (token::TOKEN_SPACE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SPACE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SPACE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CSV_FORMAT (location_type l)
-      {
-        return symbol_type (token::TOKEN_CSV_FORMAT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CSV_FORMAT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CSV_FORMAT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ALWAYS_SEND (location_type l)
-      {
-        return symbol_type (token::TOKEN_ALWAYS_SEND, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ALWAYS_SEND (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ALWAYS_SEND, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RECORD_TYPES (location_type l)
-      {
-        return symbol_type (token::TOKEN_RECORD_TYPES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RECORD_TYPES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RECORD_TYPES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ENCAPSULATE (location_type l)
-      {
-        return symbol_type (token::TOKEN_ENCAPSULATE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ENCAPSULATE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ENCAPSULATE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ARRAY (location_type l)
-      {
-        return symbol_type (token::TOKEN_ARRAY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ARRAY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ARRAY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_POOLS (location_type l)
-      {
-        return symbol_type (token::TOKEN_POOLS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_POOLS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_POOLS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_POOL (location_type l)
-      {
-        return symbol_type (token::TOKEN_POOL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_POOL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_POOL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PD_POOLS (location_type l)
-      {
-        return symbol_type (token::TOKEN_PD_POOLS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PD_POOLS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PD_POOLS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PREFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_PREFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PREFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PREFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PREFIX_LEN (location_type l)
-      {
-        return symbol_type (token::TOKEN_PREFIX_LEN, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PREFIX_LEN (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PREFIX_LEN, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_EXCLUDED_PREFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_EXCLUDED_PREFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_EXCLUDED_PREFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_EXCLUDED_PREFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_EXCLUDED_PREFIX_LEN (location_type l)
-      {
-        return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_EXCLUDED_PREFIX_LEN (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DELEGATED_LEN (location_type l)
-      {
-        return symbol_type (token::TOKEN_DELEGATED_LEN, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DELEGATED_LEN (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DELEGATED_LEN, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_USER_CONTEXT (location_type l)
-      {
-        return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_USER_CONTEXT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_USER_CONTEXT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_COMMENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_COMMENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_COMMENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_COMMENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUBNET (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUBNET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUBNET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUBNET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTERFACE (location_type l)
-      {
-        return symbol_type (token::TOKEN_INTERFACE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTERFACE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTERFACE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTERFACE_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_INTERFACE_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTERFACE_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTERFACE_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RAPID_COMMIT (location_type l)
-      {
-        return symbol_type (token::TOKEN_RAPID_COMMIT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RAPID_COMMIT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RAPID_COMMIT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RESERVATION_MODE (location_type l)
-      {
-        return symbol_type (token::TOKEN_RESERVATION_MODE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RESERVATION_MODE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RESERVATION_MODE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DISABLED (location_type l)
-      {
-        return symbol_type (token::TOKEN_DISABLED, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DISABLED (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DISABLED, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OUT_OF_POOL (location_type l)
-      {
-        return symbol_type (token::TOKEN_OUT_OF_POOL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OUT_OF_POOL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OUT_OF_POOL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_GLOBAL (location_type l)
-      {
-        return symbol_type (token::TOKEN_GLOBAL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_GLOBAL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_GLOBAL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ALL (location_type l)
-      {
-        return symbol_type (token::TOKEN_ALL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ALL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ALL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SHARED_NETWORKS (location_type l)
-      {
-        return symbol_type (token::TOKEN_SHARED_NETWORKS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SHARED_NETWORKS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAC_SOURCES (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAC_SOURCES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAC_SOURCES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAC_SOURCES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RELAY_SUPPLIED_OPTIONS (location_type l)
-      {
-        return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RELAY_SUPPLIED_OPTIONS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOST_RESERVATION_IDENTIFIERS (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SANITY_CHECKS (location_type l)
-      {
-        return symbol_type (token::TOKEN_SANITY_CHECKS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SANITY_CHECKS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SANITY_CHECKS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LEASE_CHECKS (location_type l)
-      {
-        return symbol_type (token::TOKEN_LEASE_CHECKS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LEASE_CHECKS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LEASE_CHECKS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CLIENT_CLASSES (location_type l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_CLASSES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CLIENT_CLASSES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_REQUIRE_CLIENT_CLASSES (location_type l)
-      {
-        return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_REQUIRE_CLIENT_CLASSES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TEST (location_type l)
-      {
-        return symbol_type (token::TOKEN_TEST, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TEST (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TEST, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ONLY_IF_REQUIRED (location_type l)
-      {
-        return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ONLY_IF_REQUIRED (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CLIENT_CLASS (location_type l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_CLASS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CLIENT_CLASS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_CLASS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RESERVATIONS (location_type l)
-      {
-        return symbol_type (token::TOKEN_RESERVATIONS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RESERVATIONS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RESERVATIONS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_IP_ADDRESSES (location_type l)
-      {
-        return symbol_type (token::TOKEN_IP_ADDRESSES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_IP_ADDRESSES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_IP_ADDRESSES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PREFIXES (location_type l)
-      {
-        return symbol_type (token::TOKEN_PREFIXES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PREFIXES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PREFIXES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DUID (location_type l)
-      {
-        return symbol_type (token::TOKEN_DUID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DUID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DUID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HW_ADDRESS (location_type l)
-      {
-        return symbol_type (token::TOKEN_HW_ADDRESS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HW_ADDRESS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HW_ADDRESS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTNAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTNAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_FLEX_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_FLEX_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_FLEX_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_FLEX_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RELAY (location_type l)
-      {
-        return symbol_type (token::TOKEN_RELAY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RELAY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RELAY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_IP_ADDRESS (location_type l)
-      {
-        return symbol_type (token::TOKEN_IP_ADDRESS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_IP_ADDRESS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_IP_ADDRESS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOOKS_LIBRARIES (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOOKS_LIBRARIES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LIBRARY (location_type l)
-      {
-        return symbol_type (token::TOKEN_LIBRARY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LIBRARY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LIBRARY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PARAMETERS (location_type l)
-      {
-        return symbol_type (token::TOKEN_PARAMETERS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PARAMETERS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PARAMETERS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_EXPIRED_LEASES_PROCESSING (location_type l)
-      {
-        return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_EXPIRED_LEASES_PROCESSING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RECLAIM_TIMER_WAIT_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RECLAIM_TIMER_WAIT_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOLD_RECLAIMED_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOLD_RECLAIMED_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_RECLAIM_LEASES (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_RECLAIM_LEASES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_RECLAIM_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_RECLAIM_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_UNWARNED_RECLAIM_CYCLES (location_type l)
-      {
-        return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_UNWARNED_RECLAIM_CYCLES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERVER_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERVER_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERVER_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERVER_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LLT (location_type l)
-      {
-        return symbol_type (token::TOKEN_LLT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LLT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LLT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_EN (location_type l)
-      {
-        return symbol_type (token::TOKEN_EN, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_EN (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_EN, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LL (location_type l)
-      {
-        return symbol_type (token::TOKEN_LL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_IDENTIFIER (location_type l)
-      {
-        return symbol_type (token::TOKEN_IDENTIFIER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_IDENTIFIER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_IDENTIFIER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HTYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_HTYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HTYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HTYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ENTERPRISE_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_ENTERPRISE_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ENTERPRISE_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ENTERPRISE_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP4O6_PORT (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP4O6_PORT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP4O6_PORT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP4O6_PORT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONTROL_SOCKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_SOCKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONTROL_SOCKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SOCKET_TYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SOCKET_TYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SOCKET_TYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SOCKET_NAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SOCKET_NAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SOCKET_NAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP_QUEUE_CONTROL (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP_QUEUE_CONTROL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP_DDNS (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP_DDNS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP_DDNS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP_DDNS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ENABLE_UPDATES (location_type l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_UPDATES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ENABLE_UPDATES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_UPDATES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_QUALIFYING_SUFFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_QUALIFYING_SUFFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERVER_IP (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERVER_IP, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERVER_IP (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERVER_IP, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERVER_PORT (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERVER_PORT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERVER_PORT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERVER_PORT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SENDER_IP (location_type l)
-      {
-        return symbol_type (token::TOKEN_SENDER_IP, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SENDER_IP (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SENDER_IP, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SENDER_PORT (location_type l)
-      {
-        return symbol_type (token::TOKEN_SENDER_PORT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SENDER_PORT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SENDER_PORT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_QUEUE_SIZE (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_QUEUE_SIZE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NCR_PROTOCOL (location_type l)
-      {
-        return symbol_type (token::TOKEN_NCR_PROTOCOL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NCR_PROTOCOL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NCR_PROTOCOL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NCR_FORMAT (location_type l)
-      {
-        return symbol_type (token::TOKEN_NCR_FORMAT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NCR_FORMAT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NCR_FORMAT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OVERRIDE_NO_UPDATE (location_type l)
-      {
-        return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OVERRIDE_NO_UPDATE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OVERRIDE_CLIENT_UPDATE (location_type l)
-      {
-        return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OVERRIDE_CLIENT_UPDATE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_REPLACE_CLIENT_NAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_REPLACE_CLIENT_NAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_GENERATED_PREFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_GENERATED_PREFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_GENERATED_PREFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_GENERATED_PREFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_UDP (location_type l)
-      {
-        return symbol_type (token::TOKEN_UDP, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_UDP (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_UDP, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TCP (location_type l)
-      {
-        return symbol_type (token::TOKEN_TCP, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TCP (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TCP, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_JSON (location_type l)
-      {
-        return symbol_type (token::TOKEN_JSON, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_JSON (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_JSON, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_WHEN_PRESENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_WHEN_PRESENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_WHEN_PRESENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_WHEN_PRESENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NEVER (location_type l)
-      {
-        return symbol_type (token::TOKEN_NEVER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NEVER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NEVER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ALWAYS (location_type l)
-      {
-        return symbol_type (token::TOKEN_ALWAYS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ALWAYS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ALWAYS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_WHEN_NOT_PRESENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_WHEN_NOT_PRESENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTNAME_CHAR_SET (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTNAME_CHAR_SET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTNAME_CHAR_REPLACEMENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LOGGING (location_type l)
-      {
-        return symbol_type (token::TOKEN_LOGGING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LOGGING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LOGGING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LOGGERS (location_type l)
-      {
-        return symbol_type (token::TOKEN_LOGGERS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LOGGERS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LOGGERS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OUTPUT_OPTIONS (location_type l)
-      {
-        return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OUTPUT_OPTIONS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OUTPUT (location_type l)
-      {
-        return symbol_type (token::TOKEN_OUTPUT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OUTPUT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OUTPUT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DEBUGLEVEL (location_type l)
-      {
-        return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DEBUGLEVEL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DEBUGLEVEL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SEVERITY (location_type l)
-      {
-        return symbol_type (token::TOKEN_SEVERITY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SEVERITY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SEVERITY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_FLUSH (location_type l)
-      {
-        return symbol_type (token::TOKEN_FLUSH, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_FLUSH (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_FLUSH, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAXSIZE (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAXSIZE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAXSIZE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAXSIZE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAXVER (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAXVER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAXVER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAXVER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP4 (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP4, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP4 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP4, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCPDDNS (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCPDDNS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCPDDNS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCPDDNS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONTROL_AGENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_AGENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONTROL_AGENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_AGENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TOPLEVEL_JSON (location_type l)
-      {
-        return symbol_type (token::TOKEN_TOPLEVEL_JSON, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TOPLEVEL_JSON (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TOPLEVEL_DHCP6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TOPLEVEL_DHCP6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_DHCP6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_DHCP6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_DHCP6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_DHCP6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_INTERFACES6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_INTERFACES6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_INTERFACES6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_INTERFACES6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_SUBNET6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_SUBNET6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_SUBNET6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_SUBNET6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_POOL6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_POOL6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_POOL6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_POOL6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_PD_POOL (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_PD_POOL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_PD_POOL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_PD_POOL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_RESERVATION (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_RESERVATION, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_RESERVATION (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_RESERVATION, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_OPTION_DEFS (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DEFS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_OPTION_DEFS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_OPTION_DEF (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DEF, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_OPTION_DEF (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_OPTION_DATA (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DATA, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_OPTION_DATA (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_HOOKS_LIBRARY (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_HOOKS_LIBRARY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_DHCP_DDNS (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_DHCP_DDNS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_DHCP_DDNS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_LOGGING (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_LOGGING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_LOGGING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_LOGGING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_CONFIG_CONTROL (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_CONFIG_CONTROL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_STRING (std::string v, location_type l)
-      {
-        return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_STRING (const std::string& v, const location_type& l)
-      {
-        return symbol_type (token::TOKEN_STRING, v, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTEGER (int64_t v, location_type l)
-      {
-        return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTEGER (const int64_t& v, const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTEGER, v, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_FLOAT (double v, location_type l)
-      {
-        return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_FLOAT (const double& v, const location_type& l)
-      {
-        return symbol_type (token::TOKEN_FLOAT, v, l);
-      }
+    // Symbol constructors declarations.
+    static
+    symbol_type
+    make_END (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_COMMA (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_COLON (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_LSQUARE_BRACKET (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_RSQUARE_BRACKET (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_LCURLY_BRACKET (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_RCURLY_BRACKET (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_NULL_TYPE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_DHCP6 (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_DATA_DIRECTORY (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CONFIG_CONTROL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CONFIG_DATABASES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CONFIG_FETCH_WAIT_TIME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_INTERFACES_CONFIG (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_INTERFACES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_RE_DETECT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_LEASE_DATABASE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_HOSTS_DATABASE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_HOSTS_DATABASES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_TYPE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_MEMFILE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_MYSQL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_POSTGRESQL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CQL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_USER (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_PASSWORD (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_HOST (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_PORT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_PERSIST (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_LFC_INTERVAL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_READONLY (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CONNECT_TIMEOUT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CONTACT_POINTS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_MAX_RECONNECT_TRIES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_RECONNECT_WAIT_TIME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_KEYSPACE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CONSISTENCY (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SERIAL_CONSISTENCY (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_REQUEST_TIMEOUT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_TCP_KEEPALIVE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_TCP_NODELAY (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_PREFERRED_LIFETIME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_MIN_PREFERRED_LIFETIME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_MAX_PREFERRED_LIFETIME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_VALID_LIFETIME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_MIN_VALID_LIFETIME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_MAX_VALID_LIFETIME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_RENEW_TIMER (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_REBIND_TIMER (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CALCULATE_TEE_TIMES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_T1_PERCENT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_T2_PERCENT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_DECLINE_PROBATION_PERIOD (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SERVER_TAG (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUBNET6 (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_OPTION_DEF (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_OPTION_DATA (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_NAME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_DATA (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CODE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SPACE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CSV_FORMAT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_ALWAYS_SEND (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_RECORD_TYPES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_ENCAPSULATE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_ARRAY (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_POOLS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_POOL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_PD_POOLS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_PREFIX (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_PREFIX_LEN (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_EXCLUDED_PREFIX (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_EXCLUDED_PREFIX_LEN (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_DELEGATED_LEN (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_USER_CONTEXT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_COMMENT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUBNET (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_INTERFACE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_INTERFACE_ID (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_ID (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_RAPID_COMMIT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_RESERVATION_MODE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_DISABLED (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_OUT_OF_POOL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_GLOBAL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_ALL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SHARED_NETWORKS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_MAC_SOURCES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_RELAY_SUPPLIED_OPTIONS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_HOST_RESERVATION_IDENTIFIERS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SANITY_CHECKS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_LEASE_CHECKS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CLIENT_CLASSES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_REQUIRE_CLIENT_CLASSES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_TEST (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_ONLY_IF_REQUIRED (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CLIENT_CLASS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_RESERVATIONS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_IP_ADDRESSES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_PREFIXES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_DUID (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_HW_ADDRESS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_HOSTNAME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_FLEX_ID (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_RELAY (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_IP_ADDRESS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_HOOKS_LIBRARIES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_LIBRARY (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_PARAMETERS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_EXPIRED_LEASES_PROCESSING (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_RECLAIM_TIMER_WAIT_TIME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_HOLD_RECLAIMED_TIME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_MAX_RECLAIM_LEASES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_MAX_RECLAIM_TIME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_UNWARNED_RECLAIM_CYCLES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SERVER_ID (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_LLT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_EN (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_LL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_IDENTIFIER (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_HTYPE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_TIME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_ENTERPRISE_ID (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_DHCP4O6_PORT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CONTROL_SOCKET (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SOCKET_TYPE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SOCKET_NAME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_DHCP_QUEUE_CONTROL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_DHCP_DDNS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_ENABLE_UPDATES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_QUALIFYING_SUFFIX (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SERVER_IP (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SERVER_PORT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SENDER_IP (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SENDER_PORT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_MAX_QUEUE_SIZE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_NCR_PROTOCOL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_NCR_FORMAT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_OVERRIDE_NO_UPDATE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_OVERRIDE_CLIENT_UPDATE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_REPLACE_CLIENT_NAME (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_GENERATED_PREFIX (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_UDP (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_TCP (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_JSON (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_WHEN_PRESENT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_NEVER (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_ALWAYS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_WHEN_NOT_PRESENT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_HOSTNAME_CHAR_SET (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_HOSTNAME_CHAR_REPLACEMENT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_LOGGING (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_LOGGERS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_OUTPUT_OPTIONS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_OUTPUT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_DEBUGLEVEL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SEVERITY (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_FLUSH (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_MAXSIZE (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_MAXVER (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_PATTERN (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_DHCP4 (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_DHCPDDNS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_CONTROL_AGENT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_TOPLEVEL_JSON (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_TOPLEVEL_DHCP6 (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUB_DHCP6 (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUB_INTERFACES6 (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUB_SUBNET6 (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUB_POOL6 (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUB_PD_POOL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUB_RESERVATION (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUB_OPTION_DEFS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUB_OPTION_DEF (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUB_OPTION_DATA (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUB_HOOKS_LIBRARY (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUB_DHCP_DDNS (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUB_LOGGING (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_SUB_CONFIG_CONTROL (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l);
+
+
+
+  private:
+    /// This class is not copyable.
+    Dhcp6Parser (const Dhcp6Parser&);
+    Dhcp6Parser& operator= (const Dhcp6Parser&);
+
+    /// State numbers.
+    typedef int state_type;
+
+    /// Generate an error message.
+    /// \param yystate   the state where the error occurred.
+    /// \param yyla      the lookahead token.
+    virtual std::string yysyntax_error_ (state_type yystate,
+                                         const symbol_type& yyla) const;
+
+    /// Compute post-reduction state.
+    /// \param yystate   the current state
+    /// \param yysym     the nonterminal to push on the stack
+    state_type yy_lr_goto_state_ (state_type yystate, int yysym);
+
+    /// Whether the given \c yypact_ value indicates a defaulted state.
+    /// \param yyvalue   the value to check
+    static bool yy_pact_value_is_default_ (int yyvalue);
+
+    /// Whether the given \c yytable_ value indicates a syntax error.
+    /// \param yyvalue   the value to check
+    static bool yy_table_value_is_error_ (int yyvalue);
+
+    static const short yypact_ninf_;
+    static const signed char yytable_ninf_;
+
+    /// Convert a scanner token number \a t to a symbol number.
+    static token_number_type yytranslate_ (token_type t);
+
+    // Tables.
+  // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+  // STATE-NUM.
+  static const short yypact_[];
+
+  // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+  // Performed when YYTABLE does not specify something else to do.  Zero
+  // means the default is an error.
+  static const unsigned short yydefact_[];
+
+  // YYPGOTO[NTERM-NUM].
+  static const short yypgoto_[];
+
+  // YYDEFGOTO[NTERM-NUM].
+  static const short yydefgoto_[];
+
+  // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+  // positive, shift that token.  If negative, reduce the rule whose
+  // number is the opposite.  If YYTABLE_NINF, syntax error.
+  static const unsigned short yytable_[];
+
+  static const short yycheck_[];
+
+  // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+  // symbol of state STATE-NUM.
+  static const unsigned short yystos_[];
+
+  // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
+  static const unsigned short yyr1_[];
+
+  // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
+  static const unsigned char yyr2_[];
+
+
+    /// Convert the symbol name \a n to a form suitable for a diagnostic.
+    static std::string yytnamerr_ (const char *n);
+
+
+    /// For a symbol, its name in clear.
+    static const char* const yytname_[];
+#if PARSER6_DEBUG
+  // YYRLINE[YYN] -- Source line where rule number YYN was defined.
+  static const unsigned short yyrline_[];
+    /// Report on the debug stream that the rule \a r is going to be reduced.
+    virtual void yy_reduce_print_ (int r);
+    /// Print the state stack on the debug stream.
+    virtual void yystack_print_ ();
+
+    /// Debugging level.
+    int yydebug_;
+    /// Debug stream.
+    std::ostream* yycdebug_;
+
+    /// \brief Display a symbol type, value and location.
+    /// \param yyo    The output stream.
+    /// \param yysym  The symbol.
+    template <typename Base>
+    void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
 #endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_BOOLEAN (bool v, location_type l)
-      {
-        return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_BOOLEAN (const bool& v, const location_type& l)
-      {
-        return symbol_type (token::TOKEN_BOOLEAN, v, l);
-      }
+
+    /// \brief Reclaim the memory associated to a symbol.
+    /// \param yymsg     Why this token is reclaimed.
+    ///                  If null, print nothing.
+    /// \param yysym     The symbol.
+    template <typename Base>
+    void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
+
+  private:
+    /// Type access provider for state based symbols.
+    struct by_state
+    {
+      /// Default constructor.
+      by_state ();
+
+      /// The symbol type as needed by the constructor.
+      typedef state_type kind_type;
+
+      /// Constructor.
+      by_state (kind_type s);
+
+      /// Copy constructor.
+      by_state (const by_state& other);
+
+      /// Record that this symbol is empty.
+      void clear ();
+
+      /// Steal the symbol type from \a that.
+      void move (by_state& that);
+
+      /// The (internal) type number (corresponding to \a state).
+      /// \a empty_symbol when empty.
+      symbol_number_type type_get () const;
+
+      /// The state number used to denote an empty symbol.
+      enum { empty_state = -1 };
+
+      /// The state.
+      /// \a empty when empty.
+      state_type state;
+    };
+
+    /// "Internal" symbol: element of the stack.
+    struct stack_symbol_type : basic_symbol<by_state>
+    {
+      /// Superclass.
+      typedef basic_symbol<by_state> super_type;
+      /// Construct an empty symbol.
+      stack_symbol_type ();
+      /// Move or copy construction.
+      stack_symbol_type (YY_RVREF (stack_symbol_type) that);
+      /// Steal the contents from \a sym to build this.
+      stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
+#if !defined __cplusplus || __cplusplus < 201103L
+      /// Assignment, needed by push_back by some old implementations.
+      /// Moves the contents of that.
+      stack_symbol_type& operator= (stack_symbol_type& that);
 #endif
+    };
+
+    /// Stack type.
+    typedef stack<stack_symbol_type> stack_type;
+
+    /// The stack.
+    stack_type yystack_;
+
+    /// Push a new state on the stack.
+    /// \param m    a debug message to display
+    ///             if null, no trace is output.
+    /// \param sym  the symbol
+    /// \warning the contents of \a s.value is stolen.
+    void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
+
+    /// Push a new look ahead token on the state on the stack.
+    /// \param m    a debug message to display
+    ///             if null, no trace is output.
+    /// \param s    the state
+    /// \param sym  the symbol (for its value and location).
+    /// \warning the contents of \a sym.value is stolen.
+    void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
+
+    /// Pop \a n symbols from the stack.
+    void yypop_ (int n = 1);
+
+    /// Constants.
+    enum
+    {
+      yyeof_ = 0,
+      yylast_ = 1103,     ///< Last index in yytable_.
+      yynnts_ = 405,  ///< Number of nonterminal symbols.
+      yyfinal_ = 32, ///< Termination state number.
+      yyterror_ = 1,
+      yyerrcode_ = 256,
+      yyntokens_ = 186  ///< Number of tokens.
+    };
+
+
+    // User arguments.
+    isc::dhcp::Parser6Context& ctx;
+  };
+
+  // Symbol number corresponding to token number t.
+  inline
+  Dhcp6Parser::token_number_type
+  Dhcp6Parser::yytranslate_ (token_type t)
+  {
+    static
+    const token_number_type
+    translate_table[] =
+    {
+     0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185
+    };
+    const unsigned user_token_number_max_ = 440;
+    const token_number_type undef_token_ = 2;
+
+    if (static_cast<int> (t) <= yyeof_)
+      return yyeof_;
+    else if (static_cast<unsigned> (t) <= user_token_number_max_)
+      return translate_table[t];
+    else
+      return undef_token_;
+  }
+
+  inline
+  Dhcp6Parser::syntax_error::syntax_error (const location_type& l, const std::string& m)
+    : std::runtime_error (m)
+    , location (l)
+  {}
+
+  // basic_symbol.
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol ()
+    : value ()
+    , location ()
+  {}
+
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (YY_RVREF (basic_symbol) other)
+    : Base (YY_MOVE (other))
+    , value ()
+    , location (YY_MOVE (other.location))
+  {
+    switch (other.type_get ())
+    {
+      case 203: // value
+      case 207: // map_value
+      case 268: // db_type
+      case 361: // hr_mode
+      case 497: // duid_type
+      case 532: // ncr_protocol_value
+      case 539: // replace_client_name_value
+        value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (other.value));
+        break;
+
+      case 185: // "boolean"
+        value.YY_MOVE_OR_COPY< bool > (YY_MOVE (other.value));
+        break;
+
+      case 184: // "floating point"
+        value.YY_MOVE_OR_COPY< double > (YY_MOVE (other.value));
+        break;
+
+      case 183: // "integer"
+        value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (other.value));
+        break;
+
+      case 182: // "constant string"
+        value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (other.value));
+        break;
+
+      default:
+        break;
+    }
+
+  }
+
+
+  // Implementation of basic_symbol constructor for each type.
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l)
+    : Base (t)
+    , location (YY_MOVE (l))
+  {}
+
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (ElementPtr) v, YY_RVREF (location_type) l)
+    : Base (t)
+    , value (YY_MOVE (v))
+    , location (YY_MOVE (l))
+  {}
+
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (bool) v, YY_RVREF (location_type) l)
+    : Base (t)
+    , value (YY_MOVE (v))
+    , location (YY_MOVE (l))
+  {}
+
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (double) v, YY_RVREF (location_type) l)
+    : Base (t)
+    , value (YY_MOVE (v))
+    , location (YY_MOVE (l))
+  {}
+
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (int64_t) v, YY_RVREF (location_type) l)
+    : Base (t)
+    , value (YY_MOVE (v))
+    , location (YY_MOVE (l))
+  {}
+
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l)
+    : Base (t)
+    , value (YY_MOVE (v))
+    , location (YY_MOVE (l))
+  {}
+
+
+
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::~basic_symbol ()
+  {
+    clear ();
+  }
+
+  template <typename Base>
+  void
+  Dhcp6Parser::basic_symbol<Base>::clear ()
+  {
+    // User destructor.
+    symbol_number_type yytype = this->type_get ();
+    basic_symbol<Base>& yysym = *this;
+    (void) yysym;
+    switch (yytype)
+    {
+   default:
+      break;
+    }
+
+    // Type destructor.
+  switch (yytype)
+    {
+      case 203: // value
+      case 207: // map_value
+      case 268: // db_type
+      case 361: // hr_mode
+      case 497: // duid_type
+      case 532: // ncr_protocol_value
+      case 539: // replace_client_name_value
+        value.template destroy< ElementPtr > ();
+        break;
+
+      case 185: // "boolean"
+        value.template destroy< bool > ();
+        break;
+
+      case 184: // "floating point"
+        value.template destroy< double > ();
+        break;
+
+      case 183: // "integer"
+        value.template destroy< int64_t > ();
+        break;
+
+      case 182: // "constant string"
+        value.template destroy< std::string > ();
+        break;
+
+      default:
+        break;
+    }
+
+    Base::clear ();
+  }
+
+  template <typename Base>
+  bool
+  Dhcp6Parser::basic_symbol<Base>::empty () const
+  {
+    return Base::type_get () == empty_symbol;
+  }
+
+  template <typename Base>
+  void
+  Dhcp6Parser::basic_symbol<Base>::move (basic_symbol& s)
+  {
+    super_type::move (s);
+    switch (this->type_get ())
+    {
+      case 203: // value
+      case 207: // map_value
+      case 268: // db_type
+      case 361: // hr_mode
+      case 497: // duid_type
+      case 532: // ncr_protocol_value
+      case 539: // replace_client_name_value
+        value.move< ElementPtr > (YY_MOVE (s.value));
+        break;
+
+      case 185: // "boolean"
+        value.move< bool > (YY_MOVE (s.value));
+        break;
+
+      case 184: // "floating point"
+        value.move< double > (YY_MOVE (s.value));
+        break;
+
+      case 183: // "integer"
+        value.move< int64_t > (YY_MOVE (s.value));
+        break;
+
+      case 182: // "constant string"
+        value.move< std::string > (YY_MOVE (s.value));
+        break;
+
+      default:
+        break;
+    }
+
+    location = YY_MOVE (s.location);
+  }
+
+  // by_type.
+  inline
+  Dhcp6Parser::by_type::by_type ()
+    : type (empty_symbol)
+  {}
+
+  inline
+  Dhcp6Parser::by_type::by_type (const by_type& other)
+    : type (other.type)
+  {}
+
+  inline
+  Dhcp6Parser::by_type::by_type (token_type t)
+    : type (yytranslate_ (t))
+  {}
+
+  inline
+  void
+  Dhcp6Parser::by_type::clear ()
+  {
+    type = empty_symbol;
+  }
+
+  inline
+  void
+  Dhcp6Parser::by_type::move (by_type& that)
+  {
+    type = that.type;
+    that.clear ();
+  }
+
+  inline
+  int
+  Dhcp6Parser::by_type::type_get () const
+  {
+    return type;
+  }
+
+  inline
+  Dhcp6Parser::token_type
+  Dhcp6Parser::by_type::token () const
+  {
+    // YYTOKNUM[NUM] -- (External) token number corresponding to the
+    // (internal) symbol number NUM (which must be that of a token).  */
+    static
+    const unsigned short
+    yytoken_number_[] =
+    {
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
+     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
+     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
+     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
+     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
+     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
+     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
+     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
+     435,   436,   437,   438,   439,   440
+    };
+    return static_cast<token_type> (yytoken_number_[type]);
+  }
+
+  // Implementation of make_symbol for each symbol type.
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_END (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_END, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_COMMA (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_COMMA, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_COLON (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_COLON, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LSQUARE_BRACKET (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_LSQUARE_BRACKET, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RSQUARE_BRACKET (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_RSQUARE_BRACKET, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LCURLY_BRACKET (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_LCURLY_BRACKET, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RCURLY_BRACKET (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_RCURLY_BRACKET, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_NULL_TYPE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_NULL_TYPE, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCP6 (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_DHCP6, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DATA_DIRECTORY (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_DATA_DIRECTORY, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONFIG_CONTROL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CONFIG_CONTROL, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONFIG_DATABASES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CONFIG_DATABASES, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONFIG_FETCH_WAIT_TIME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_INTERFACES_CONFIG (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_INTERFACES_CONFIG, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_INTERFACES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_INTERFACES, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RE_DETECT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_RE_DETECT, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LEASE_DATABASE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_LEASE_DATABASE, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOSTS_DATABASE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_HOSTS_DATABASE, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOSTS_DATABASES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_HOSTS_DATABASES, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TYPE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_TYPE, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MEMFILE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_MEMFILE, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MYSQL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_MYSQL, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_POSTGRESQL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_POSTGRESQL, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CQL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CQL, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_USER (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_USER, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PASSWORD (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_PASSWORD, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOST (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_HOST, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PORT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_PORT, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PERSIST (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_PERSIST, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LFC_INTERVAL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_LFC_INTERVAL, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_READONLY (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_READONLY, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONNECT_TIMEOUT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CONNECT_TIMEOUT, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONTACT_POINTS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CONTACT_POINTS, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAX_RECONNECT_TRIES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RECONNECT_WAIT_TIME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_KEYSPACE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_KEYSPACE, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONSISTENCY (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CONSISTENCY, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SERIAL_CONSISTENCY (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_REQUEST_TIMEOUT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_REQUEST_TIMEOUT, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TCP_KEEPALIVE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_TCP_KEEPALIVE, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TCP_NODELAY (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_TCP_NODELAY, YY_MOVE (l));
+  }
 
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PREFERRED_LIFETIME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_PREFERRED_LIFETIME, YY_MOVE (l));
+  }
 
-  private:
-    /// This class is not copyable.
-    Dhcp6Parser (const Dhcp6Parser&);
-    Dhcp6Parser& operator= (const Dhcp6Parser&);
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MIN_PREFERRED_LIFETIME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, YY_MOVE (l));
+  }
 
-    /// State numbers.
-    typedef int state_type;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAX_PREFERRED_LIFETIME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, YY_MOVE (l));
+  }
 
-    /// Generate an error message.
-    /// \param yystate   the state where the error occurred.
-    /// \param yyla      the lookahead token.
-    virtual std::string yysyntax_error_ (state_type yystate,
-                                         const symbol_type& yyla) const;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_VALID_LIFETIME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_VALID_LIFETIME, YY_MOVE (l));
+  }
 
-    /// Compute post-reduction state.
-    /// \param yystate   the current state
-    /// \param yysym     the nonterminal to push on the stack
-    state_type yy_lr_goto_state_ (state_type yystate, int yysym);
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MIN_VALID_LIFETIME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, YY_MOVE (l));
+  }
 
-    /// Whether the given \c yypact_ value indicates a defaulted state.
-    /// \param yyvalue   the value to check
-    static bool yy_pact_value_is_default_ (int yyvalue);
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAX_VALID_LIFETIME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RENEW_TIMER (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_RENEW_TIMER, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_REBIND_TIMER (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_REBIND_TIMER, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CALCULATE_TEE_TIMES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_T1_PERCENT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_T1_PERCENT, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_T2_PERCENT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_T2_PERCENT, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DECLINE_PROBATION_PERIOD (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SERVER_TAG (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SERVER_TAG, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUBNET6 (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SUBNET6, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OPTION_DEF (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_OPTION_DEF, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OPTION_DATA (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_OPTION_DATA, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_NAME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_NAME, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DATA (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_DATA, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CODE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CODE, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SPACE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SPACE, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CSV_FORMAT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CSV_FORMAT, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ALWAYS_SEND (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_ALWAYS_SEND, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RECORD_TYPES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_RECORD_TYPES, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ENCAPSULATE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_ENCAPSULATE, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ARRAY (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_ARRAY, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_POOLS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_POOLS, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_POOL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_POOL, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PD_POOLS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_PD_POOLS, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PREFIX (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_PREFIX, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PREFIX_LEN (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_PREFIX_LEN, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_EXCLUDED_PREFIX (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_EXCLUDED_PREFIX, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_EXCLUDED_PREFIX_LEN (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DELEGATED_LEN (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_DELEGATED_LEN, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_USER_CONTEXT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_USER_CONTEXT, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_COMMENT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_COMMENT, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUBNET (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SUBNET, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_INTERFACE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_INTERFACE, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_INTERFACE_ID (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_INTERFACE_ID, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ID (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_ID, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RAPID_COMMIT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_RAPID_COMMIT, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RESERVATION_MODE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_RESERVATION_MODE, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DISABLED (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_DISABLED, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OUT_OF_POOL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_OUT_OF_POOL, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_GLOBAL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_GLOBAL, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ALL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_ALL, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SHARED_NETWORKS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SHARED_NETWORKS, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAC_SOURCES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_MAC_SOURCES, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RELAY_SUPPLIED_OPTIONS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOST_RESERVATION_IDENTIFIERS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SANITY_CHECKS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SANITY_CHECKS, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LEASE_CHECKS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_LEASE_CHECKS, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CLIENT_CLASSES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CLIENT_CLASSES, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_REQUIRE_CLIENT_CLASSES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TEST (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_TEST, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ONLY_IF_REQUIRED (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CLIENT_CLASS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CLIENT_CLASS, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RESERVATIONS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_RESERVATIONS, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_IP_ADDRESSES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_IP_ADDRESSES, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PREFIXES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_PREFIXES, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DUID (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_DUID, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HW_ADDRESS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_HW_ADDRESS, YY_MOVE (l));
+  }
 
-    /// Whether the given \c yytable_ value indicates a syntax error.
-    /// \param yyvalue   the value to check
-    static bool yy_table_value_is_error_ (int yyvalue);
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOSTNAME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_HOSTNAME, YY_MOVE (l));
+  }
 
-    static const short yypact_ninf_;
-    static const signed char yytable_ninf_;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_FLEX_ID (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_FLEX_ID, YY_MOVE (l));
+  }
 
-    /// Convert a scanner token number \a t to a symbol number.
-    static token_number_type yytranslate_ (token_type t);
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RELAY (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_RELAY, YY_MOVE (l));
+  }
 
-    // Tables.
-  // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-  // STATE-NUM.
-  static const short yypact_[];
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_IP_ADDRESS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_IP_ADDRESS, YY_MOVE (l));
+  }
 
-  // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-  // Performed when YYTABLE does not specify something else to do.  Zero
-  // means the default is an error.
-  static const unsigned short yydefact_[];
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOOKS_LIBRARIES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_HOOKS_LIBRARIES, YY_MOVE (l));
+  }
 
-  // YYPGOTO[NTERM-NUM].
-  static const short yypgoto_[];
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LIBRARY (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_LIBRARY, YY_MOVE (l));
+  }
 
-  // YYDEFGOTO[NTERM-NUM].
-  static const short yydefgoto_[];
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PARAMETERS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_PARAMETERS, YY_MOVE (l));
+  }
 
-  // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-  // positive, shift that token.  If negative, reduce the rule whose
-  // number is the opposite.  If YYTABLE_NINF, syntax error.
-  static const unsigned short yytable_[];
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_EXPIRED_LEASES_PROCESSING (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, YY_MOVE (l));
+  }
 
-  static const short yycheck_[];
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RECLAIM_TIMER_WAIT_TIME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, YY_MOVE (l));
+  }
 
-  // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-  // symbol of state STATE-NUM.
-  static const unsigned short yystos_[];
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, YY_MOVE (l));
+  }
 
-  // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
-  static const unsigned short yyr1_[];
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOLD_RECLAIMED_TIME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, YY_MOVE (l));
+  }
 
-  // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
-  static const unsigned char yyr2_[];
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAX_RECLAIM_LEASES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, YY_MOVE (l));
+  }
 
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAX_RECLAIM_TIME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, YY_MOVE (l));
+  }
 
-    /// Convert the symbol name \a n to a form suitable for a diagnostic.
-    static std::string yytnamerr_ (const char *n);
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_UNWARNED_RECLAIM_CYCLES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, YY_MOVE (l));
+  }
 
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SERVER_ID (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SERVER_ID, YY_MOVE (l));
+  }
 
-    /// For a symbol, its name in clear.
-    static const char* const yytname_[];
-#if PARSER6_DEBUG
-  // YYRLINE[YYN] -- Source line where rule number YYN was defined.
-  static const unsigned short yyrline_[];
-    /// Report on the debug stream that the rule \a r is going to be reduced.
-    virtual void yy_reduce_print_ (int r);
-    /// Print the state stack on the debug stream.
-    virtual void yystack_print_ ();
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LLT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_LLT, YY_MOVE (l));
+  }
 
-    /// Debugging level.
-    int yydebug_;
-    /// Debug stream.
-    std::ostream* yycdebug_;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_EN (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_EN, YY_MOVE (l));
+  }
 
-    /// \brief Display a symbol type, value and location.
-    /// \param yyo    The output stream.
-    /// \param yysym  The symbol.
-    template <typename Base>
-    void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
-#endif
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_LL, YY_MOVE (l));
+  }
 
-    /// \brief Reclaim the memory associated to a symbol.
-    /// \param yymsg     Why this token is reclaimed.
-    ///                  If null, print nothing.
-    /// \param yysym     The symbol.
-    template <typename Base>
-    void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_IDENTIFIER (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_IDENTIFIER, YY_MOVE (l));
+  }
 
-  private:
-    /// Type access provider for state based symbols.
-    struct by_state
-    {
-      /// Default constructor.
-      by_state () YY_NOEXCEPT;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HTYPE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_HTYPE, YY_MOVE (l));
+  }
 
-      /// The symbol type as needed by the constructor.
-      typedef state_type kind_type;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TIME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_TIME, YY_MOVE (l));
+  }
 
-      /// Constructor.
-      by_state (kind_type s) YY_NOEXCEPT;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ENTERPRISE_ID (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_ENTERPRISE_ID, YY_MOVE (l));
+  }
 
-      /// Copy constructor.
-      by_state (const by_state& that) YY_NOEXCEPT;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCP4O6_PORT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_DHCP4O6_PORT, YY_MOVE (l));
+  }
 
-      /// Record that this symbol is empty.
-      void clear () YY_NOEXCEPT;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONTROL_SOCKET (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CONTROL_SOCKET, YY_MOVE (l));
+  }
 
-      /// Steal the symbol type from \a that.
-      void move (by_state& that);
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SOCKET_TYPE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SOCKET_TYPE, YY_MOVE (l));
+  }
 
-      /// The (internal) type number (corresponding to \a state).
-      /// \a empty_symbol when empty.
-      symbol_number_type type_get () const YY_NOEXCEPT;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SOCKET_NAME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SOCKET_NAME, YY_MOVE (l));
+  }
 
-      /// The state number used to denote an empty symbol.
-      enum { empty_state = -1 };
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCP_QUEUE_CONTROL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, YY_MOVE (l));
+  }
 
-      /// The state.
-      /// \a empty when empty.
-      state_type state;
-    };
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCP_DDNS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_DHCP_DDNS, YY_MOVE (l));
+  }
 
-    /// "Internal" symbol: element of the stack.
-    struct stack_symbol_type : basic_symbol<by_state>
-    {
-      /// Superclass.
-      typedef basic_symbol<by_state> super_type;
-      /// Construct an empty symbol.
-      stack_symbol_type ();
-      /// Move or copy construction.
-      stack_symbol_type (YY_RVREF (stack_symbol_type) that);
-      /// Steal the contents from \a sym to build this.
-      stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
-#if YY_CPLUSPLUS < 201103L
-      /// Assignment, needed by push_back by some old implementations.
-      /// Moves the contents of that.
-      stack_symbol_type& operator= (stack_symbol_type& that);
-#endif
-    };
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ENABLE_UPDATES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_ENABLE_UPDATES, YY_MOVE (l));
+  }
 
-    /// A stack with random access from its top.
-    template <typename T, typename S = std::vector<T> >
-    class stack
-    {
-    public:
-      // Hide our reversed order.
-      typedef typename S::reverse_iterator iterator;
-      typedef typename S::const_reverse_iterator const_iterator;
-      typedef typename S::size_type size_type;
-
-      stack (size_type n = 200)
-        : seq_ (n)
-      {}
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      T&
-      operator[] (size_type i)
-      {
-        return seq_[size () - 1 - i];
-      }
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      T&
-      operator[] (int i)
-      {
-        return operator[] (size_type (i));
-      }
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      const T&
-      operator[] (size_type i) const
-      {
-        return seq_[size () - 1 - i];
-      }
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      const T&
-      operator[] (int i) const
-      {
-        return operator[] (size_type (i));
-      }
-
-      /// Steal the contents of \a t.
-      ///
-      /// Close to move-semantics.
-      void
-      push (YY_MOVE_REF (T) t)
-      {
-        seq_.push_back (T ());
-        operator[] (0).move (t);
-      }
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_QUALIFYING_SUFFIX (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, YY_MOVE (l));
+  }
 
-      /// Pop elements from the stack.
-      void
-      pop (int n = 1) YY_NOEXCEPT
-      {
-        for (; 0 < n; --n)
-          seq_.pop_back ();
-      }
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SERVER_IP (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SERVER_IP, YY_MOVE (l));
+  }
 
-      /// Pop all elements from the stack.
-      void
-      clear () YY_NOEXCEPT
-      {
-        seq_.clear ();
-      }
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SERVER_PORT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SERVER_PORT, YY_MOVE (l));
+  }
 
-      /// Number of elements on the stack.
-      size_type
-      size () const YY_NOEXCEPT
-      {
-        return seq_.size ();
-      }
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SENDER_IP (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SENDER_IP, YY_MOVE (l));
+  }
 
-      /// Iterator on top of the stack (going downwards).
-      const_iterator
-      begin () const YY_NOEXCEPT
-      {
-        return seq_.rbegin ();
-      }
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SENDER_PORT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SENDER_PORT, YY_MOVE (l));
+  }
 
-      /// Bottom of the stack.
-      const_iterator
-      end () const YY_NOEXCEPT
-      {
-        return seq_.rend ();
-      }
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAX_QUEUE_SIZE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, YY_MOVE (l));
+  }
 
-      /// Present a slice of the top of a stack.
-      class slice
-      {
-      public:
-        slice (const stack& stack, int range)
-          : stack_ (stack)
-          , range_ (range)
-        {}
-
-        const T&
-        operator[] (int i) const
-        {
-          return stack_[range_ - i];
-        }
-
-      private:
-        const stack& stack_;
-        int range_;
-      };
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_NCR_PROTOCOL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_NCR_PROTOCOL, YY_MOVE (l));
+  }
 
-    private:
-      stack (const stack&);
-      stack& operator= (const stack&);
-      /// The wrapped container.
-      S seq_;
-    };
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_NCR_FORMAT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_NCR_FORMAT, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OVERRIDE_NO_UPDATE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, YY_MOVE (l));
+  }
 
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OVERRIDE_CLIENT_UPDATE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, YY_MOVE (l));
+  }
 
-    /// Stack type.
-    typedef stack<stack_symbol_type> stack_type;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_REPLACE_CLIENT_NAME (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, YY_MOVE (l));
+  }
 
-    /// The stack.
-    stack_type yystack_;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_GENERATED_PREFIX (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_GENERATED_PREFIX, YY_MOVE (l));
+  }
 
-    /// Push a new state on the stack.
-    /// \param m    a debug message to display
-    ///             if null, no trace is output.
-    /// \param sym  the symbol
-    /// \warning the contents of \a s.value is stolen.
-    void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_UDP (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_UDP, YY_MOVE (l));
+  }
 
-    /// Push a new look ahead token on the state on the stack.
-    /// \param m    a debug message to display
-    ///             if null, no trace is output.
-    /// \param s    the state
-    /// \param sym  the symbol (for its value and location).
-    /// \warning the contents of \a sym.value is stolen.
-    void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TCP (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_TCP, YY_MOVE (l));
+  }
 
-    /// Pop \a n symbols from the stack.
-    void yypop_ (int n = 1);
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_JSON (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_JSON, YY_MOVE (l));
+  }
 
-    /// Constants.
-    enum
-    {
-      yyeof_ = 0,
-      yylast_ = 1103,     ///< Last index in yytable_.
-      yynnts_ = 403,  ///< Number of nonterminal symbols.
-      yyfinal_ = 32, ///< Termination state number.
-      yyterror_ = 1,
-      yyerrcode_ = 256,
-      yyntokens_ = 185  ///< Number of tokens.
-    };
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_WHEN_PRESENT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_WHEN_PRESENT, YY_MOVE (l));
+  }
 
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_NEVER (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_NEVER, YY_MOVE (l));
+  }
 
-    // User arguments.
-    isc::dhcp::Parser6Context& ctx;
-  };
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ALWAYS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_ALWAYS, YY_MOVE (l));
+  }
 
   inline
-  Dhcp6Parser::token_number_type
-  Dhcp6Parser::yytranslate_ (token_type t)
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_WHEN_NOT_PRESENT (YY_COPY (location_type) l)
   {
-    // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
-    // TOKEN-NUM as returned by yylex.
-    static
-    const token_number_type
-    translate_table[] =
-    {
-       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184
-    };
-    const unsigned user_token_number_max_ = 439;
-    const token_number_type undef_token_ = 2;
+    return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, YY_MOVE (l));
+  }
 
-    if (static_cast<int> (t) <= yyeof_)
-      return yyeof_;
-    else if (static_cast<unsigned> (t) <= user_token_number_max_)
-      return translate_table[t];
-    else
-      return undef_token_;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOSTNAME_CHAR_SET (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, YY_MOVE (l));
   }
 
-  // basic_symbol.
-#if 201103L <= YY_CPLUSPLUS
-  template <typename Base>
-  Dhcp6Parser::basic_symbol<Base>::basic_symbol (basic_symbol&& that)
-    : Base (std::move (that))
-    , value ()
-    , location (std::move (that.location))
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOSTNAME_CHAR_REPLACEMENT (YY_COPY (location_type) l)
   {
-    switch (this->type_get ())
-    {
-      case 202: // value
-      case 206: // map_value
-      case 267: // db_type
-      case 360: // hr_mode
-      case 496: // duid_type
-      case 531: // ncr_protocol_value
-      case 538: // replace_client_name_value
-        value.move< ElementPtr > (std::move (that.value));
-        break;
+    return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, YY_MOVE (l));
+  }
 
-      case 184: // "boolean"
-        value.move< bool > (std::move (that.value));
-        break;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LOGGING (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_LOGGING, YY_MOVE (l));
+  }
 
-      case 183: // "floating point"
-        value.move< double > (std::move (that.value));
-        break;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LOGGERS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_LOGGERS, YY_MOVE (l));
+  }
 
-      case 182: // "integer"
-        value.move< int64_t > (std::move (that.value));
-        break;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OUTPUT_OPTIONS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_OUTPUT_OPTIONS, YY_MOVE (l));
+  }
 
-      case 181: // "constant string"
-        value.move< std::string > (std::move (that.value));
-        break;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OUTPUT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_OUTPUT, YY_MOVE (l));
+  }
 
-      default:
-        break;
-    }
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DEBUGLEVEL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_DEBUGLEVEL, YY_MOVE (l));
+  }
 
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SEVERITY (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SEVERITY, YY_MOVE (l));
   }
-#endif
 
-  template <typename Base>
-  Dhcp6Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
-    : Base (that)
-    , value ()
-    , location (that.location)
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_FLUSH (YY_COPY (location_type) l)
   {
-    switch (this->type_get ())
-    {
-      case 202: // value
-      case 206: // map_value
-      case 267: // db_type
-      case 360: // hr_mode
-      case 496: // duid_type
-      case 531: // ncr_protocol_value
-      case 538: // replace_client_name_value
-        value.copy< ElementPtr > (YY_MOVE (that.value));
-        break;
+    return symbol_type (token::TOKEN_FLUSH, YY_MOVE (l));
+  }
 
-      case 184: // "boolean"
-        value.copy< bool > (YY_MOVE (that.value));
-        break;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAXSIZE (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_MAXSIZE, YY_MOVE (l));
+  }
 
-      case 183: // "floating point"
-        value.copy< double > (YY_MOVE (that.value));
-        break;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAXVER (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_MAXVER, YY_MOVE (l));
+  }
 
-      case 182: // "integer"
-        value.copy< int64_t > (YY_MOVE (that.value));
-        break;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PATTERN (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_PATTERN, YY_MOVE (l));
+  }
 
-      case 181: // "constant string"
-        value.copy< std::string > (YY_MOVE (that.value));
-        break;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCP4 (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_DHCP4, YY_MOVE (l));
+  }
 
-      default:
-        break;
-    }
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCPDDNS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_DHCPDDNS, YY_MOVE (l));
+  }
 
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONTROL_AGENT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CONTROL_AGENT, YY_MOVE (l));
   }
 
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TOPLEVEL_JSON (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_TOPLEVEL_JSON, YY_MOVE (l));
+  }
 
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TOPLEVEL_DHCP6 (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, YY_MOVE (l));
+  }
 
-  template <typename Base>
-  bool
-  Dhcp6Parser::basic_symbol<Base>::empty () const YY_NOEXCEPT
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_DHCP6 (YY_COPY (location_type) l)
   {
-    return Base::type_get () == empty_symbol;
+    return symbol_type (token::TOKEN_SUB_DHCP6, YY_MOVE (l));
   }
 
-  template <typename Base>
-  void
-  Dhcp6Parser::basic_symbol<Base>::move (basic_symbol& s)
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_INTERFACES6 (YY_COPY (location_type) l)
   {
-    super_type::move (s);
-    switch (this->type_get ())
-    {
-      case 202: // value
-      case 206: // map_value
-      case 267: // db_type
-      case 360: // hr_mode
-      case 496: // duid_type
-      case 531: // ncr_protocol_value
-      case 538: // replace_client_name_value
-        value.move< ElementPtr > (YY_MOVE (s.value));
-        break;
+    return symbol_type (token::TOKEN_SUB_INTERFACES6, YY_MOVE (l));
+  }
 
-      case 184: // "boolean"
-        value.move< bool > (YY_MOVE (s.value));
-        break;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_SUBNET6 (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SUB_SUBNET6, YY_MOVE (l));
+  }
 
-      case 183: // "floating point"
-        value.move< double > (YY_MOVE (s.value));
-        break;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_POOL6 (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SUB_POOL6, YY_MOVE (l));
+  }
 
-      case 182: // "integer"
-        value.move< int64_t > (YY_MOVE (s.value));
-        break;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_PD_POOL (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SUB_PD_POOL, YY_MOVE (l));
+  }
 
-      case 181: // "constant string"
-        value.move< std::string > (YY_MOVE (s.value));
-        break;
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_RESERVATION (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SUB_RESERVATION, YY_MOVE (l));
+  }
 
-      default:
-        break;
-    }
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_OPTION_DEFS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DEFS, YY_MOVE (l));
+  }
 
-    location = YY_MOVE (s.location);
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_OPTION_DEF (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DEF, YY_MOVE (l));
   }
 
-  // by_type.
   inline
-  Dhcp6Parser::by_type::by_type ()
-    : type (empty_symbol)
-  {}
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_OPTION_DATA (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DATA, YY_MOVE (l));
+  }
 
-#if 201103L <= YY_CPLUSPLUS
   inline
-  Dhcp6Parser::by_type::by_type (by_type&& that)
-    : type (that.type)
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_HOOKS_LIBRARY (YY_COPY (location_type) l)
   {
-    that.clear ();
+    return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, YY_MOVE (l));
   }
-#endif
 
   inline
-  Dhcp6Parser::by_type::by_type (const by_type& that)
-    : type (that.type)
-  {}
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_DHCP_DDNS (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SUB_DHCP_DDNS, YY_MOVE (l));
+  }
 
   inline
-  Dhcp6Parser::by_type::by_type (token_type t)
-    : type (yytranslate_ (t))
-  {}
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_LOGGING (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_SUB_LOGGING, YY_MOVE (l));
+  }
 
   inline
-  void
-  Dhcp6Parser::by_type::clear ()
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_CONFIG_CONTROL (YY_COPY (location_type) l)
   {
-    type = empty_symbol;
+    return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, YY_MOVE (l));
   }
 
   inline
-  void
-  Dhcp6Parser::by_type::move (by_type& that)
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l)
   {
-    type = that.type;
-    that.clear ();
+    return symbol_type (token::TOKEN_STRING, YY_MOVE (v), YY_MOVE (l));
   }
 
   inline
-  int
-  Dhcp6Parser::by_type::type_get () const YY_NOEXCEPT
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l)
   {
-    return type;
+    return symbol_type (token::TOKEN_INTEGER, YY_MOVE (v), YY_MOVE (l));
   }
 
   inline
-  Dhcp6Parser::token_type
-  Dhcp6Parser::by_type::token () const YY_NOEXCEPT
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l)
   {
-    // YYTOKNUM[NUM] -- (External) token number corresponding to the
-    // (internal) symbol number NUM (which must be that of a token).  */
-    static
-    const unsigned short
-    yytoken_number_[] =
-    {
-       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
-     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
-     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
-     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
-     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
-     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
-     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
-     435,   436,   437,   438,   439
-    };
-    return token_type (yytoken_number_[type]);
+    return symbol_type (token::TOKEN_FLOAT, YY_MOVE (v), YY_MOVE (l));
   }
 
-#line 14 "dhcp6_parser.yy"
-} } // isc::dhcp
-#line 4326 "dhcp6_parser.h"
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_BOOLEAN, YY_MOVE (v), YY_MOVE (l));
+  }
 
 
+#line 14 "dhcp6_parser.yy" // lalr1.cc:404
+} } // isc::dhcp
+#line 3424 "dhcp6_parser.h" // lalr1.cc:404
+
 
 
 
index c4744cb227a64c75a94626ceb910b5694be058eb..342588335479a80d70706fe65056f72e9c79647a 100644 (file)
@@ -220,6 +220,7 @@ using namespace std;
   FLUSH "flush"
   MAXSIZE "maxsize"
   MAXVER "maxver"
+  PATTERN "pattern"
 
   DHCP4 "Dhcp4"
   DHCPDDNS "DhcpDdns"
@@ -2421,6 +2422,7 @@ output_params: output
              | flush
              | maxsize
              | maxver
+             | pattern
              ;
 
 output: OUTPUT {
@@ -2446,6 +2448,14 @@ maxver: MAXVER COLON INTEGER {
     ctx.stack_.back()->set("maxver", maxver);
 };
 
+pattern: PATTERN {
+    ctx.enter(ctx.NO_KEYWORD);
+} COLON STRING {
+    ElementPtr sev(new StringElement($4, ctx.loc2pos(@4)));
+    ctx.stack_.back()->set("pattern", sev);
+    ctx.leave();
+};
+
 %%
 
 void
index b5c0b278455c4aabf7b03e8e1781b10b8b0d5b84..94d877060d091c514c72e697e42ab50e7d49b4f4 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 201906181918
-// A Bison parser, made by GNU Bison 3.4.1.
+// A Bison parser, made by GNU Bison 3.2.1.
 
 // Locations for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 #  endif
 # endif
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // location.cc:339
 namespace isc { namespace dhcp {
-#line 60 "location.hh"
-
+#line 60 "location.hh" // location.cc:339
   /// A point in a source file.
   class position
   {
@@ -318,8 +316,7 @@ namespace isc { namespace dhcp {
     return ostr;
   }
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // location.cc:339
 } } // isc::dhcp
-#line 323 "location.hh"
-
+#line 322 "location.hh" // location.cc:339
 #endif // !YY_PARSER6_LOCATION_HH_INCLUDED
index d916ca979d08042d44271a70a9b90f2032d1fe5c..22ef35f744d2e26eb583a751ca8d621cf4b3a5bd 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 201906181918
-// A Bison parser, made by GNU Bison 3.4.1.
+// A Bison parser, made by GNU Bison 3.2.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 745ed190a682c72f34097592c567f6ac4a6a9925..81e152d836b96a78a0b6b5cd75d1557e8601f5d0 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 201906181918
-// A Bison parser, made by GNU Bison 3.4.1.
+// A Bison parser, made by GNU Bison 3.2.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.