]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
Down- and upstream padding a la RFC7830 & RFC8467
authorWillem Toorop <willem@nlnetlabs.nl>
Thu, 2 Apr 2020 16:34:03 +0000 (18:34 +0200)
committerWillem Toorop <willem@nlnetlabs.nl>
Thu, 2 Apr 2020 16:34:03 +0000 (18:34 +0200)
20 files changed:
daemon/worker.c
doc/example.conf.in
doc/unbound.conf.5.in
libunbound/libworker.c
services/authzone.c
services/outside_network.c
services/outside_network.h
testcode/fake_event.c
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y
util/data/msgencode.c
util/data/msgparse.c
util/data/msgparse.h
util/edns.c
validator/autotrust.c

index 201e7733659dce74b870d08f78c260f80f910156..9f8db159f0cae98057ebbdcecd90f14638cacf96 100644 (file)
@@ -1286,6 +1286,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
                        edns.udp_size = EDNS_ADVERTISED_SIZE;
                        edns.bits &= EDNS_DO;
                        edns.opt_list = NULL;
+                       edns.padding_block_size = 0;
                        verbose(VERB_ALGO, "query with bad edns version.");
                        log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen);
                        error_encode(c->buffer, EDNS_RCODE_BADVERS&0xf, &qinfo,
index 091948e2df9662d4cd134506a4310589a87791a9..7374a564a504ffc9328807c22816f4aa813870d5 100644 (file)
@@ -746,6 +746,12 @@ server:
        # cipher setting for TLSv1.3
        # tls-ciphersuites: "TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256"
 
+       # Pad responses to padded queries received over TLS
+       # pad-responses: yes
+
+       # Padded responses will be padded to the closest multiple of this size.
+       # pad-responses-block-size: 468
+
        # Add the secret file for TLS Session Ticket.
        # Secret file must be 80 bytes of random data.
        # First key use to encrypt and decrypt TLS session tickets.
@@ -764,6 +770,12 @@ server:
        # Add system certs to the cert bundle, from the Windows Cert Store
        # tls-win-cert: no
 
+       # Pad queries over TLS upstreams
+       # pad-queries: no
+
+       # Padded queries will be padded to the closest multiple of this size.
+       # pad-queries-block-size: 128
+
        # Also serve tls on these port numbers (eg. 443, ...), by listing
        # tls-additional-port: portno for each of the port numbers.
 
index cd219c79ae274dbcdcd859a4fc636d0a88f2e3da..01fd0bd7f30ef3f088ae850e59f1707b8de81c3b 100644 (file)
@@ -546,6 +546,26 @@ and that is the default.
 Set the list of ciphersuites to allow when serving TLS.  This is for newer
 TLS 1.3 connections.  Use "" for defaults, and that is the default.
 .TP
+.B pad\-responses: \fI<yes or no>
+If enabled, TLS serviced queries that contained an EDNS Padding option will
+cause responses padded to the closest multiple of the size specified in
+\fBpad\-responses\-block\-size\fR.
+Default is yes.
+.TP
+.B pad\-responses\-block\-size: \fI<number>
+The block size with which to pad responses serviced over TLS. Only responses
+to padded queries will be padded.
+Default is 468.
+.TP
+.B pad\-queries: \fI<yes or no>
+If enabled, all queries sent over TLS upstreams will be padded to the closest
+multiple of the size specified in \fBpad\-queries\-block\-size\fR.
+Default is no.
+.TP
+.B pad\-queries\-block\-size: \fI<number>
+The block size with which to pad queries sent over TLS upstreams.
+Default is 128.
+.TP
 .B use\-systemd: \fI<yes or no>
 Enable or disable systemd socket activation.
 Default is no.
index 24233f1d07af7476e6eb8acab104d4e6f5ab6f4d..be32c3ae80eb04a58751e53e9d931a70de6bcf4b 100644 (file)
@@ -574,6 +574,7 @@ setup_qinfo_edns(struct libworker* w, struct ctx_query* q,
        edns->edns_version = 0;
        edns->bits = EDNS_DO;
        edns->opt_list = NULL;
+       edns->padding_block_size = 0;
        if(sldns_buffer_capacity(w->back->udp_buff) < 65535)
                edns->udp_size = (uint16_t)sldns_buffer_capacity(
                        w->back->udp_buff);
index 70fe27a5edc60afa8ec47fa82d5e7f965d425e00..be02610e817e3844694e4b4c2e25e207c857de3a 100644 (file)
@@ -5091,6 +5091,7 @@ xfr_transfer_lookup_host(struct auth_xfer* xfr, struct module_env* env)
        edns.edns_version = 0;
        edns.bits = EDNS_DO;
        edns.opt_list = NULL;
+       edns.padding_block_size = 0;
        if(sldns_buffer_capacity(buf) < 65535)
                edns.udp_size = (uint16_t)sldns_buffer_capacity(buf);
        else    edns.udp_size = 65535;
@@ -6278,6 +6279,7 @@ xfr_probe_lookup_host(struct auth_xfer* xfr, struct module_env* env)
        edns.edns_version = 0;
        edns.bits = EDNS_DO;
        edns.opt_list = NULL;
+       edns.padding_block_size = 0;
        if(sldns_buffer_capacity(buf) < 65535)
                edns.udp_size = (uint16_t)sldns_buffer_capacity(buf);
        else    edns.udp_size = 65535;
index 978e98b0ec0060315576f98c5bc5acf405c54db8..ec380c86d42420182cb6f3a725f9827e6700dd31 100644 (file)
@@ -1415,7 +1415,8 @@ static struct serviced_query*
 serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec,
        int want_dnssec, int nocaps, int tcp_upstream, int ssl_upstream,
        char* tls_auth_name, struct sockaddr_storage* addr, socklen_t addrlen,
-       uint8_t* zone, size_t zonelen, int qtype, struct edns_option* opt_list)
+       uint8_t* zone, size_t zonelen, int qtype, struct edns_option* opt_list,
+       size_t pad_queries_block_size)
 {
        struct serviced_query* sq = (struct serviced_query*)malloc(sizeof(*sq));
 #ifdef UNBOUND_DEBUG
@@ -1473,6 +1474,7 @@ serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec,
        sq->status = serviced_initial;
        sq->retry = 0;
        sq->to_be_deleted = 0;
+       sq->padding_block_size = pad_queries_block_size;
 #ifdef UNBOUND_DEBUG
        ins = 
 #else
@@ -1591,6 +1593,7 @@ serviced_encode(struct serviced_query* sq, sldns_buffer* buff, int with_edns)
        if(with_edns) {
                /* add edns section */
                struct edns_data edns;
+               struct edns_option padding_option;
                edns.edns_present = 1;
                edns.ext_rcode = 0;
                edns.edns_version = EDNS_ADVERTISED_VERSION;
@@ -1613,6 +1616,14 @@ serviced_encode(struct serviced_query* sq, sldns_buffer* buff, int with_edns)
                        edns.bits = EDNS_DO;
                if(sq->dnssec & BIT_CD)
                        LDNS_CD_SET(sldns_buffer_begin(buff));
+               if (sq->ssl_upstream && sq->padding_block_size) {
+                       padding_option.opt_code = LDNS_EDNS_PADDING;
+                       padding_option.opt_len = 0;
+                       padding_option.opt_data = NULL;
+                       padding_option.next = edns.opt_list;
+                       edns.opt_list = &padding_option;
+                       edns.padding_block_size = sq->padding_block_size;
+               }
                attach_edns_record(buff, &edns);
        }
 }
@@ -2125,7 +2136,9 @@ outnet_serviced_query(struct outside_network* outnet,
                sq = serviced_create(outnet, buff, dnssec, want_dnssec, nocaps,
                        tcp_upstream, ssl_upstream, tls_auth_name, addr,
                        addrlen, zone, zonelen, (int)qinfo->qtype,
-                       qstate->edns_opts_back_out);
+                       qstate->edns_opts_back_out,
+                       ( ssl_upstream && env->cfg->pad_queries
+                       ? env->cfg->pad_queries_block_size : 0));
                if(!sq) {
                        free(cb);
                        return NULL;
index 3fc5dde45294c5daa9936dc7c913a76964cf72d0..eeb77bb92508c7f4413701c6835df124d5813913 100644 (file)
@@ -390,6 +390,8 @@ struct serviced_query {
        struct service_callback* cblist;
        /** the UDP or TCP query that is pending, see status which */
        void* pending;
+       /** block size with which to pad encrypted queries (default: 128) */
+       size_t padding_block_size;
 };
 
 /**
index c69fb9bfde527552b167a485bab82b4d66f7fc5d..209257921bd5ea8779ec3939aa34469b0925b3a9 100644 (file)
@@ -1222,6 +1222,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet,
                edns.opt_list = qstate->edns_opts_back_out;
                if(dnssec)
                        edns.bits = EDNS_DO;
+               edns.padding_block_size = 0;
                attach_edns_record(pend->buffer, &edns);
        }
        memcpy(&pend->addr, addr, addrlen);
index 767d76b29115cd5d0b4fac52f9bae306c7432d89..bd9fd278dc65addd1efb34cad8006514b2e2daeb 100644 (file)
@@ -322,6 +322,10 @@ config_create(void)
        cfg->dnscrypt_shared_secret_cache_slabs = 4;
        cfg->dnscrypt_nonce_cache_size = 4*1024*1024;
        cfg->dnscrypt_nonce_cache_slabs = 4;
+       cfg->pad_responses = 1;
+       cfg->pad_responses_block_size = 468; /* from RFC8467 */
+       cfg->pad_queries = 0;
+       cfg->pad_queries_block_size = 128; /* from RFC8467 */
 #ifdef USE_IPSECMOD
        cfg->ipsecmod_enabled = 1;
        cfg->ipsecmod_ignore_bogus = 0;
@@ -693,6 +697,10 @@ int config_set_option(struct config_file* cfg, const char* opt,
        else S_NUMBER_OR_ZERO("fast-server-permil:", fast_server_permil)
        else S_YNO("qname-minimisation:", qname_minimisation)
        else S_YNO("qname-minimisation-strict:", qname_minimisation_strict)
+       else S_YNO("pad-responses:", pad_responses)
+       else S_SIZET_NONZERO("pad-responses-block-size:", pad_responses_block_size)
+       else S_YNO("pad-queries:", pad_queries)
+       else S_SIZET_NONZERO("pad-queries-block-size:", pad_queries_block_size)
 #ifdef USE_IPSECMOD
        else S_YNO("ipsecmod-enabled:", ipsecmod_enabled)
        else S_YNO("ipsecmod-ignore-bogus:", ipsecmod_ignore_bogus)
@@ -1120,6 +1128,10 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_LS3(opt, "access-control-tag-action", acl_tag_actions)
        else O_LS3(opt, "access-control-tag-data", acl_tag_datas)
        else O_LS2(opt, "access-control-view", acl_view)
+       else O_YNO(opt, "pad-responses", pad_responses)
+       else O_DEC(opt, "pad-responses-block-size", pad_responses_block_size)
+       else O_YNO(opt, "pad-queries", pad_queries)
+       else O_DEC(opt, "pad-queries-block-size", pad_queries_block_size)
 #ifdef USE_IPSECMOD
        else O_YNO(opt, "ipsecmod-enabled", ipsecmod_enabled)
        else O_YNO(opt, "ipsecmod-ignore-bogus", ipsecmod_ignore_bogus)
index 49c9610ce8ac87fae50304a77b42575f4e5f3a7f..454b887344fb179b5baa2b2b12e6826132e1e06e 100644 (file)
@@ -569,6 +569,17 @@ struct config_file {
        size_t dnscrypt_nonce_cache_size;
        /** number of slabs for dnscrypt nonces cache */
        size_t dnscrypt_nonce_cache_slabs;
+
+       /** EDNS padding according to FC7830 and RFC8467 */
+       /** true to enable padding of responses (default: on) */
+       int pad_responses;
+       /** block size with which to pad encrypted responses (default: 468) */
+       size_t pad_responses_block_size;
+       /** true to enable padding of queries (default: off) */
+       int pad_queries;
+       /** block size with which to pad encrypted queries (default: 128) */
+       size_t pad_queries_block_size;
+
        /** IPsec module */
 #ifdef USE_IPSECMOD
        /** false to bypass the IPsec module */
index 194569a64a035d0a1197ecd6aad687a51bc84751..6e185a1ad8cd3aff713eb4d7ba4ad9e8310263f3 100644 (file)
@@ -1,7 +1,7 @@
 #include "config.h"
 #include "util/configyyrename.h"
 
-#line 2 "<stdout>"
+#line 3 "<stdout>"
 
 #define  YY_INT_ALIGNED short int
 
@@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
        (yy_hold_char) = *yy_cp; \
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 310
-#define YY_END_OF_BUFFER 311
+#define YY_NUM_RULES 314
+#define YY_END_OF_BUFFER 315
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -363,343 +363,349 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[3049] =
+static const flex_int16_t yy_accept[3094] =
     {   0,
-        1,    1,  292,  292,  296,  296,  300,  300,  304,  304,
-        1,    1,  311,  308,    1,  290,  290,  309,    2,  309,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  292,  293,  293,  294,  309,  296,  297,  297,
-      298,  309,  303,  300,  301,  301,  302,  309,  304,  305,
-      305,  306,  309,  307,  291,    2,  295,  309,  307,  308,
-        0,    1,    2,    2,    2,    2,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      292,    0,  296,    0,  303,    0,  300,  304,    0,  307,
-        0,    2,    2,  307,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  307,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  114,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  122,  308,  308,  308,
-      308,  308,  308,  308,  307,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-       98,  308,  308,  308,  308,  308,  308,    8,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  115,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  127,  308,  307,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  285,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  307,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,   56,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  224,  308,   14,   15,  308,   19,
-       18,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  121,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  208,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,    3,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  307,  308,  308,
-      308,  308,  308,  308,  308,  280,  308,  308,  279,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  299,  308,  308,  308,  308,  308,
-      308,  308,   55,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,   59,
-      308,  254,  308,  308,  308,  308,  308,  308,  308,  308,
-      286,  287,  308,  308,  308,  308,  308,   60,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  118,  308,  308,  308,  308,  308,  308,
-      308,  308,  197,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,   21,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  146,  308,  308,  299,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,   96,  308,  308,  308,  308,
-      308,  308,  308,  262,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  169,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  145,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,   95,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,   32,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,   33,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,   57,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  120,  308,  308,  308,  308,  308,  113,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,   58,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  227,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  170,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,   46,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  245,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,   50,  308,   51,  308,  308,
-      308,  308,  308,   99,  308,  100,  308,  308,  308,  308,
-       97,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,    7,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  217,  308,  308,
-      308,  308,  148,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  228,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,   47,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  189,  308,
-      188,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,   16,   17,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,   61,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  196,  308,  308,  308,  308,  308,  308,
-      102,  308,  101,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  180,  308,  308,  308,  308,  308,  308,
-      308,  308,  128,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,   80,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,   84,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,   54,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  183,  184,  308,  308,
-      308,  256,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,    6,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  260,  308,  308,  308,  308,
-      308,  308,  281,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,   42,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,   44,  308,  308,  308,
-      308,  308,  308,  308,  308,  176,  308,  308,  308,  123,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      201,  308,  177,  308,  308,  308,  214,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,   45,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  125,  107,  308,  108,
-      308,  308,  308,  106,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  143,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  244,  308,  308,  308,  308,  308,
-      308,  308,  308,  178,  308,  308,  308,  308,  308,  181,
-      308,  187,  308,  308,  308,  308,  308,  213,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,   94,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      119,  308,  308,  308,  308,  308,  308,   52,  308,  308,
-      308,   26,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,   20,  308,  308,  308,  308,  308,  308,   27,   36,
-
-      308,  153,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,   69,   71,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  264,  308,  308,  308,
-      225,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  109,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  142,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  275,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  147,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  207,  308,  308,  308,  308,  308,  308,  308,  308,
-      284,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  164,  308,  308,  308,  308,  308,  308,  308,
-      308,  103,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  159,  308,  171,  308,  308,  308,  308,  308,  131,
-      308,  308,  308,  308,  308,   90,  308,  308,  308,  308,
-      199,  308,  308,  308,  308,  308,  308,  215,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  236,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  124,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  163,  308,  308,  308,  308,  308,
-       72,   73,  308,  308,  308,  308,  308,   53,  308,  308,
-      308,  308,  308,   79,  172,  308,  190,  308,  218,  308,
-      308,  182,  257,  308,  308,  308,  308,  308,   65,  308,
-      174,  308,  308,  308,  308,  308,    9,  308,  308,  308,
-       93,  308,  308,  308,  308,  249,  308,  308,  308,  198,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  162,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      149,  308,  263,  308,  308,  308,  308,  235,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  209,
-      308,  308,  308,  308,  255,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  278,
-
-      308,  173,  308,  308,  308,  308,  308,  308,  308,   64,
-       66,  308,  308,  308,  308,  308,  308,  308,   92,  308,
-      308,  308,  308,  247,  308,  308,  308,  259,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  203,
-       34,   28,   30,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,   35,  308,   29,   31,  308,  308,  308,  308,
-      308,  308,  308,  308,   89,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  205,  202,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,   63,  308,  308,  126,  308,  110,  308,  308,  308,
-      308,  308,  308,  308,  308,  144,   13,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  273,  308,  276,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,   12,
-      308,  308,   22,  308,  308,  308,  253,  308,  308,  308,
-      261,  308,  308,  308,   67,  308,  211,  308,  308,  308,
-      308,  204,  308,  308,   62,  308,  308,  308,  308,   23,
-      308,   43,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  158,  157,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  206,  200,  308,  216,  308,
-
-      308,  265,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,   74,
-      308,  308,  308,  248,  308,  308,  308,  308,  186,  308,
-      308,  308,  308,  210,  308,  308,  308,  308,  308,  308,
-      308,  308,  282,  283,  155,  308,  308,   68,  308,  308,
-      308,  308,  165,  308,  308,  104,  105,  308,  308,  308,
-      308,  150,  308,  152,  308,  191,  308,  308,  308,  308,
-      156,  308,  308,  219,  308,  308,  308,  308,  308,  308,
-      308,  133,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  226,  308,  308,  308,  308,  308,  308,
-      308,   24,  308,  258,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  192,  308,  308,  246,  308,
-      277,  308,  185,  308,  308,  308,  308,   48,  308,  308,
-      308,  308,    4,  308,  308,  308,  117,  132,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  222,   37,   38,  308,
-      308,  308,  308,  308,  308,  308,  266,  308,  308,  308,
-      308,  308,  308,  234,  308,  308,  308,  308,  308,  308,
-      308,  195,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,   77,  308,   49,  252,  308,  223,  308,  308,  308,
-      308,   11,  308,  308,  308,  308,  308,  116,  308,  308,
-      308,  308,  193,   81,  308,   40,  308,  308,  308,  308,
-      308,  308,  308,  308,  161,  308,  308,  308,  308,  308,
-      135,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      233,  308,  308,  308,  308,  129,  308,  308,  111,  112,
-      308,  308,  308,   83,   87,   82,  308,   75,  308,  308,
-      308,  308,  308,   10,  308,  308,  308,  250,  308,  308,
-      308,  308,  289,   39,  308,  308,  308,  308,  308,  160,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,   88,   86,  308,   76,  274,  308,  308,  308,
-      308,  308,  308,  308,  179,  308,  308,  308,  308,  308,
-      194,  308,  308,  308,  308,  308,  308,  308,  308,  151,
-       70,  308,  308,  308,  308,  308,  267,  308,  308,  308,
-      308,  308,  308,  308,  230,  308,  308,  229,  130,  308,
-       85,  136,  137,  140,  141,  138,  139,   78,  308,  251,
-      308,  308,  308,  308,  154,  308,  308,  308,  308,  308,
-      221,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  167,  166,
-
-       41,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,   91,  308,  220,  308,  243,
-      271,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,    5,  308,  308,  212,  308,  308,  272,
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  231,
-       25,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  232,  308,  308,  308,  134,  308,  308,
-      308,  308,  308,  308,  308,  308,  168,  308,  175,  308,
-      308,  308,  308,  308,  308,  308,  308,  308,  268,  308,
-
-      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      308,  308,  308,  308,  308,  308,  288,  308,  308,  239,
-      308,  308,  308,  308,  308,  269,  308,  308,  308,  308,
-      308,  308,  270,  308,  308,  308,  237,  308,  240,  241,
-      308,  308,  308,  308,  308,  238,  242,    0
+        1,    1,  296,  296,  300,  300,  304,  304,  308,  308,
+        1,    1,  315,  312,    1,  294,  294,  313,    2,  313,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  296,  297,  297,  298,  313,  300,  301,  301,
+      302,  313,  307,  304,  305,  305,  306,  313,  308,  309,
+      309,  310,  313,  311,  295,    2,  299,  313,  311,  312,
+        0,    1,    2,    2,    2,    2,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  296,    0,  300,    0,  307,    0,  304,  308,    0,
+      311,    0,    2,    2,  311,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  311,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  114,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  122,
+      312,  312,  312,  312,  312,  312,  312,  311,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,   98,  312,  312,  312,  312,  312,  312,
+      312,  312,    8,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  115,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  127,  312,  311,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  289,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  311,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,   56,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  224,  312,   14,   15,  312,   19,   18,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  121,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  208,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,    3,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  311,  312,  312,  312,
+      312,  312,  312,  312,  284,  312,  312,  283,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  303,  312,  312,  312,  312,  312,  312,
+
+      312,   55,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,   59,  312,
+      254,  312,  312,  312,  312,  312,  312,  312,  312,  290,
+      291,  312,  312,  312,  312,  312,  312,  312,   60,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  118,  312,  312,  312,  312,  312,
+      312,  312,  312,  197,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,   21,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  146,  312,  312,  303,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,   96,  312,  312,  312,
+      312,  312,  312,  312,  262,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  169,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  145,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,   95,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,   32,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,   33,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,   57,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  120,  312,  312,  312,
+
+      312,  312,  113,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,   58,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  227,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  170,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+       46,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  245,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+       50,  312,   51,  312,  312,  312,  312,  312,   99,  312,
+      100,  312,  312,  312,  312,   97,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,    7,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  217,  312,  312,  312,  312,  148,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  228,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,   47,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  189,  312,  188,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,   16,   17,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,   61,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      196,  312,  312,  312,  312,  312,  312,  102,  312,  101,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      180,  312,  312,  312,  312,  312,  312,  312,  312,  128,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,   80,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,   84,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,   54,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  183,  184,  312,  312,  312,  256,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,    6,  312,  312,  312,  312,  312,  312,  275,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  260,  312,  312,  312,  312,
+      312,  312,  285,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,   42,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,   44,  312,  312,  312,
+      312,  312,  312,  312,  312,  176,  312,  312,  312,  123,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      201,  312,  177,  312,  312,  312,  214,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,   45,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  125,  107,  312,  108,
+      312,  312,  312,  106,  312,  312,  312,  312,  312,  312,
+      312,  312,  143,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  244,  312,  312,  312,  312,  312,
+      312,  312,  312,  178,  312,  312,  312,  312,  312,  181,
+      312,  187,  312,  312,  312,  312,  312,  213,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,   94,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  119,  312,  312,  312,  312,  312,  312,   52,
+
+      312,  312,  312,   26,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,   20,  312,  312,  312,  312,  312,  312,
+       27,   36,  312,  153,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,   69,   71,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  264,  312,
+      312,  312,  225,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  109,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  142,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      279,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  147,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  273,  312,  312,  312,  207,  312,  312,  312,
+      312,  312,  312,  312,  312,  288,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  164,  312,  312,
+      312,  312,  312,  312,  312,  312,  103,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  159,  312,  171,  312,
+
+      312,  312,  312,  312,  131,  312,  312,  312,  312,  312,
+       90,  312,  312,  312,  312,  199,  312,  312,  312,  312,
+      312,  312,  215,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  236,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  124,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  163,
+      312,  312,  312,  312,  312,   72,   73,  312,  312,  312,
+      312,  312,   53,  312,  312,  312,  312,  312,   79,  172,
+      312,  190,  312,  218,  312,  312,  182,  257,  312,  312,
+      312,  312,  312,   65,  312,  174,  312,  312,  312,  312,
+
+      312,    9,  312,  312,  312,  312,  312,   93,  312,  312,
+      312,  312,  249,  312,  312,  312,  198,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  162,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  149,  312,  263,
+      312,  312,  312,  312,  235,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  209,  312,  312,  312,
+
+      312,  255,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  282,  312,  173,  312,
+      312,  312,  312,  312,  312,  312,   64,   66,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,   92,  312,  312,
+      312,  312,  247,  312,  312,  312,  259,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  203,   34,
+       28,   30,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,   35,  312,   29,   31,  312,  312,  312,  312,  312,
+      312,  312,  312,   89,  312,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  205,  202,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+       63,  312,  312,  126,  312,  110,  312,  312,  312,  312,
+      312,  312,  312,  312,  144,   13,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  277,  312,  280,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,   12,  312,
+      312,   22,  312,  312,  312,  312,  312,  253,  312,  312,
+      312,  261,  312,  312,  312,   67,  312,  211,  312,  312,
+      312,  312,  204,  312,  312,   62,  312,  312,  312,  312,
+
+       23,  312,   43,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  158,  157,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  206,  200,  312,  216,
+      312,  312,  265,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+       74,  312,  312,  312,  248,  312,  312,  312,  312,  186,
+      312,  312,  312,  312,  210,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  286,  287,  155,  312,  312,
+       68,  312,  312,  312,  312,  165,  312,  312,  104,  105,
+
+      312,  312,  312,  312,  150,  312,  152,  312,  191,  312,
+      312,  312,  312,  156,  312,  312,  219,  312,  312,  312,
+      312,  312,  312,  312,  133,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  226,  312,  312,  312,
+      312,  312,  312,  312,   24,  312,  258,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  192,  312,
+      312,  246,  312,  281,  312,  185,  312,  312,  312,  312,
+       48,  312,  312,  312,  312,  312,  312,    4,  312,  312,
+      312,  117,  132,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  222,   37,   38,  312,  312,  312,  312,  312,  312,
+      312,  266,  312,  312,  312,  312,  312,  312,  234,  312,
+      312,  312,  312,  312,  312,  312,  195,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,   77,  312,   49,  252,
+      312,  223,  312,  312,  312,  312,   11,  312,  312,  312,
+      312,  312,  312,  312,  116,  312,  312,  312,  312,  193,
+       81,  312,   40,  312,  312,  312,  312,  312,  312,  312,
+      312,  161,  312,  312,  312,  312,  312,  135,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  233,  312,  312,
+      312,  312,  129,  312,  312,  111,  112,  312,  312,  312,
+
+       83,   87,   82,  312,   75,  312,  312,  312,  312,  312,
+       10,  312,  312,  312,  312,  312,  250,  312,  312,  312,
+      312,  293,   39,  312,  312,  312,  312,  312,  160,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,   88,   86,  312,   76,  278,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  179,  312,  312,  312,  312,
+      312,  194,  312,  312,  312,  312,  312,  312,  312,  312,
+      151,   70,  312,  312,  312,  312,  312,  267,  312,  312,
+      312,  312,  312,  312,  312,  230,  312,  312,  229,  130,
+
+      312,   85,  136,  137,  140,  141,  138,  139,   78,  276,
+      312,  312,  251,  312,  312,  312,  312,  154,  312,  312,
+      312,  312,  312,  221,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  167,  166,   41,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  274,  312,  312,  312,  312,
+       91,  312,  220,  312,  243,  271,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,    5,  312,
+      312,  212,  312,  312,  272,  312,  312,  312,  312,  312,
+
+      312,  312,  312,  312,  231,   25,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  232,  312,
+      312,  312,  134,  312,  312,  312,  312,  312,  312,  312,
+      312,  168,  312,  175,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  268,  312,  312,  312,  312,  312,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  292,  312,  312,  239,  312,  312,  312,  312,  312,
+      269,  312,  312,  312,  312,  312,  312,  270,  312,  312,
+      312,  237,  312,  240,  241,  312,  312,  312,  312,  312,
+      238,  242,    0
+
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -742,689 +748,699 @@ static const YY_CHAR yy_meta[41] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static const flex_int16_t yy_base[3063] =
+static const flex_int16_t yy_base[3108] =
     {   0,
         0,    0,   38,   41,   44,   46,   59,   65,   71,   77,
-       90,  112, 2327, 1999,   81, 5940, 5940, 5940,   96,   52,
+       90,  112, 1946, 1584,   81, 6029, 6029, 6029,   96,   52,
       106,   63,  107,  111,   70,  128,  130,  133,   57,   88,
-       76,  135,  141,  117,  148,  145,  160,  164,  185,  177,
-      189,  152, 1735, 5940, 5940, 5940,  107, 1527, 5940, 5940,
-     5940,  165, 1302, 1259, 5940, 5940, 5940,  211, 1131, 5940,
-     5940, 5940,  180,  948, 5940,  217, 5940,  221,  168,  767,
-      225,  231,    0,  237,    0,    0,  226,  231,   85,  180,
-      114,  238,  239,  156,  234,  206,  240,  232,  200,  132,
-      253,  244,  245,  248,  256,  257,  264,  271,  249,  277,
-
-      279,  262,  282,  285,  270,  272,  291,  293,  290,  299,
-      301,  284,  302,  305,  310,  312,  311,  315,  313,  319,
-      322,  318,  324,  327,  326,  193,  221,  334,  329,  340,
-      342,  325,  348,  349,  350,  353,  354,  357,  363,  359,
-      723,  379,  595,  381,  503,  388,  450,  365,  392,  278,
-      396,  400,    0,  377,  392,  401,  367,  394,  396,  402,
-      261,  398,  399,  403,  405,  406,  418,  407,  416,  422,
-      426,  430,  427,  434,  424,  437,  439,  440,  429,  451,
-      453,  454,  446,  455,  456,  458,  461,  462,  477,  464,
-      465,  463,  486,  472,  488,  490,  487,  498,  499,  475,
-
-      506,  504,  511,  516,  512,  489,  514,  501,  517,  491,
-      518,  515,  522,  524,  525,  529,  530,  537,  534,  535,
-      538,  532,  547,  543,  552,  544,  551,  555,  548,  558,
-      566,  569,  549,  576,  559,  572,  573,  578,  581,  585,
-      582,  580,  583,  590,  587,  589,  591,  593,  592,  600,
-      610,  607,  608,  620,  609,  605,  616,  617,  618,  596,
-      628,  627,  623,  632,  638,  629,  636,  639,  641,  643,
-      642,  644,  646,  656,  649,  659,  652,  666,  661,  667,
-      664,  676,  651,  662,  672,  673,  674,  678,  677,  679,
-      684,  687,  688,  690,  691,  685,  698,  696,  700,  713,
-
-      701,  702,  704,  714,  715,  716,  724,  737,  727,  738,
-      728,  734,  742,  743,  707,  750,  746,  744,  753,  754,
-      756,  757,  761,  768,  769, 5940,  760,  773,  771,  774,
-      782,  783,  784,  789,  785,  763,  796,  800,  797,  803,
-      825,  791,  801,  804,  814,  795, 5940,  815,  807,  849,
-      817,  827,  839,  831,  835,  823,  830,  850,  843,  853,
-      840,  854,  855,  873,  857,  858,  870,  860,  871,  872,
-      885,  881,  883,  884,  886,  894,  889,  891,  892,  901,
-      893,  895,  902,  905,  904,  908,  916,  909,  915,  917,
-      921,  922,  925,  927,  929,  923,  926,  933,  950,  931,
-
-      945,  953,  943,  954,  941,  955,  958,  963,  960,  964,
-      966,  974,  969,  970,  972,  975,  976,  978,  982,  983,
-      984,  986,  988,  992,  989,  999,  990,  997, 1004, 1006,
-     5940, 1007, 1009, 1011, 1012, 1013, 1010, 5940, 1014, 1015,
-     1017, 1026, 1016, 1029, 1036, 1024, 1037, 1039, 1040, 1043,
-     1050, 1027, 1046, 1057, 1052, 1055, 1056, 1053, 1059, 1062,
-     1061, 1064, 1065, 1068, 1070, 1088, 5940, 1071, 1077, 1080,
-     1079, 1085, 1082, 1090, 1097, 1100, 1093, 1106, 1116, 1103,
-     1117, 1111, 1113, 1072, 1118, 1122, 1124, 1125, 1126, 1127,
-     1128, 1130, 1129, 1132, 1140, 1136, 5940, 1144, 1145, 1154,
-
-     1147, 1152, 1156, 1157, 1158, 1160, 1161, 1163, 1162, 1166,
-     1169, 1183, 1170, 1185, 1172, 1186, 1180, 1181, 1187, 1188,
-     1190, 1195, 1203, 1200, 1205, 1208, 1216, 1215, 1218, 1225,
-     1201, 1220, 1193, 1212, 1221, 1224, 1228, 1226, 1232, 1230,
-     1241, 1236, 1237, 1238, 1239, 1248, 1245, 1244, 1253, 1246,
-     1262, 1252, 1257, 1266, 1267, 1254, 1260, 5940, 1280, 1269,
-     1276, 1277, 1282, 1283, 1284, 1285, 1288,  813, 1291, 1290,
-     1292, 1294, 1296, 1297, 1298, 1299, 1307, 1315, 1311, 1310,
-     1323, 1322, 1324, 1300, 1326, 1333, 1330, 1334, 1336, 1332,
-     1344, 1341, 1342, 1331, 1352, 1345, 1347, 1348, 1349, 1357,
-
-     1359, 1360, 1367, 1362, 1365, 1377, 1372, 1368, 1379, 1375,
-     1380, 1383, 1384, 1385, 1386, 1387, 1395, 1388, 1390, 1391,
-     1396, 1397, 1398, 1400, 1404, 1414, 1409, 1410, 1413, 1416,
-     1420, 1418, 1421, 1425, 1426, 1427, 1428, 1429, 1434, 1431,
-     1440, 1433, 1448, 1439, 1441, 1449, 1452, 1456, 1457, 1458,
-     1465, 1454, 1466, 1467, 1468, 1469, 1471, 1474, 1477, 1481,
-     1475, 1484, 1486, 1488, 1487, 1491, 1494, 1497, 1498, 5940,
-     1492, 1505, 1500, 1506, 1504, 1509, 1512, 1519, 1514, 1517,
-     1515, 1518, 1521, 1544, 5940, 1523, 5940, 5940, 1525, 5940,
-     5940, 1526, 1531, 1529, 1528, 1539, 1546, 1548, 1536, 1551,
-
-     1550, 1558, 1571, 1555, 1561, 1562, 1567, 1574, 1569, 1579,
-     1584, 1576, 1587, 1593, 1594, 1595, 1602, 1603, 1596, 1599,
-     1606, 1604, 1607, 1609, 1611, 1613, 1615, 1619, 1614, 1621,
-     1616, 1631, 1622, 1635, 1642, 5940, 1639, 1643, 1646, 1645,
-     1653, 1648, 1649, 1652, 1657, 1659, 1654, 1661, 1663, 1623,
-     1664, 1666, 1667, 1669, 1678, 1670, 5940, 1671, 1673, 1681,
-     1675, 1685, 1687, 1690, 1674, 1691, 1693, 1702, 1694, 1697,
-     1698, 1705, 1557, 1707, 5940, 1709, 1716, 1703, 1708, 1719,
-     1721, 1722, 1723, 1726, 1720, 1725, 1727, 1732, 1728, 1736,
-     1734, 1737, 1733, 1739, 1738, 1751, 1754, 1756, 1757, 1758,
-
-     1760, 1761, 1762, 1763, 1764, 1766, 1774, 1770, 1778, 1771,
-     1779, 1781, 1788, 1776, 1787, 1789, 1790, 1796, 1804, 1800,
-     1801, 1793, 1808, 1805, 1810, 1812, 1813, 1815, 1816, 1817,
-     1822, 1820, 1824, 1827, 1826, 5940, 1828, 1829, 5940, 1833,
-     1834, 1856, 1835, 1837, 1839, 1847, 1838, 1858, 1849, 1857,
-     1868, 1860, 1876, 1866, 1878, 1869, 1881, 1879, 1883, 1885,
-     1887, 1889, 1892, 1901, 1906, 1851, 1902, 1910, 1890, 1905,
-     1893, 1925, 1907, 1909, 1913, 1916, 1917, 1915, 1840, 1921,
-     1922, 1923, 1930, 1932, 5940, 1940, 1943, 1937, 1947, 1954,
-     1950, 1938, 5940, 1949, 1952, 1953, 1965, 1962, 1963, 1967,
-
-     1964, 1966, 1968, 1973, 1970, 1974, 1975, 1976, 1992, 5940,
-     1978, 5940, 1977, 1987, 1989, 1990, 1995, 1996, 1997, 1998,
-     5940, 5940, 2000, 2001, 2014, 2012, 2009, 5940, 2016, 2024,
-     2025, 2017, 2019, 2021, 2027, 2030, 2031, 2034, 2035, 2042,
-     2037, 2039, 2040, 5940, 2047, 2038, 2048, 2051, 2049, 2057,
-     2058, 2060, 5940, 2061, 2064, 2068, 2075, 2071, 2073, 2066,
-     2076, 2077, 2081, 2083, 2085, 2086, 2087, 2094, 2096, 2092,
-     2093, 2101, 2109, 5940, 2095, 2091, 2110, 2107, 2115, 2108,
-     2116, 2118, 2119, 2120, 2121, 2124, 2126, 2127, 2134, 2135,
-     2130, 2139, 2141, 2131, 2133, 2137, 2152, 2143, 2151, 2153,
-
-     2154, 5940, 2155, 2157,  124, 2159, 2162, 2158, 2163, 2166,
-     2165, 2167, 2182, 2184, 2180, 2169, 2181, 2183, 2188, 2189,
-     2190, 2191, 2192, 2193, 2195, 5940, 2201, 2198, 2203, 2196,
-     2207, 2204, 2215, 5940, 2216, 2218, 2226, 2228, 2219, 2206,
-     2222, 2227, 2230, 2232, 2236, 2238, 2240, 2242, 5940, 2247,
-     2244, 2248, 2250, 2252, 2254, 2256, 2259, 2260, 2262, 2264,
-     2263, 2266, 2267, 2268, 2269, 2271, 2277, 2280, 2272, 2282,
-     2284, 5940, 2291, 2286, 2288, 2294, 2298, 2297, 2305, 2301,
-     2307, 2306, 2310, 2322, 2312, 2308, 2324, 2315, 2323, 2329,
-     2332, 2334, 2337, 2343, 2333, 2346, 2348, 2336, 2340, 2350,
-
-     2349, 2352, 2360, 2355, 2367, 2368, 2365, 2371, 2363, 2384,
-     2389, 2380, 5940, 2378, 2388, 2376, 2390, 2398, 2393, 2395,
-     2396, 2402, 2401, 2404, 2405, 2412, 2407, 2409, 2413, 2416,
-     2414, 2422, 2418, 2424, 2425, 2433, 2426, 2435, 2364, 5940,
-     2437, 2438, 2429, 2442, 2445, 2439, 2447, 2452, 2450, 2454,
-     2456, 2458, 2460, 2461, 2462, 2463, 2465, 2467, 2466, 5940,
-     2470, 2471, 2476, 2478, 2479, 2485, 2488, 2491, 2489, 2495,
-     2496, 2497, 2498, 5940, 2505, 2506, 2503, 2507, 2509, 2510,
-     2512, 2515, 2516, 5940, 2517, 2519, 2526, 2527, 2522, 5940,
-     2530, 2525, 2531, 2532, 2533, 2534, 2540, 2535, 2538, 2543,
-
-     2548, 2550, 2546, 2554, 5940, 2556, 2566, 2558, 2562, 2564,
-     2567, 2568, 2570, 2574, 2578, 2573, 5940, 2590, 2589, 2586,
-     2600, 2577, 2591, 2592, 2598, 2595, 2601, 2602, 5940, 2604,
-     2605, 2607, 2608, 2611, 2612, 2614, 2626, 2616, 2619, 2621,
-     2624, 2627, 2629, 2631, 2634, 2632, 2640, 2643, 2644, 2646,
-     2647, 2649, 2650, 2657, 2660, 2662, 2664, 5940, 2667, 2668,
-     2669, 2656, 2659, 2671, 2675, 2676, 2679, 2680, 2684, 2681,
-     2683, 2691, 2693, 2694, 2696, 2698, 2700, 2701, 2703, 2704,
-     2705, 2706, 2713, 2711, 2709, 2718, 2715, 2720, 2727, 2722,
-     2728, 2729, 2730, 2731, 2732, 2736, 2737, 2739, 2740, 2744,
-
-     2755, 2756, 2746, 2757, 2758, 2759, 2760, 5940, 2763, 2765,
-     2764, 2769, 2774, 2771, 2781, 2777, 2778, 2782, 2786, 2789,
-     2783, 2788, 2794, 2801, 2797, 5940, 2798, 5940, 2799, 2800,
-     2807, 2810, 2802, 5940, 2812, 5940, 2815, 2824, 2809, 2813,
-     5940, 2827, 2817, 2819, 2831, 2821, 2826, 2833, 2834, 2835,
-     2840, 2838, 2842, 2843, 2844, 2846, 2848, 2850, 2854, 2859,
-     2861, 2851, 2862, 2853, 2867, 2870, 2864, 2872, 5940, 2880,
-     2873, 2876, 2881, 2882, 2884, 2885, 2887, 2888, 2893, 2889,
-     2894, 2895, 2902, 2905, 2903, 2906, 2917, 5940, 2907, 2919,
-     2912, 2914, 5940, 2922, 2916, 2923, 2928, 2925, 2930, 2932,
-
-     2933, 2934, 2937, 2938, 2950, 2951, 2941, 2952, 5940, 2954,
-     2957, 2942, 2961, 2965, 2969, 2943, 2972, 2966, 2970, 2976,
-     2977, 2978, 2979, 2980, 2987, 2988, 2985, 2992, 2984, 2991,
-     2994, 2998, 3000, 3001, 3002, 3005, 3006, 3004, 3010, 3014,
-     3009, 3011, 3012, 3013, 5940, 3025, 3015, 3027, 3036, 3028,
-     3030, 3017, 3033, 3038, 3039, 3042, 3046, 3040, 5940, 3045,
-     5940, 3048, 3050, 3062, 3064, 3057, 3052, 3068, 3067, 3059,
-     3074, 3075, 3076, 3077, 3078, 3079, 3082, 3083, 3089, 3090,
-     3086, 3087, 3091, 3097, 3099, 3100, 3102, 5940, 5940, 3103,
-     3105, 3108, 3106, 3110, 3112, 3120, 3118, 3111, 3124, 3125,
-
-     3132, 5940, 3133, 3134, 3136, 3137, 3144, 3139, 3141, 3152,
-     3148, 3156, 3154, 5940, 3151, 3155, 3165, 3161, 3163, 3168,
-     5940, 3167, 5940, 3164, 3170, 3173, 3176, 3177, 3178, 3179,
-     3180, 3187, 3188, 3198, 3184, 3195, 3196, 3199, 3200, 3207,
-     3202, 3203, 3204, 5940, 3206, 3209, 3212, 3220, 3221, 3223,
-     3227, 3210, 5940, 3217, 3231, 3234, 3235, 3237, 3239, 3240,
-     3241, 3243, 3245, 3242, 3244, 3252, 3250, 3249, 3259, 3269,
-     3260, 3271, 5940, 3272, 3266, 3279, 3281, 3274, 3276, 3282,
-     3283, 3284, 3287, 3289, 3288, 3290, 3292, 3294, 3291, 3301,
-     3295, 3308, 3297, 3311, 3317, 3318, 3298, 3314, 3321, 3322,
-
-     3325, 3324, 3328, 3331, 3335, 3332, 3344, 3345, 3336, 3339,
-     3348, 3349, 3356, 3351, 5940, 3361, 3341, 3364, 3362, 3363,
-     3368, 3369, 3371, 3372, 3373, 3374, 3381, 3376, 5940, 3383,
-     3378, 3388, 3389, 3380, 3403, 3398, 3379, 3401, 3405, 3402,
-     3408, 3406, 3410, 3411, 3414, 3415, 5940, 5940, 3417, 3418,
-     3420, 5940, 3421, 3419, 3431, 3424, 3427, 3434, 3251, 3433,
-     3436, 3437, 3439, 3441, 5940, 3445, 3452, 3444, 3447, 3459,
-     3461, 3467, 3451, 3460, 3458, 3463, 3468, 3470, 3471, 3472,
-     3474, 3483, 3476, 3479, 3481, 5940, 3484, 3486, 3487, 3491,
-     3488, 3495, 5940, 3493, 3499, 3500, 3502, 3514, 3505, 3515,
-
-     3517, 3497, 3519, 3520, 3522, 3521, 3523, 3530, 3525, 3529,
-     3536, 3537, 3528, 5940, 3542, 3544, 3545, 3547, 3549, 3558,
-     3556, 3559, 3554, 3561, 3562, 3569, 5940, 3564, 3567, 3570,
-     3568, 3578, 3573, 3581, 3577, 5940, 3579, 3583, 3585, 5940,
-     3584, 3596, 3599, 3601, 3586, 3594, 3603, 3605, 3607, 3608,
-     5940, 3611, 5940, 3612, 3592, 3618, 5940, 3614, 3620, 3622,
-     3624, 3621, 3628, 3629, 3636, 3625, 3631, 3637, 3638, 3639,
-     3641, 3648, 3644, 3647, 3649, 3650, 5940, 3651, 3653, 3659,
-     3660, 3665, 3654, 3658, 3670, 3669, 5940, 5940, 3673, 5940,
-     3677, 3676, 3678, 5940, 3681, 3683, 3690, 3685, 3686, 3689,
-
-     3699, 3693, 5940, 3688, 3700, 3703, 3705, 3706, 3707, 3709,
-     3710, 3708, 3711, 3712, 5940, 3713, 3716, 3724, 3717, 3725,
-     3729, 3736, 3730, 5940, 3737, 3738, 3739, 3743, 3744, 5940,
-     3746, 5940, 3747, 3749, 3752, 3754, 3753, 5940, 3759, 3760,
-     3763, 3766, 3768, 3767, 3770, 3771, 3777, 3778, 3785, 3781,
-     3780, 3782, 5940, 3783, 3787, 3789, 3796, 3784, 3791, 3800,
-     3803, 3804, 3805, 3810, 3807, 3814, 3816, 3818, 3820, 3812,
-     5940, 3822, 3824, 3823, 3838, 3833, 3828, 5940, 3829, 3843,
-     3845, 5940, 3836, 3835, 3847, 3852, 3839, 3846, 3853, 3854,
-     3858, 5940, 3859, 3860, 3861, 3862, 3865, 3866, 5940, 5940,
-
-     3874, 5940, 3876, 3863, 3877, 3878, 3879, 3885, 3884, 3888,
-     3890, 3887, 3891, 3898, 3899, 3908, 3911, 3915, 3910, 3914,
-     3900, 5940, 5940, 3917, 3918, 3921, 3924, 3925, 3927, 3928,
-     3935, 3931, 3937, 3941, 3942, 3949, 5940, 3948, 3934, 3951,
-     5940, 3932, 3945, 3953, 3956, 3958, 3959, 3962, 3960, 3961,
-     3964, 3968, 3965, 3970, 3974, 3972, 3975, 3973, 3983, 3981,
-     3982, 3990, 5940, 3991, 3984, 3993, 3995, 3996, 3997, 4001,
-     4002, 4004, 5940, 4006, 4008, 4010, 4011, 4005, 4015, 4026,
-     4030, 4032, 4023, 4033, 4034, 4036, 4040, 4037, 5940, 4044,
-     4041, 4043, 4047, 4051, 4053, 4054, 4056, 4057, 4065, 4062,
-
-     4066, 4068, 4070, 4058, 4074, 4076, 4060, 5940, 4080, 4082,
-     4078, 4087, 4084, 4088, 4089, 4095, 4099, 4091, 4093, 4100,
-     4104, 5940, 4101, 4105, 4107, 4109, 4115, 4106, 4112, 4116,
-     5940, 4118, 4120, 4123, 4124, 4126, 4129, 4132, 4133, 4136,
-     4135, 4139, 5940, 4141, 4143, 4146, 4149, 4150, 4152, 4155,
-     4154, 5940, 4156, 4162, 4164, 4171, 4166, 4175, 4172, 4176,
-     4168, 4170, 4182, 4186, 4188, 4189, 4190, 4178, 4200, 4202,
-     4201, 5940, 4184, 5940, 4203, 4206, 4214, 4209, 4191, 5940,
-     4215, 4216, 4220, 4221, 4217, 5940, 4222, 4223, 4225, 4229,
-     5940, 4224, 4228, 4230, 4235, 4238, 4242, 5940, 4245, 4246,
-
-     4248, 4257, 4258, 4255, 4256, 4259, 4261, 4262, 4263, 4264,
-     4272, 4267, 4269, 5940, 4271, 4277, 4279, 4283, 4284, 4285,
-     4286, 4292, 4287, 5940, 4289, 4295, 4296, 4297, 4298, 4299,
-     4301, 4309, 4304, 4307, 5940, 4308, 4312, 4320, 4009, 4321,
-     5940, 5940, 4313, 4328, 4330, 4318, 4331, 5940, 4322, 4340,
-     4335, 4337, 4339, 5940, 5940, 4342, 5940, 4338, 5940, 4343,
-     4345, 5940, 5940, 4346, 4349, 4350, 4353, 4360, 5940, 4363,
-     5940, 4370, 4365, 4352, 4354, 4367, 5940, 4369, 4371, 4374,
-     5940, 4377, 4384, 4379, 4380, 5940, 4382, 4385, 4387, 5940,
-     4389, 4392, 4393, 4394, 4399, 4396, 4400, 4403, 4406, 4407,
-
-     4409, 4410, 4411, 4422, 4424, 4426, 4428, 4429, 4413, 4432,
-     4433, 4435, 4438, 4439, 4440, 4442, 4444, 4445, 4447, 4449,
-     4452, 4453, 4454, 4455, 4456, 4457, 4459, 4466, 4469, 4471,
-     4470, 4472, 4474, 4473, 4475, 4477, 4481, 4483, 4484, 5940,
-     4482, 4485, 4488, 4415, 4491, 4501, 4503, 4494, 4510, 4512,
-     5940, 4514, 5940, 4516, 4502, 4518, 4504, 5940, 4519, 4522,
-     4521, 4524, 4525, 4526, 4528, 4527, 4531, 4532, 4535, 5940,
-     4538, 4533, 4542, 4553, 5940, 4545, 4557, 4541, 4548, 4558,
-     4560, 4561, 4562, 4567, 4563, 4569, 4571, 4578, 4573, 4574,
-     4576, 4581, 4564, 4577, 4585, 4592, 4588, 4596, 4600, 5940,
-
-     4593, 5940, 4601, 4602, 4603, 4604, 4606, 4605, 4607, 5940,
-     5940, 4608, 4613, 4618, 4614, 4609, 4620, 4630, 5940, 4622,
-     4631, 4633, 4623, 5940, 4638, 4639, 4641, 5940, 4642, 4643,
-     4644, 4646, 4647, 4650, 4651, 4653, 4655, 4657, 4661, 5940,
-     5940, 5940, 5940, 4663, 4665, 4668, 4670, 4672, 4673, 4675,
-     4677, 4674, 5940, 4679, 5940, 5940, 4681, 4688, 4680, 4690,
-     4691, 4692, 4696, 4698, 5940, 4697, 4702, 4703, 4700, 4710,
-     4714, 4716, 4717, 4701, 4718, 4726, 4724, 4727, 4725, 4730,
-     4732, 4734, 5940, 5940, 4737, 4739, 4741, 4748, 4746, 4749,
-     4758, 4753, 4755, 4756, 4759, 4761, 4743, 4768, 4772, 4770,
-
-     4767, 5940, 4771, 4777, 5940, 4773, 5940, 4778, 4781, 4745,
-     4782, 4784, 4787, 4788, 4790, 5940, 5940, 4791, 4792, 4794,
-     4798, 4800, 4802, 4801, 4804, 4805, 5940, 4806, 5940, 4807,
-     4814, 4809, 4815, 4823, 4826, 4828, 4830, 4825, 4831, 5940,
-     4832, 4834, 5940, 4835, 4837, 4838, 5940, 4842, 4845, 4849,
-     5940, 4855, 4846, 4852, 5940, 4859, 5940, 4856, 4860, 4861,
-     4868, 5940, 4863, 4869, 5940, 4872, 4875, 4877, 4866, 5940,
-     4864, 5940, 4878, 4885, 4886, 4889, 4881, 4891, 4892, 4893,
-     4894, 4901, 4900, 4902, 5940, 5940, 4910, 4897, 4903, 4907,
-     4912, 4919, 4914, 4917, 4916, 5940, 5940, 4924, 5940, 4922,
-
-     4925, 5940, 4926, 4931, 4932, 4933, 4935, 4936, 4940, 4942,
-     4943, 4944, 4945, 4946, 4952, 4964, 4948, 4962, 4968, 4970,
-     4972, 4974, 4966, 4976, 4977, 4978, 4979, 4980, 4983, 5940,
-     4985, 4986, 4987, 5940, 4991, 4992, 4994, 4996, 5940, 5007,
-     5002, 5008, 5009, 5940, 4995, 5015, 5012, 5010, 5020, 5027,
-     5023, 5022, 5940, 5940, 5940, 5024, 5033, 5940, 5038, 5025,
-     5028, 5030, 5940, 5034, 5040, 5940, 5940, 5041, 5042, 5044,
-     5055, 5940, 5045, 5940, 5046, 5940, 5054, 5056, 5062, 5060,
-     5940, 5065, 5071, 5940, 5074, 5077, 5079, 5080, 5068, 5081,
-     5082, 5940, 5090, 5086, 5092, 5094, 5083, 5085, 5098, 5095,
-
-     5102, 5099, 5105, 5940, 5107, 5109, 5110, 5116, 5108, 5118,
-     5112, 5940, 5120, 5940, 5121, 5122, 5125, 5128, 5123, 5126,
-     5050, 5131, 5130, 5141, 5138, 5940, 5143, 5147, 5940, 5144,
-     5940, 5149, 5940, 5150, 5151, 5152, 5153, 5940, 5155, 5159,
-     5160, 5161, 5940, 5162, 5164, 5170, 5940, 5940, 5171, 5181,
-     5172, 5173, 5185, 5187, 5174, 5189, 5182, 5190, 5176, 5198,
-     5197, 5200, 5201, 5203, 5204, 5205, 5940, 5940, 5940, 5210,
-     5209, 5217, 5214, 5215, 5225, 5220, 5940, 5223, 5226, 5224,
-     5233, 5230, 5235, 5940, 5232, 5236, 5237, 5239, 5241, 5242,
-     5246, 5940, 5250, 5257, 5253, 5245, 5260, 5264, 5267, 5269,
-
-     5270, 5940, 5272, 5940, 5940, 5273, 5940, 5274, 5276, 5277,
-     5278, 5940, 5281, 5283, 5282, 5284, 5286, 5940, 5294, 5287,
-     5289, 5290, 5940, 5940, 5301, 5940, 5304, 5305, 5306, 5315,
-     5311, 5313, 5317, 5314, 5940, 5312, 5318, 5322, 5324, 5325,
-     5940, 5326, 5328, 5329, 5330, 5333, 5337, 5339, 5340, 5341,
-     5940, 5343, 5335, 5358, 5354, 5940, 5342, 5360, 5940, 5940,
-     5345, 5364, 5365, 5940, 5940, 5940, 5367, 5940, 5371, 5377,
-     5381, 5385, 5368, 5940, 5387, 5376, 5384, 5940, 5380, 5388,
-     5390, 5392, 5940, 5940, 5389, 5396, 5393, 5401, 5402, 5940,
-     5404, 5406, 5411, 5419, 5421, 5409, 5423, 5425, 5432, 5405,
-
-     5413, 5427, 5429, 5430, 5436, 5433, 5440, 5449, 5445, 5447,
-     5454, 5455, 5940, 5940, 5457, 5940, 5940, 5459, 5462, 5464,
-     5466, 5468, 5470, 5472, 5940, 5407, 5474, 5475, 5476, 5477,
-     5940, 5479, 5481, 5478, 5482, 5487, 5485, 5489, 5491, 5940,
-     5940, 5483, 5500, 5492, 5505, 5494, 5940, 5507, 5502, 5508,
-     5509, 5511, 5513, 5516, 5940, 5515, 5517, 5940, 5940, 5519,
-     5940, 5940, 5940, 5940, 5940, 5940, 5940, 5940, 5520, 5940,
-     5524, 5528, 5536, 5539, 5940, 5525, 5533, 5444, 5529, 5540,
-     5940, 5541, 5544, 5545, 5551, 5543, 5546, 5552, 5556, 5559,
-     5557, 5560, 5561, 5562, 5566, 5563, 5567, 5569, 5940, 5940,
-
-     5940, 5568, 5570, 5580, 5572, 5589, 5591, 5594, 5596, 5583,
-     5586, 5597, 5598, 5599, 5601, 5605, 5613, 5608, 5609, 5610,
-     5611, 5617, 5612, 5614, 5619, 5940, 5623, 5940, 5624, 5940,
-     5940, 5629, 5634, 5632, 5625, 5636, 5643, 5639, 5641, 5645,
-     5646, 5648, 5650, 5940, 5652, 5655, 5940, 5656, 5657, 5940,
-     5658, 5660, 5662, 5659, 5663, 5666, 5669, 5677, 5668, 5940,
-     5940, 5671, 5679, 5680, 5684, 5687, 5694, 5689, 5693, 5695,
-     5696, 5686, 5708, 5940, 5704, 5706, 5710, 5940, 5712, 5707,
-     5713, 5714, 5715, 5723, 5718, 5719, 5940, 5721, 5940, 5725,
-     5727, 5730, 5728, 5729, 5731, 5740, 5738, 5742, 5940, 5745,
-
-     5749, 5746, 5751, 5753, 5756, 5757, 5758, 5760, 5762, 5766,
-     5770, 5772, 5773, 5763, 5776, 5774, 5940, 5784, 5775, 5940,
-     5785, 5786, 5778, 5787, 5788, 5940, 5796, 5792, 5798, 5799,
-     5802, 5803, 5940, 5805, 5808, 5809, 5940, 5813, 5940, 5940,
-     5814, 5812, 5815, 5821, 5823, 5940, 5940, 5940, 5848, 5855,
-     5862, 5869, 5876,   88, 5883, 5890, 5897, 5904, 5911, 5918,
-     5925, 5932
+       76,  135,  141,  117,  163,  134,  151,  165,  174,  179,
+      190,  145, 1331, 6029, 6029, 6029,  107, 1281, 6029, 6029,
+     6029,  165, 1175, 1158, 6029, 6029, 6029,  212, 1094, 6029,
+     6029, 6029,  216,  816, 6029,  220, 6029,  224,  157,  782,
+      228,  234,    0,  240,    0,    0,  201,  225,   85,  182,
+      176,  232,  234,  114,  236,  209,  241,  224,  238,  244,
+      252,  248,  249,  256,  254,  258,  257,  259,  266,  271,
+
+      279,  251,  278,  281,  282,  285,  289,  287,  292,  295,
+      296,  297,  307,  300,  308,  310,  314,  313,  315,  320,
+      322,  321,  161,  324,  331,  325,  159,  327,  329,  337,
+      332,  342,  346,  352,  351,  354,  358,  357,  359,  360,
+      356,  729,  381,  686,  383,  599,  390,  452,  286,  394,
+      189,  398,  402,    0,  379,  394,  403,  387,  396,  398,
+      364,  400,  401,  404,  409,  407,  415,  416,  418,  421,
+      422,  431,  430,  432,  434,  429,  437,  439,  445,  438,
+      455,  447,  454,  456,  460,  461,  462,  463,  464,  481,
+      466,  472,  467,  490,  488,  497,  500,  486,  502,  504,
+
+      474,  511,  507,  514,  515,  510,  522,  518,  519,  520,
+      521,  523,  524,  526,  528,  529,  534,  477,  530,  542,
+      543,  535,  547,  537,  552,  544,  560,  555,  556,  564,
+      557,  558,  573,  574,  569,  577,  570,  465,  578,  581,
+      589,  590,  585,  572,  586,  593,  592,  594,  596,  598,
+      597,  606,  614,  610,  612,  619,  609,  618,  621,  622,
+      623,  601,  633,  625,  635,  629,  641,  634,  642,  644,
+      640,  646,  647,  649,  648,  660,  651,  664,  666,  669,
+      655,  670,  662,  678,  673,  674,  675,  677,  679,  681,
+      682,  683,  685,  688,  694,  689,  698,  691,  705,  708,
+
+      697,  719,  712,  702,  710,  722,  713,  717,  714,  732,
+      746,  741,  733,  742,  747,  749,  751,  724,  754,  755,
+      748,  761,  762,  752,  767,  768,  775,  776, 6029,  770,
+      773,  786,  784,  791,  792,  785,  798,  772,  793,  806,
+      804,  805,  809,  831,  807,  808,  811,  813,  821, 6029,
+      820,  824,  855,  825,  833,  849,  845,  815,  837,  844,
+      853,  841,  872,  861,  863,  864,  881,  865,  873,  876,
+      877,  879,  880,  897,  889,  882,  886,  894,  905,  900,
+      901,  904,  913,  903,  906,  912,  907,  914,  915,  920,
+      926,  918,  929,  930,  931,  933,  932,  936,  935,  938,
+
+      948,  956,  943,  953,  951,  958,  960,  962,  966,  963,
+      969,  970,  971,  972,  980,  977,  978,  979,  983,  985,
+      986,  989,  991,  992,  994,  996,  998,  997, 1003, 1007,
+     1005, 1013,  846, 6029, 1015, 1008, 1017, 1018, 1019, 1023,
+     1021, 1020, 6029, 1024, 1030, 1022, 1037, 1034, 1039, 1046,
+     1035, 1045, 1052, 1047, 1048, 1060, 1038, 1059, 1070, 1057,
+     1067, 1065, 1068, 1069, 1074, 1066, 1075, 1076, 1077, 1078,
+     1097, 6029, 1082, 1084, 1086, 1085, 1093, 1106, 1115, 1107,
+     1095, 1112, 1118, 1114, 1121, 1126, 1125, 1130, 1131, 1133,
+     1134, 1136, 1140, 1138, 1141, 1139, 1142, 1145, 1143, 1144,
+
+     1149, 6029, 1156, 1163, 1170, 1157, 1166, 1168, 1171, 1173,
+     1083, 1172, 1177, 1178, 1174, 1184, 1192, 1179, 1195, 1193,
+     1194, 1196, 1198, 1199, 1200, 1202, 1201, 1215, 1206, 1208,
+     1223, 1226, 1225, 1228, 1235, 1212, 1231, 1232, 1230, 1236,
+     1238, 1240, 1216, 1242, 1243, 1252, 1250, 1248, 1251, 1253,
+     1263, 1255, 1258, 1259, 1264, 1268, 1265, 1270, 1274, 1275,
+     1276, 1277, 6029, 1284, 1285, 1288, 1289, 1295, 1296, 1297,
+     1287, 1298, 1301, 1304, 1305, 1306, 1312, 1309, 1313, 1307,
+     1319, 1321, 1320, 1324, 1322, 1337, 1336, 1338, 1327, 1340,
+     1341, 1329, 1350, 1342, 1355, 1353, 1352, 1364, 1359, 1360,
+
+     1351, 1367, 1362, 1365, 1375, 1366, 1368, 1376, 1379, 1384,
+     1377, 1385, 1393, 1394, 1388, 1396, 1391, 1399, 1400, 1402,
+     1403, 1404, 1405, 1412, 1407, 1408, 1409, 1414, 1415, 1416,
+     1419, 1422, 1432, 1427, 1428, 1430, 1434, 1438, 1436, 1439,
+     1443, 1444, 1445, 1446, 1447, 1452, 1450, 1457, 1451, 1466,
+     1458, 1459, 1467, 1470, 1476, 1472, 1482, 1483, 1473, 1485,
+     1475, 1486, 1489, 1490, 1494, 1493, 1497, 1495, 1503, 1504,
+     1506, 1505, 1508, 1513, 1511, 1515, 6029, 1516, 1523, 1518,
+     1521, 1527, 1528, 1529, 1536, 1532, 1534, 1531, 1533, 1537,
+     1559, 6029, 1545, 6029, 6029, 1544, 6029, 6029, 1542, 1546,
+
+     1550, 1563, 1554, 1569, 1562, 1556, 1572, 1565, 1582, 1587,
+     1543, 1575, 1577, 1583, 1590, 1598, 1600, 1601, 1603, 1609,
+     1611, 1612, 1614, 1621, 1622, 1580, 1604, 1613, 1625, 1627,
+     1626, 1628, 1632, 1630, 1635, 1631, 1638, 1633, 1643, 1648,
+     1640, 1657, 6029, 1654, 1658, 1666, 1662, 1669, 1661, 1665,
+     1668, 1642, 1673, 1670, 1674, 1675, 1677, 1679, 1682, 1681,
+     1686, 1687, 1683, 1694, 1689, 6029, 1690, 1693, 1701, 1695,
+     1707, 1709, 1703, 1705, 1711, 1712, 1719, 1715, 1721, 1722,
+     1723, 1724, 1726, 6029, 1731, 1728, 1734, 1735, 1738, 1742,
+     1743, 1739, 1744, 1745, 1746, 1747, 1749, 1752, 1756, 1757,
+
+     1753, 1758, 1760, 1770, 1768, 1773, 1780, 1772, 1775, 1781,
+     1783, 1785, 1786, 1787, 1789, 1794, 1790, 1799, 1795, 1802,
+     1803, 1807, 1798, 1800, 1813, 1810, 1821, 1825, 1823, 1814,
+     1816, 1830, 1827, 1834, 1828, 1835, 1837, 1838, 1839, 1841,
+     1844, 1845, 1849, 1848, 6029, 1850, 1855, 6029, 1851, 1852,
+     1875, 1856, 1858, 1861, 1860, 1863, 1864, 1870, 1879, 1872,
+     1881, 1898, 1887, 1890, 1889, 1900, 1899, 1902, 1903, 1908,
+     1909, 1910, 1918, 1919, 1883, 1925, 1927, 1914, 1922, 1924,
+     1943, 1926, 1928, 1931, 1934, 1939, 1930, 1947, 1950, 1937,
+     1948, 1953, 1954, 6029, 1965, 1968, 1960, 1961, 1972, 1970,
+
+     1973, 6029, 1976, 1977, 1978, 1987, 1980, 1982, 1983, 1984,
+     1991, 1990, 1995, 1993, 1997, 2003, 1996, 2014, 6029, 1999,
+     6029, 1998, 2000, 2011, 2017, 2016, 2018, 2019, 2021, 6029,
+     6029, 2022, 2023, 2028, 2041, 2036, 2025, 2037, 6029, 2038,
+     2048, 2051, 2043, 2039, 2044, 2049, 2056, 2057, 2065, 2058,
+     2066, 2061, 2063, 2070, 6029, 2071, 2062, 2075, 2077, 2073,
+     2081, 2085, 2079, 6029, 2087, 2088, 2092, 2100, 2096, 2097,
+     2099, 2102, 2107, 2101, 2103, 2109, 2110, 2111, 2118, 2120,
+     2116, 2123, 2125, 2132, 6029, 2115, 2127, 2137, 2134, 2136,
+     2140, 2141, 2138, 2142, 2143, 2144, 2148, 2151, 2152, 2159,
+
+     2160, 2157, 2162, 2165, 2158, 2161, 2168, 2173, 2170, 2174,
+     2176, 2178, 6029, 2179, 2182,  124, 2185, 2186, 2184, 2187,
+     2191, 2190, 2193, 2208, 2210, 2206, 2205, 2209, 2212, 2215,
+     2216, 2217, 2218, 2220, 2219, 2222, 6029, 2224, 2225, 2228,
+     2230, 2236, 2231, 2233, 6029, 2243, 2235, 2254, 2248, 2250,
+     2194, 2256, 2258, 2257, 2260, 2259, 2262, 2261, 2263, 6029,
+     2269, 2274, 2280, 2270, 2281, 2273, 2283, 2284, 2287, 2288,
+     2289, 2291, 2293, 2296, 2294, 2295, 2297, 2298, 2303, 2305,
+     2309, 2310, 6029, 2317, 2312, 2314, 2320, 2323, 2321, 2336,
+     2324, 2327, 2331, 2337, 2345, 2334, 2339, 2352, 2355, 2357,
+
+     2342, 2365, 2361, 2367, 2369, 2360, 2373, 2375, 2363, 2371,
+     2376, 2377, 2379, 2382, 2386, 2393, 2394, 2390, 2398, 2391,
+     2401, 2399, 2414, 2419, 2392, 6029, 2408, 2410, 2418, 2420,
+     2427, 2422, 2423, 2424, 2430, 2431, 2432, 2433, 2440, 2441,
+     2435, 2445, 2448, 2446, 2449, 2437, 2452, 2456, 2463, 2454,
+     2465, 2466, 6029, 2467, 2471, 2472, 2473, 2475, 2478, 2480,
+     2483, 2481, 2485, 2487, 2489, 2490, 2492, 2493, 2494, 2496,
+     2500, 2497, 6029, 2501, 2503, 2507, 2509, 2511, 2516, 2517,
+     2523, 2520, 2526, 2527, 2528, 2529, 6029, 2536, 2537, 2534,
+     2538, 2540, 2541, 2543, 2546, 2547, 6029, 2548, 2550, 2557,
+
+     2558, 2553, 6029, 2561, 2556, 2562, 2563, 2564, 2565, 2571,
+     2566, 2569, 2574, 2579, 2581, 2577, 2585, 6029, 2587, 2597,
+     2589, 2593, 2595, 2598, 2599, 2601, 2605, 2609, 2604, 6029,
+     2621, 2620, 2617, 2631, 2608, 2622, 2623, 2629, 2626, 2632,
+     2633, 6029, 2635, 2636, 2638, 2639, 2642, 2643, 2645, 2657,
+     2647, 2650, 2652, 2655, 2658, 2660, 2662, 2665, 2663, 2671,
+     2674, 2675, 2677, 2678, 2680, 2681, 2688, 2691, 2693, 2695,
+     6029, 2698, 2699, 2700, 2687, 2690, 2702, 2706, 2707, 2710,
+     2711, 2715, 2712, 2714, 2722, 2724, 2725, 2727, 2729, 2731,
+     2732, 2734, 2735, 2736, 2737, 2744, 2742, 2740, 2749, 2746,
+
+     2751, 2758, 2753, 2759, 2760, 2761, 2762, 2763, 2767, 2768,
+     2770, 2764, 2771, 2774, 2788, 2792, 2789, 2777, 2785, 2793,
+     2795, 2797, 6029, 2796, 2800, 2804, 2805, 2807, 2809, 2817,
+     2810, 2813, 2818, 2827, 2828, 2819, 2812, 2820, 2835, 2834,
+     6029, 2836, 6029, 2822, 2837, 2844, 2847, 2838, 6029, 2849,
+     6029, 2850, 2852, 2846, 2855, 6029, 2856, 2857, 2860, 2863,
+     2861, 2865, 2866, 2867, 2868, 2873, 2870, 2875, 2878, 2879,
+     2881, 2883, 2884, 2887, 2892, 2893, 2894, 2898, 2896, 2900,
+     2904, 2905, 2907, 6029, 2910, 2913, 2906, 2915, 2916, 2917,
+     2921, 2923, 2919, 2925, 2927, 2932, 2926, 2938, 2943, 2947,
+
+     2929, 2950, 6029, 2951, 2953, 2954, 2955, 6029, 2957, 2956,
+     2958, 2963, 2960, 2966, 2967, 2968, 2969, 2975, 2972, 2983,
+     2985, 2976, 2988, 6029, 2990, 2993, 2977, 2994, 3006, 3003,
+     2995, 3004, 3015, 3011, 3010, 3012, 3013, 3014, 3017, 3024,
+     3025, 3021, 3028, 3027, 3031, 3038, 3035, 3029, 3033, 3039,
+     3041, 3042, 3045, 3048, 3049, 3044, 3046, 3051, 3052, 6029,
+     3063, 3054, 3067, 3068, 3060, 3070, 3058, 3071, 3076, 3077,
+     3079, 3078, 3080, 6029, 3083, 6029, 3081, 3088, 3094, 3100,
+     3095, 3097, 3101, 3109, 3105, 3102, 3111, 3112, 3110, 3114,
+     3113, 3119, 3123, 3124, 3126, 3128, 3125, 3131, 3134, 3136,
+
+     3137, 3147, 3143, 3139, 6029, 6029, 3140, 3142, 3154, 3156,
+     3149, 3157, 3163, 3159, 3161, 3166, 3167, 3175, 6029, 3170,
+     3173, 3176, 3177, 3186, 3181, 3190, 3197, 3195, 3202, 3201,
+     6029, 3183, 3192, 3210, 3205, 3208, 3215, 6029, 3212, 6029,
+     3194, 3214, 3216, 3219, 3221, 3222, 3223, 3225, 3227, 3236,
+     3238, 3229, 3231, 3240, 3241, 3243, 3250, 3245, 3246, 3247,
+     6029, 3253, 3249, 3255, 3261, 3263, 3270, 3264, 3254, 6029,
+     3257, 3279, 3271, 3274, 3276, 3281, 3282, 3284, 3285, 3287,
+     3283, 3288, 3298, 3289, 3293, 3294, 3304, 3306, 3313, 6029,
+     3305, 3307, 3320, 3318, 3315, 3319, 3322, 3323, 3324, 3326,
+
+     3329, 3328, 3330, 3336, 3334, 3332, 3331, 3335, 3345, 3351,
+     3352, 3342, 3360, 3338, 3358, 3362, 3361, 3363, 3366, 3368,
+     3371, 3373, 3364, 3375, 3385, 3376, 3379, 3388, 3389, 3396,
+     3391, 6029, 3398, 3383, 3405, 3395, 3403, 3408, 3409, 3417,
+     3402, 3404, 3412, 3419, 3418, 6029, 3428, 3423, 3429, 3425,
+     3426, 3439, 3434, 3430, 3435, 3445, 3440, 3446, 3442, 3448,
+     3451, 3454, 3449, 6029, 6029, 3458, 3455, 3459, 6029, 3463,
+     3460, 3467, 3465, 3471, 3473, 3475, 3474, 3476, 3477, 3479,
+     3484, 6029, 3485, 3493, 3486, 3489, 3497, 3499, 6029, 3494,
+     3504, 3508, 3509, 3503, 3495, 3510, 3511, 3516, 3517, 3518,
+
+     3520, 3528, 3525, 3524, 3526, 6029, 3527, 3531, 3532, 3534,
+     3536, 3541, 6029, 3538, 3548, 3543, 3542, 3559, 3550, 3560,
+     3562, 3563, 3564, 3566, 3565, 3567, 3568, 3575, 3574, 3572,
+     3580, 3581, 3586, 6029, 3583, 3591, 3573, 3595, 3597, 3604,
+     3605, 3606, 3601, 3608, 3609, 3616, 6029, 3611, 3614, 3612,
+     3615, 3625, 3617, 3626, 3622, 6029, 3629, 3628, 3630, 6029,
+     3633, 3631, 3638, 3643, 3644, 3651, 3646, 3648, 3649, 3650,
+     6029, 3656, 6029, 3654, 3658, 3662, 6029, 3660, 3665, 3666,
+     3668, 3669, 3674, 3675, 3682, 3673, 3676, 3683, 3684, 3686,
+     3687, 3694, 3689, 3691, 3695, 3696, 6029, 3697, 3699, 3702,
+
+     3704, 3706, 3708, 3712, 3714, 3716, 6029, 6029, 3722, 6029,
+     3723, 3718, 3724, 6029, 3727, 3725, 3736, 2332, 3731, 3735,
+     3744, 3738, 6029, 3741, 3745, 3749, 3747, 3751, 3752, 3754,
+     3755, 3753, 3758, 3757, 6029, 3760, 3759, 3762, 3768, 3769,
+     3774, 3770, 3778, 6029, 3782, 3781, 3784, 3785, 3788, 6029,
+     3791, 6029, 3792, 3794, 3793, 3797, 3796, 6029, 3804, 3807,
+     3809, 3801, 3811, 3812, 3813, 3817, 3819, 3820, 3829, 3825,
+     3826, 3824, 3834, 3835, 6029, 3831, 3832, 3842, 3844, 3838,
+     3847, 3854, 3851, 3855, 3852, 3859, 3849, 3862, 3864, 3866,
+     3869, 3870, 6029, 3871, 3876, 3872, 3885, 3873, 3877, 6029,
+
+     3886, 3887, 3890, 6029, 3881, 3891, 3896, 3900, 3897, 3901,
+     3902, 3903, 3906, 6029, 3904, 3908, 3907, 3909, 3923, 3913,
+     6029, 6029, 3924, 6029, 3925, 3910, 3926, 3929, 3912, 3935,
+     3939, 3936, 3949, 3932, 3942, 3950, 3940, 3958, 3960, 3962,
+     3961, 3959, 3963, 6029, 6029, 3966, 3969, 3968, 3972, 3973,
+     3975, 3976, 3985, 3981, 3988, 3991, 3992, 3999, 6029, 3978,
+     3980, 3998, 6029, 3996, 4001, 4003, 4004, 4005, 4007, 4008,
+     4009, 4011, 4012, 4014, 4018, 4015, 4023, 4017, 4020, 4027,
+     4031, 4035, 4033, 4038, 6029, 4039, 4040, 4041, 4042, 4044,
+     4045, 4049, 4050, 4052, 6029, 4054, 4056, 4058, 4053, 4057,
+
+     4063, 4074, 4078, 4080, 4067, 4072, 4083, 4081, 4087, 4089,
+     6029, 4091, 4088, 4092, 4095, 4098, 4100, 4101, 4103, 4104,
+     4106, 4109, 4110, 4114, 4117, 4111, 4118, 4119, 4121, 6029,
+     4123, 4130, 4126, 4132, 4134, 4135, 4136, 4137, 4143, 4144,
+     4146, 4147, 6029, 4150, 4148, 4155, 6029, 4151, 4156, 4157,
+     4158, 4160, 4164, 4166, 4169, 6029, 4174, 4168, 4170, 4175,
+     4176, 4178, 4180, 4185, 4182, 4190, 4195, 6029, 4187, 4197,
+     4200, 4193, 4201, 4203, 4204, 4207, 6029, 4211, 4212, 4208,
+     4225, 4210, 4226, 4222, 4229, 4221, 4228, 4232, 4230, 4236,
+     4238, 4240, 4237, 4248, 4250, 4252, 6029, 4243, 6029, 4253,
+
+     4254, 4264, 4259, 4257, 6029, 4265, 4266, 4270, 4261, 4271,
+     6029, 4272, 4267, 4273, 4274, 6029, 4275, 4285, 4287, 4289,
+     4292, 4293, 6029, 4296, 4297, 4298, 4305, 4308, 4310, 4304,
+     4311, 4313, 4306, 4314, 4315, 4323, 4321, 4319, 6029, 4322,
+     4327, 4329, 4331, 4332, 4334, 4338, 4340, 4337, 6029, 4343,
+     4344, 4345, 4346, 4347, 4349, 4352, 4359, 4355, 4356, 6029,
+     4362, 4358, 4372, 4367, 4368, 6029, 6029, 4371, 4376, 4379,
+     4373, 4380, 6029, 4383, 4390, 4386, 4389, 4391, 6029, 6029,
+     4393, 6029, 4394, 6029, 4395, 4397, 6029, 6029, 4396, 4402,
+     4403, 4405, 4407, 6029, 4415, 6029, 4417, 4418, 4404, 4416,
+
+     4421, 6029, 4422, 4424, 4423, 4425, 4430, 6029, 4431, 4439,
+     4432, 4434, 6029, 4443, 4436, 4444, 6029, 4445, 4448, 4451,
+     4452, 4454, 4453, 4457, 4460, 4461, 4464, 4466, 4465, 4467,
+     4469, 4478, 4480, 4482, 4483, 4473, 4484, 4486, 4492, 4488,
+     4490, 4494, 4496, 4498, 4499, 4504, 4506, 4508, 4501, 4509,
+     4510, 4507, 4515, 4511, 4517, 4524, 4521, 4525, 4526, 4528,
+     4529, 4533, 4534, 4536, 4539, 4540, 6029, 4532, 4538, 4542,
+     4549, 4543, 4556, 4558, 4567, 4569, 4570, 6029, 4572, 6029,
+     4574, 4544, 4548, 4564, 6029, 4576, 4577, 4578, 4579, 4580,
+     4581, 4582, 4585, 4586, 4588, 4590, 6029, 4593, 4587, 4594,
+
+     4598, 6029, 4602, 4608, 4610, 4612, 4613, 4614, 4615, 4616,
+     4619, 4617, 4622, 4624, 4631, 4626, 4627, 4618, 4638, 4632,
+     4639, 4640, 4646, 4650, 4651, 4655, 6029, 4641, 6029, 4647,
+     4657, 4658, 4661, 4662, 4663, 4665, 6029, 6029, 4666, 4668,
+     4673, 4664, 4669, 4675, 4677, 4678, 4685, 6029, 4680, 4690,
+     4692, 4696, 6029, 4682, 4697, 4699, 6029, 4700, 4701, 4703,
+     4705, 4706, 4714, 4711, 4715, 4718, 4708, 4722, 6029, 6029,
+     6029, 6029, 4726, 4719, 4729, 4723, 4730, 4731, 4733, 4738,
+     4732, 6029, 4745, 6029, 6029, 4746, 4748, 4735, 4750, 4752,
+     4739, 4754, 4756, 6029, 4757, 4761, 4762, 4759, 4769, 4771,
+
+     4773, 4776, 4765, 4775, 4784, 4777, 4785, 4779, 4787, 4789,
+     4791, 6029, 6029, 4795, 4797, 4798, 4805, 4802, 4806, 4809,
+     4810, 4812, 4813, 4800, 4816, 4818, 4825, 4826, 4823, 4821,
+     6029, 4827, 4831, 6029, 4829, 6029, 4830, 4837, 4836, 4838,
+     4840, 4843, 4844, 4846, 6029, 6029, 4847, 4848, 4850, 4857,
+     4853, 4858, 4859, 4861, 4862, 6029, 4863, 6029, 4864, 4871,
+     4877, 4865, 4879, 4886, 4888, 4892, 4885, 4889, 6029, 4887,
+     4870, 6029, 4901, 4897, 4898, 4899, 4903, 6029, 4904, 4907,
+     4909, 6029, 4911, 4912, 4914, 6029, 4921, 6029, 4915, 4917,
+     4924, 4929, 6029, 4925, 4926, 6029, 4931, 4933, 4934, 4938,
+
+     6029, 4939, 6029, 4940, 4942, 4943, 4947, 4948, 4950, 4952,
+     4953, 4954, 4961, 4959, 4962, 6029, 6029, 4970, 4956, 4967,
+     4972, 4974, 4981, 4973, 4978, 4977, 6029, 6029, 4983, 6029,
+     4985, 4986, 6029, 4984, 4991, 4990, 4995, 4996, 4997, 4999,
+     5002, 5004, 5012, 5005, 5003, 5016, 5026, 5010, 5028, 5030,
+     5032, 5034, 5036, 5038, 5006, 5021, 5039, 5040, 5042, 5043,
+     6029, 5045, 5047, 5046, 6029, 5052, 5048, 5057, 5053, 6029,
+     5060, 5061, 5066, 5067, 6029, 5068, 5072, 5069, 5074, 5077,
+     5078, 5079, 5088, 5080, 5081, 6029, 6029, 6029, 5092, 5085,
+     6029, 5099, 5091, 5095, 5100, 6029, 5101, 5102, 6029, 6029,
+
+     5103, 5104, 5106, 5115, 6029, 5107, 6029, 5108, 6029, 5111,
+     5112, 5121, 5123, 6029, 5125, 5133, 6029, 5136, 5139, 5141,
+     5142, 5124, 5127, 5143, 6029, 5153, 5145, 5149, 5156, 5152,
+     5157, 5158, 5159, 5166, 5161, 5165, 6029, 5167, 5168, 5169,
+     5175, 5162, 5172, 5179, 6029, 5183, 6029, 5180, 5184, 5185,
+     5191, 5188, 5190, 5194, 5196, 5192, 5206, 5195, 6029, 5208,
+     5211, 6029, 5198, 6029, 5213, 6029, 5215, 5216, 5217, 5220,
+     6029, 5222, 5203, 5226, 5230, 5227, 5228, 6029, 5236, 5229,
+     5239, 6029, 6029, 5234, 5246, 5244, 5241, 5252, 5256, 5242,
+     5258, 5248, 5260, 5245, 5267, 5253, 5264, 5266, 5271, 5275,
+
+     5273, 6029, 6029, 6029, 5268, 5279, 5287, 5283, 5285, 5290,
+     5289, 6029, 5291, 5292, 5293, 5300, 5298, 5302, 6029, 5305,
+     5295, 5303, 5306, 5309, 5304, 5311, 6029, 5322, 5325, 5326,
+     5318, 5329, 5336, 5338, 5340, 5341, 6029, 5343, 6029, 6029,
+     5314, 6029, 5327, 5330, 5344, 5347, 6029, 5351, 5345, 5353,
+     5354, 5355, 5356, 5358, 6029, 5367, 5359, 5362, 5364, 6029,
+     6029, 5374, 6029, 5377, 5378, 5370, 5386, 5382, 5385, 5388,
+     5390, 6029, 5389, 5391, 5392, 5396, 5398, 6029, 5399, 5400,
+     5401, 5402, 5405, 5410, 5412, 5403, 5413, 6029, 5415, 5414,
+     5431, 5427, 6029, 5416, 5428, 6029, 6029, 5438, 5440, 5442,
+
+     6029, 6029, 6029, 5444, 6029, 5448, 5452, 5456, 5460, 5451,
+     6029, 5459, 5461, 5463, 5417, 5465, 6029, 5466, 5467, 5468,
+     5472, 6029, 6029, 5469, 5474, 5476, 5475, 5477, 6029, 5478,
+     5482, 5488, 5498, 5500, 5490, 5501, 5495, 5509, 5516, 5493,
+     5502, 5511, 5514, 5515, 5512, 5522, 5529, 5524, 5526, 5528,
+     5533, 6029, 6029, 5535, 6029, 6029, 5537, 5540, 5542, 5544,
+     5546, 5548, 5550, 5552, 5553, 6029, 5554, 5556, 5557, 5433,
+     5558, 6029, 5561, 5560, 5562, 5568, 5564, 5569, 5567, 5572,
+     6029, 6029, 5565, 5360, 5573, 5574, 5584, 6029, 5585, 5592,
+     5587, 5589, 5590, 5593, 5591, 6029, 5597, 5595, 6029, 6029,
+
+     5598, 6029, 6029, 6029, 6029, 6029, 6029, 6029, 6029, 6029,
+     5600, 5612, 6029, 5606, 5617, 5621, 5623, 6029, 5608, 5618,
+     5610, 5624, 5625, 6029, 5626, 5629, 5628, 5483, 5630, 5634,
+     5637, 5632, 5636, 5641, 5638, 5643, 5646, 5647, 5648, 5653,
+     5642, 5656, 6029, 6029, 6029, 5660, 5664, 5666, 5667, 5671,
+     5672, 5678, 5680, 5668, 5675, 5682, 5681, 5683, 5689, 5690,
+     5697, 5692, 5696, 5693, 5699, 6029, 5701, 5694, 5702, 5704,
+     6029, 5707, 6029, 5710, 6029, 6029, 5712, 5715, 5717, 5713,
+     5724, 5726, 5723, 5727, 5729, 5730, 5734, 5739, 6029, 5731,
+     5736, 6029, 5741, 5742, 6029, 5743, 5744, 5745, 5747, 5753,
+
+     5750, 5754, 5757, 5768, 6029, 6029, 5751, 5758, 5761, 5773,
+     5765, 5781, 5777, 5774, 5782, 5783, 5784, 5791, 6029, 5790,
+     5792, 5794, 6029, 5795, 5786, 5800, 5796, 5798, 5808, 5801,
+     5806, 6029, 5809, 6029, 5812, 5804, 5818, 5814, 5821, 5822,
+     5824, 5826, 5828, 6029, 5827, 5829, 5832, 5836, 5838, 5842,
+     5843, 5844, 5846, 5849, 5855, 5859, 5860, 5861, 5852, 5864,
+     5856, 6029, 5866, 5862, 6029, 5872, 5873, 5870, 5874, 5879,
+     6029, 5883, 5876, 5884, 5885, 5888, 5890, 6029, 5892, 5899,
+     5894, 6029, 5900, 6029, 6029, 5902, 5896, 5904, 5909, 5911,
+     6029, 6029, 6029, 5937, 5944, 5951, 5958, 5965,   88, 5972,
+
+     5979, 5986, 5993, 6000, 6007, 6014, 6021
     } ;
 
-static const flex_int16_t yy_def[3063] =
+static const flex_int16_t yy_def[3108] =
     {   0,
-     3048,    1, 3049, 3049, 3050, 3050, 3051, 3051, 3052, 3052,
-     3053, 3053, 3048, 3054, 3048, 3048, 3048, 3048, 3055, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3056, 3048, 3048, 3048, 3056, 3057, 3048, 3048,
-     3048, 3057, 3058, 3048, 3048, 3048, 3048, 3058, 3059, 3048,
-     3048, 3048, 3059, 3060, 3048, 3061, 3048, 3060, 3060, 3054,
-     3054, 3048, 3062, 3055, 3062, 3055, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3056, 3056, 3057, 3057, 3058, 3058, 3048, 3059, 3059, 3060,
-     3060, 3061, 3061, 3060, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3060, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3060, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3060, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3060, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3048, 3054, 3048, 3048, 3054, 3048,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3060, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048,
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3048, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3048, 3054, 3054, 3060, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3048, 3054, 3054, 3054, 3054,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3048, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3054,
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3048, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3048,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048,
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048,
-
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3048, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048,
-     3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054,
-     3048, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3054, 3048, 3048, 3054, 3048, 3054, 3048, 3054,
-     3054, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054,
-     3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054,
-     3048, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3048, 3054, 3048, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048,
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048,
-
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048,
-     3048, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3054, 3048, 3048, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3048, 3054, 3054, 3048, 3054, 3048, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048,
-     3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054, 3054,
-     3048, 3054, 3054, 3054, 3048, 3054, 3048, 3054, 3054, 3054,
-     3054, 3048, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3048,
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3048, 3048, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3048, 3054,
-
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3048, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3048, 3048, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3048, 3048, 3054, 3054, 3054,
-     3054, 3048, 3054, 3048, 3054, 3048, 3054, 3054, 3054, 3054,
-     3048, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3048, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3054,
-     3048, 3054, 3048, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3054, 3048, 3048, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3048, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3048, 3054, 3048, 3048, 3054, 3048, 3054, 3054, 3054,
-     3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3048, 3048, 3054, 3048, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3048, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3048,
-     3054, 3054, 3054, 3048, 3048, 3048, 3054, 3048, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3048,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3048, 3054, 3048, 3048, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048,
-     3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3048, 3054,
-     3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3054, 3048,
-     3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048,
-
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3054, 3048,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3048, 3054, 3054, 3048,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048,
-     3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054,
-
-     3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054,
-     3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048,
-     3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054,
-     3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3048, 3048,
-     3054, 3054, 3054, 3054, 3054, 3048, 3048,    0, 3048, 3048,
-     3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
-     3048, 3048
+     3093,    1, 3094, 3094, 3095, 3095, 3096, 3096, 3097, 3097,
+     3098, 3098, 3093, 3099, 3093, 3093, 3093, 3093, 3100, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3101, 3093, 3093, 3093, 3101, 3102, 3093, 3093,
+     3093, 3102, 3103, 3093, 3093, 3093, 3093, 3103, 3104, 3093,
+     3093, 3093, 3104, 3105, 3093, 3106, 3093, 3105, 3105, 3099,
+     3099, 3093, 3107, 3100, 3107, 3100, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3101, 3101, 3102, 3102, 3103, 3103, 3093, 3104, 3104,
+     3105, 3105, 3106, 3106, 3105, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3105, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3105, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3093, 3099, 3105, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3105, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3093, 3099, 3093, 3093, 3099, 3093, 3093, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3105, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3093, 3099, 3099, 3093, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093,
+     3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3105, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3093, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3093,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3093, 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3093,
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093,
+     3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093,
+
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3093, 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099,
+
+     3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+     3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093,
+     3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3093,
+     3099, 3093, 3099, 3093, 3099, 3099, 3093, 3093, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099,
+
+     3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093,
+     3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+
+     3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3093,
+     3093, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3093, 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3093, 3099, 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099,
+     3099, 3093, 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3093, 3099, 3099, 3099, 3099,
+
+     3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3093,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3093,
+     3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3093, 3093, 3093, 3099, 3099,
+     3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3093, 3093,
+
+     3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3093, 3099,
+     3099, 3099, 3099, 3093, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3099, 3093, 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099,
+     3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099,
+     3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3093, 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3093,
+     3099, 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3093,
+     3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099,
+     3099, 3099, 3093, 3099, 3099, 3093, 3093, 3099, 3099, 3099,
+
+     3093, 3093, 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+     3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099,
+     3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3093, 3093, 3099, 3093, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099,
+     3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3093, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3093, 3093,
+
+     3099, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3093, 3093, 3093, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099,
+     3093, 3099, 3093, 3099, 3093, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3099, 3093, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+
+     3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099,
+     3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099,
+     3099, 3093, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099,
+     3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099,
+     3099, 3093, 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099,
+     3093, 3093,    0, 3093, 3093, 3093, 3093, 3093, 3093, 3093,
+
+     3093, 3093, 3093, 3093, 3093, 3093, 3093
     } ;
 
-static const flex_int16_t yy_nxt[5981] =
+static const flex_int16_t yy_nxt[6070] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   14,   18,   20,   21,   22,   23,   24,   25,   26,
@@ -1437,655 +1453,665 @@ static const flex_int16_t yy_nxt[5981] =
        61,   62,   72,   71,   63,  102,   73,   92,   70,   71,
        63,   15,   16,   17,   65,   66,   67,   75,   71,   75,
 
-       75,   71,   75,   68,  104,  157,  103,   93,   75,   76,
-      141,  141,   69,   15,   16,   17,   65,   66,   67,   71,
+       75,   71,   75,   68,  104,  158,  103,   93,   75,   76,
+      142,  142,   69,   15,   16,   17,   65,   66,   67,   71,
        71,   83,   77,   78,   71,   68,   79,   71,   84,   87,
-       71,   80,   85,   88,   69,   86,   89,  151,   90,   91,
-       81,   71,   94,   71,   96,   71,   71,  159,   71,  105,
+       71,   80,   85,   88,   69,   86,   89,  152,   90,   91,
+       81,   71,   94,   71,   96,  164,   71,   71,   71,  105,
        98,  112,   97,   99,   71,  109,   95,  106,   71,  110,
-      100,   71,  101,  107,  172,   71,  113,  108,  143,   71,
-      114,  143,  118,   71,  119,  111,  115,   71,  120,  116,
-      140,  151,  124,  148,  148,  125,  117,  163,  121,  122,
-       71,  123,  126,   71,  133,  154,  127,  128,   71,  129,
-
-      224,  130,   71,  137,  134,  158,   71,  138,  135,  136,
-      131,  139,  145,   71,  145,  145,  132,  145,   75,   71,
-       75,   75,  150,   75,  150,  150,   70,  150,   70,   70,
-      153,   70,   72,  165,   71,  171,   73,   70,   75,   71,
-       75,   75,  155,   75,   71,   71,  225,   71,  156,   75,
-       76,   71,   71,   71,  160,  161,  164,   71,   71,  166,
-      173,   71,   71,  169,  170,  167,   71,  168,  162,   71,
-       71,  175,  177,  178,   71,   71,  184,   71,  176,  174,
-      179,  182,  253,   71,   71,   71,  189,  180,  181,  183,
-       71,  151,   71,  185,  191,   71,  186,   71,   71,  199,
-
-      192,  194,  197,   71,   71,  195,   71,  198,  200,  187,
-      188,  190,   71,  201,   71,   71,  202,  205,   71,  203,
-      193,  196,  207,   71,   71,   71,   71,  204,   71,  212,
-      209,   71,   71,  206,  210,   71,  214,   71,   71,   71,
-       71,  208,   71,  220,  211,  215,  213,   71,  226,  229,
-      217,  216,  223,   71,  221,   71,  219,  218,  222,  233,
-      230,   71,   71,   71,  235,  227,   71,   71,  228,  231,
-       71,  239,   71,  236,  232,  238,   71,  234,  149,  240,
-       71,  242,  141,  141,  143,  237,  243,  143,  241,  145,
-      151,  145,  145,  244,  145,  148,  148,  150,  248,  150,
-
-      150,   75,  150,   75,   75,   71,   75,   71,  246,   71,
-      245,   71,   71,  153,   71,   71,   71,  250,   71,   71,
-       71,  256,  249,  247,  251,  259,  252,  255,  258,   71,
-      254,   71,  260,  264,  262,   71,  263,   71,  257,   71,
-       71,  265,   71,   71,  268,  261,  266,   71,  273,  269,
-       71,  147,   71,   71,  270,  275,  274,  276,  279,   71,
-      271,  272,  278,  267,   71,  277,   71,   71,   71,   71,
-      281,   71,  282,  283,   71,   71,   71,   71,   71,  288,
-      289,  285,  295,  284,  286,   71,  299,  280,   71,  287,
-       71,  290,  297,  298,  291,  300,  292,  302,  296,   71,
-
-       71,   71,   71,   71,   71,  304,  305,  301,  293,  307,
-      294,   71,   71,  308,   71,  313,  146,   71,  310,   71,
-      303,  306,  309,  311,   71,   71,  317,   71,   71,   71,
-       71,   71,  312,  314,  315,   71,  316,   71,   71,  318,
-      320,  319,   71,   71,  325,   71,  321,   71,   71,  326,
-       71,   71,  327,  322,  331,  329,   71,   71,  323,  334,
-       71,   71,   71,  324,   71,   71,  328,  330,   71,  336,
-      337,   71,   71,  340,  332,  333,  341,  335,  339,   71,
-      338,  342,   71,  343,  344,   71,   71,  346,  348,   71,
-      347,   71,  350,   71,   71,   71,   71,  351,   71,  345,
-
-       71,  354,   71,  151,   71,   71,   71,  361,  144,   71,
-      357,  359,  349,   71,  352,  355,  353,  362,   71,  356,
-       71,   71,   71,   71,  358,  363,  364,  365,  360,   71,
-       71,   71,  367,   71,  371,  372,   71,  366,  374,  370,
-       71,   71,   71,  373,  369,   71,  375,  368,  376,   71,
-      378,   71,   71,  379,   71,   71,   71,   71,  382,   71,
-      377,  383,   71,  385,   71,   71,  387,  388,  384,   71,
-      380,  381,   71,  389,   71,   71,  386,   71,  390,   71,
-       71,  392,  393,  394,  395,   71,   71,   71,  399,   71,
-       71,   71,   71,  396,  400,  391,  402,   71,   71,  398,
-
-       71,   71,  405,   71,   71,  410,  397,  407,  401,   71,
-      409,   71,  411,   71,   71,   71,  403,   71,  404,  438,
-       71,  406,  421,  419,  408,  412,   71,   71,   71,   71,
-      422,  425,  423,  420,  430,  413,  142,   71,  414,  431,
-       71,   71,  426,  415,  416,  417,  418,   71,  424,  427,
-       71,   71,  428,  429,  432,   71,   71,   71,  433,   71,
-      440,  434,  435,   71,  436,  437,   71,   71,  439,   71,
-       71,  442,  441,   71,   71,  447,   71,  465,  453,  443,
-       71,   71,   71,  448,   71,  449,   71,   71,  444,  446,
-      445,  452,  454,  451,  450,   71,   71,   71,   71,  457,
-
-      455,  458,   71,  466,   71,  460,  456,  464,   71,   71,
-       71,  459,  467,   71,   71,  468,   71,   71,  461,  469,
-       71,  462,  483,  463,  479,  470,   71,   71,   71,  471,
-       71,  484,  481,  732,  486,  480,   71,  472,   71,  473,
-       71,  474,  482,   71,   71,  494,  496,  485,  151,  495,
-      498,  497,   71,   71,  475,  500,   71,  476,  501,  477,
-      504,  478,   71,   71,  487,  488,   71,   71,   71,  499,
-       71,   71,  502,   71,  489,  503,  490,  491,  492,  505,
-      508,  493,  507,   71,   71,   71,   71,  506,  513,  514,
-      509,  511,  516,  510,   71,  517,   71,   71,   71,   71,
-
-      515,  521,   71,  512,   71,   71,   71,   71,   71,  519,
-      524,  525,  526,  520,   71,   71,  518,   71,   71,  531,
-      523,   71,   71,  536,  528,  533,  527,  522,   71,   71,
-       71,  529,  530,  534,   71,   71,   71,  532,   71,   71,
-       71,  546,   71,  547,   71,  538,   71,  537,  535,  542,
-      539,  545,  541,  540,   71,  548,   71,  549,   71,  553,
-      543,  151,  544,   71,  551,  550,   71,   71,   71,  556,
-      552,   71,  554,   71,  555,  558,   71,   71,  559,   71,
-      561,  562,   71,   71,  557,   71,  563,   71,   71,   71,
-      560,   71,  568,  566,  567,   71,   71,   71,  564,   71,
-
-      569,   71,   71,   71,  574,   71,  565,  570,  578,  575,
-       71,  573,   71,  577,  576,  572,  571,   71,  580,   71,
-       71,  582,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,  579,  584,  592,  585,  587,  594,   71,  593,   71,
-       71,  581,   71,  583,  591,  588,  586,  589,  590,   71,
-       71,  596,   71,   71,  595,  599,   71,  602,  597,   71,
-      603,  598,  604,   71,  605,   71,   71,  600,   71,   71,
-       71,  601,   71,  608,   71,   71,  611,   71,   71,  607,
-      612,   71,  614,   71,   71,   71,  644,  610,  606,  613,
-       71,  609,   71,   71,  615,   71,  617,  628,   71,  631,
-
-      616,   71,  618,   71,  626,  627,   71,  619,  632,  620,
-       71,  629,  633,   71,  630,  621,   71,  622,  635,   71,
-      623,  624,  636,  638,   71,  634,   71,  625,  637,   71,
-       71,   71,  640,  641,  639,   71,  646,   71,   71,   71,
-       71,   71,   71,   71,  149,   71,  643,  642,  652,   71,
-      648,  653,  647,   71,  649,  656,  645,   71,  151,  650,
-       71,  659,  658,  651,  654,   71,  657,   71,  655,   71,
-       71,   71,  660,   71,   71,   71,   71,  668,  666,   71,
-      661,  670,   71,   71,  663,   71,  664,  669,  662,  667,
-      671,  665,  673,   71,   71,  672,   71,  674,   71,   71,
-
-       71,   71,  675,   71,  679,  678,   71,  676,   71,  677,
-      684,  695,  680,   71,   71,  685,   71,  687,   71,  681,
-      688,   71,  682,  689,  683,   71,  686,  690,   71,   71,
-      691,   71,  692,   71,   71,  693,  694,   71,   71,   71,
-      698,   71,  697,   71,  696,   71,  699,  702,  703,   71,
-       71,   71,   71,  704,   71,  708,  706,   71,   71,   71,
-      147,   71,  700,  709,  701,   71,   71,   71,  705,  711,
-       71,  710,  707,   71,  712,   71,  715,  714,  713,   71,
-       71,  720,   71,  716,  718,  719,  717,  722,  721,   71,
-       71,  723,  724,   71,  725,   71,   71,   71,   71,  728,
-
-      727,   71,  729,   71,   71,   71,  736,   71,  734,   71,
-       71,   71,   71,   71,  730,  146,  726,  733,  737,  731,
-       71,  740,  742,   71,   71,  735,  744,  739,   71,  738,
-      743,  749,  741,  745,  746,   71,   71,   71,  747,   71,
-      751,  753,  748,   71,   71,   71,   71,   71,  752,   71,
-      755,  756,  754,  750,   71,   71,  757,   71,   71,  762,
-       71,   71,   71,  760,  761,   71,  765,  758,  759,  764,
-       71,  767,   71,   71,  771,   71,  769,  763,   71,  768,
-       71,   71,  766,  773,  774,   71,  776,  772,   71,  775,
-       71,  770,   71,   71,  778,  780,   71,   71,   71,   71,
-
-       71,   71,  786,   71,   71,  787,  777,  779,   71,   71,
-       71,   71,  788,   71,  781,  782,  783,   71,  784,  789,
-      785,  795,   71,   71,  790,  793,   71,   71,  791,   71,
-      792,   71,  794,   71,   71,  797,  796,  800,   71,   71,
-       71,   71,   71,  808,   71,  798,   71,   71,  799,  801,
-      802,  809,   71,   71,   71,  807,  803,  804,  805,  806,
-      812,   71,   71,  810,  811,   71,  813,   71,  814,   71,
-       71,   71,  817,  815,  818,  816,  820,  819,   71,   71,
-       71,   71,   71,  821,   71,  822,  823,  151,   71,  824,
-       71,  826,  828,  829,   71,  825,  827,   71,  830,   71,
-
-       71,   71,  831,  836,   71,   71,  832,   71,  837,  839,
-       71,   71,  842,   71,  833,  834,  838,   71,   71,   71,
-      840,  835,   71,  844,  841,   71,  848,   71,   71,  845,
-       71,   71,   71,  843,   71,  849,   71,  850,   71,   71,
-      144,   71,   71,  847,   71,  865,  851,  846,  862,   71,
-      863,  860,   71,  866,  853,  861,  852,   71,  864,   71,
-      867,   71,  854,   71,   71,  872,  855,  869,   71,  856,
-       71,   71,  868,  880,   71,   71,  857,  858,  870,  859,
-       71,  885,   71,  871,   71,  873,  874,   71,  875,   71,
-      884,  876,   71,  882,  949,  881,  877,   71,  887,  886,
-
-       71,  889,  878,  879,  888,  883,   71,   71,   71,   71,
-      891,  890,   71,  892,  893,   71,   71,   71,  894,   71,
-       71,  895,   71,  897,   71,  901,   71,   71,   71,   71,
-      900,  896,   71,  904,   71,   71,   71,  898,  908,  899,
-      909,  902,  903,  926,   71,  905,  906,  910,   71,  911,
-      914,  907,   71,  915,  912,   71,   71,  913,   71,   71,
-      917,   71,   71,  916,  918,   71,   71,   71,  919,  921,
-       71,  922,   71,  920,   71,  923,   71,   71,  928,   71,
-       71,  925,   71,   71,   71,  931,   71,   71,   71,  929,
-      930,   71,  924,  933,   71,  934,  927,  936,   71,  935,
-
-       71,  937,  932,   71,   71,  938,   71,   71,  945,  943,
-       71,   71,  940,  941,  944,   71,   71,  939,   71,  942,
-       71,   71,   71,  950,  952,  946,  955,  948,  953,   71,
-      947,  951,   71,   71,   71,   71,   71,  954,   71,   71,
-       71,   71,  961,  966,  963,   71,   71,   71,  142,   71,
-       71,   71,   71,  956,  957,  958,  967,  971,  959,  960,
-      965,  962,  968,  964,   71,  969,  970,   71,  974,   71,
-       71,   71,  973,   71,   71,   71,   71,   71,  972,   71,
-      976,  983,  978,   71,   71,  985,  987,   71,  988,   71,
-      975,   71,   71,  977,   71,  979,  981,  984,  980,  982,
-
-       71,   71,   71,   71,  986,  989,   71,  993,  990,   71,
-      995,  996,  991,   71,   71, 1000,  997,   71,   71,  999,
-      992,   71, 1002,   71,  994,   71,   71, 1005,  151,   71,
-       71, 1004,  998,   71, 1007,   71, 1008,   71, 1001,   71,
-       71,   71,   71, 1003, 1006, 1011,   71,   71,   71, 1023,
-       71,   71,   71,   71, 1024, 1009, 1014, 1010, 1012, 1026,
-       71, 1068,   71, 1049,   71, 1013, 1015, 1025, 1016,   71,
-       71,   71, 1017,   71, 1018, 1028, 1027, 1029, 1019,   71,
-     1020,   71,   71, 1033, 1030, 1021, 1031, 1032, 1034,   71,
-     1022,   71,   71, 1035,   71, 1036,   71, 1038,   71, 1039,
-
-       71, 1042,   71,   71, 1041,   71,   71, 1037, 1047, 1040,
-     1050, 1046, 1043, 1048,   71,   71, 1045, 1051,   71,   71,
-       71, 1044,   71,   71, 1054, 1052,   71, 1063,   71,   71,
-       71, 1066, 1062, 1067,   71,   71,   71, 1053,   71, 1055,
-     1064, 1065, 1072,   71, 1056,   71, 1057, 1074, 1069, 1073,
-       71,   71, 1058,   71, 1070, 1071,   71, 1059, 1060, 1075,
-       71, 1078,   71,   71, 1061,   71,   71,   71, 1079, 1076,
-     1080, 1081, 1084, 1077, 1082,   71,   71,   71,   71,   71,
-       71,   71, 1083,   71, 1085, 1087,   71,   71,   71,   71,
-       71,   71, 1092, 1089, 1094, 1086, 1093, 1088, 1091, 1096,
-
-       71, 1090,   71,   71, 1098,   71, 1095, 1097,   71,   71,
-       71,   71,   71,   71,   71, 1104, 1105, 1101, 1106, 1109,
-     1099, 1100,   71, 1107, 1103,   71, 1102,   71, 1108,   71,
-       71, 1112,   71, 1116,   71, 1110, 1113,   71,   71, 1114,
-       71, 1122, 1115,   71,   71, 1111, 1117,   71,   71, 1124,
-       71,   71,   71,   71, 1118,   71, 1120, 1126, 1119, 1121,
-       71,   71,   71, 1128,   71, 1125, 1130, 1127, 1123, 1131,
-       71,   71, 1129,   71,   71, 1133, 1134,   71, 1132,   71,
-     1136,   71, 1139, 1140,   71, 1135,   71, 1138,   71,   71,
-       71, 1144, 1143, 1137,   71, 1141,   71, 1142,   71,   71,
-
-       71, 1150, 1148, 1151,   71,   71,   71,   71,   71,   71,
-     1152, 1153, 1145, 1149,   71, 1146, 1155, 1158, 1147, 1154,
-       71,   71,   71,   71, 1157, 1159, 1156, 1160,   71,   71,
-     1161,   71,   71,   71,   71, 1164, 1165,   71, 1162,   71,
-       71, 1170, 1171,   71,   71, 1166,   71,   71,   71, 1163,
-       71, 1168,   71, 1174,   71, 1167,   71, 1173, 1172, 1169,
-     1176, 1178, 1177, 1175,   71,   71,   71,   71,   71, 1184,
-       71,   71,   71, 1180, 1179,   71,   71, 1190,   71,   71,
-       71, 1188,   71, 1187, 1195, 1181, 1185, 1183, 1189, 1192,
-     1186, 1193, 1182,   71,   71,   71,   71,   71, 1194, 1196,
-
-     1191,   71,   71,   71,   71,   71,   71, 1199,   71,   71,
-     1197,   71, 1202, 1205,   71, 1198,   71,   71, 1200,   71,
-       71, 1203, 1220, 1201, 1208, 1206, 1209, 1204,   71,   71,
-     1215,   71,   71, 1211, 1207,   71, 1216, 1210, 1217,   71,
-       71,   71, 1212,   71, 1213,   71, 1219, 1214, 1218,   71,
-     1224,   71, 1223,   71, 1221,   71, 1226,   71, 1222, 1229,
-       71,   71, 1230,   71, 1227,   71, 1231,   71, 1225,   71,
-     1233, 1234,   71,   71, 1228,   71,   71,   71, 1235,   71,
-       71,   71,   71, 1232,   71,   71, 1241, 1236, 1237, 1239,
-       71, 1240, 1242,   71, 1238,   71, 1246,   71, 1251,   71,
-
-     1243,   71, 1245, 1244,   71, 1248, 1250,   71, 1247, 1253,
-       71,   71, 1257, 1252,   71, 1249, 1255, 1258,   71,   71,
-       71,   71, 1256,   71, 1262,   71, 3048, 1254,   71, 1272,
-     1270, 1271, 1261, 1259, 1260,   71,   71,   71, 1269, 1275,
-     1263, 1273,   71, 1264, 1265,   71,   71,   71, 1266,   71,
-       71, 1274, 1276,   71, 1267, 1277,   71, 1278, 1268,   71,
-     1280,   71,   71,   71, 1281,   71, 1282, 1279,   71, 1283,
-     1287, 1284, 1285,   71, 1290, 1291,   71,   71,   71, 1329,
-       71,   71, 1286, 1292,   71, 1294, 1289, 1288, 1293,   71,
-     1295,   71, 1296,   71, 1297, 1303, 1298,   71, 1299, 1300,
-
-     1301,   71,   71,   71, 1302, 1307,   71, 1305,   71,   71,
-     1308,   71, 1306, 1310,   71,   71, 1304,   71,   71, 1316,
-       71, 1317,   71, 1311, 1312,   71,   71,   71, 1309,   71,
-     1318,   71, 1315, 1313, 1320,   71, 1314,   71,   71,   71,
-     1319, 1321,   71, 1325, 1322, 1326,   71, 1328,   71, 1323,
-       71,   71,   71, 1330, 1327,   71, 1331, 1334,   71, 1336,
-       71, 1332, 1324,   71, 1333,   71, 1337,   71, 1338,   71,
-     1341,   71, 1335,   71,   71,   71,   71, 1343,   71,   71,
-       71, 1345, 1347,   71,   71, 3048, 1349, 1346, 1339,   71,
-     1340,   71,   71, 1342, 1351, 1344, 1352, 1348,   71, 1350,
-
-     1353,   71,   71, 1354,   71, 1356, 1355, 1357,   71,   71,
-       71,   71, 1362, 1363, 1365, 1359,   71, 1360,   71,   71,
-       71, 1364,   71,   71, 1361,   71, 1358, 1369,   71,   71,
-       71, 1366,   71, 1373, 1374,   71, 1368, 1376,   71,   71,
-       71, 1375, 1367,   71,   71,   71,   71,   71,   71, 1370,
-     1371,   71, 1377,   71, 1383, 1372,   71, 1380, 1378,   71,
-     1381,   71, 1388,   71, 1379, 1382, 1387,   71, 1384,   71,
-     3048,   71, 1390, 1392, 1386,   71, 1385,   71, 1393,   71,
-       71,   71, 1389,   71, 1395, 1396,   71,   71, 1391, 1394,
-       71,   71, 1401, 1403, 1397, 1402, 1398, 1405, 1399,   71,
-
-     1404, 1400,   71,   71,   71,   71, 1406, 1408,   71, 1410,
-     1407,   71, 1409,   71,   71,   71, 1413,   71,   71, 1415,
-       71,   71, 1420, 1412,   71,   71, 1414,   71, 1421,   71,
-     1411, 1417,   71, 1424,   71, 1416, 1418,   71, 1419,   71,
-       71, 1425,   71, 1422,   71,   71, 1423,   71, 1427, 1431,
-     1433, 1426, 1428,   71, 1432, 1429,   71,   71, 1436,   71,
-       71, 1430,   71,   71, 1441, 1435, 1438, 1442, 1440,   71,
-       71, 1434,   71,   71, 1437,   71, 1443,   71, 1444, 1445,
-       71,   71,   71, 1439,   71, 1446, 1449, 1448,   71,   71,
-     1452, 1447,   71,   71,   71, 1451,   71,   71, 1458, 1450,
-
-     1460, 1454, 1455, 1459,   71, 1461,   71,   71, 1456,   71,
-     1463,   71, 1453,   71,   71, 1457,   71,   71,   71,   71,
-     1471, 1467,   71, 1466,   71, 1474,   71, 1462,   71, 1472,
-     1464,   71, 1465,   71, 1477,   71, 1468, 1470, 1469, 1476,
-       71,   71,   71,   71,   71,   71, 3048, 1475, 1473,   71,
-       71, 1485,   71,   71, 1478, 1486, 1488,   71, 1482,   71,
-     1479, 1480, 1481, 1491, 1484, 1487, 1483, 1489,   71,   71,
-       71,   71,   71,   71, 1490, 1495,   71,   71,   71, 1496,
-     1493, 1498,   71, 1492,   71, 1494, 1502,   71, 1504, 1503,
-       71,   71, 1497, 1499,   71,   71,   71, 1500, 1501,   71,
-
-     1507,   71,   71, 1508, 1506, 1505, 1509,   71, 1513, 1514,
-       71,   71,   71,   71,   71,   71, 1510, 1519, 1517, 1511,
-       71, 1518,   71,   71, 1521,   71,   71, 1512,   71, 1515,
-       71, 1522,   71, 1516,   71, 1520, 1523,   71, 1524,   71,
-       71, 1528, 1525, 1526,   71, 1529,   71,   71,   71, 1530,
-     1527,   71, 1533,   71, 1535,   71,   71,   71, 1539,   71,
-     1531,   71, 1534,   71,   71, 1532,   71,   71, 1542, 1536,
-     1537, 1544,   71, 1540,   71,   71, 1547,   71, 1545, 1541,
-       71, 1538, 1543,   71, 1546,   71,   71, 1550, 1548,   71,
-     1552, 1549, 1553,   71,   71,   71, 1551,   71,   71, 1560,
-
-       71,   71,   71, 1555, 1554, 1561,   71,   71,   71, 1558,
-     1569, 1564, 1565, 1556, 1557,   71,   71, 1567,   71,   71,
-       71, 1562, 1559, 1568, 1571,   71, 1563,   71, 1566,   71,
-       71, 1573,   71, 1575, 1572,   71,   71, 1578,   71, 1570,
-     1576,   71, 1579,   71, 1574,   71,   71,   71, 1584, 1583,
-       71,   71, 1580, 1577,   71,   71,   71, 1600, 1590, 1591,
-     1582, 1581, 1585,   71,   71,   71, 1587,   71, 1592, 1588,
-       71, 1586, 1598, 1602,   71, 1595, 1594, 1597,   71,   71,
-     1596, 1589,   71,   71, 1593,   71, 1601, 1599, 1603,   71,
-       71,   71,   71,   71, 1609, 1610, 1608,   71,   71, 1612,
-
-       71,   71, 1604, 1611,   71,   71, 1615,   71, 1605, 1614,
-     1606,   71, 1607,   71,   71,   71, 1616,   71,   71,   71,
-     1613, 1624,   71,   71,   71,   71,   71,   71,   71, 1622,
-       71, 1617, 1620, 1621, 1618, 1619, 1623, 1629,   71, 1627,
-       71,   71, 1625,   71, 1626, 1631,   71, 1628, 1630,   71,
-     1632,   71,   71,   71, 1635,   71, 1633, 1634,   71,   71,
-     1637,   71, 1639,   71, 1636,   71, 1646, 1638, 1640, 1642,
-       71, 1641,   71, 1643, 1647,   71, 1648,   71, 1644, 1652,
-       71,   71, 1649, 1650, 1651, 1653, 1645,   71,   71,   71,
-       71,   71,   71, 1655, 1656,   71,   71, 1664, 1665,   71,
-
-       71, 1659,   71,   71,   71, 1661, 1654, 1658, 1662, 1657,
-       71, 1663,   71,   71, 1660,   71,   71, 1667,   71,   71,
-     1666,   71, 1674,   71,   71,   71, 1669, 1671, 1668, 1670,
-     1677,   71, 1676,   71, 1678, 1675, 1673,   71,   71, 1685,
-     1680, 1672, 1682, 1681, 1686,   71,   71,   71, 1679,   71,
-       71, 1691,   71, 1693,   71, 1690, 1684,   71, 1683, 1694,
-     1687,   71, 1688, 1696,   71,   71, 1695,   71,   71,   71,
-     1692, 1689, 1700, 1697,   71, 1704,   71,   71,   71, 1702,
-       71,   71, 1699,   71, 1698, 1703,   71, 1701, 1705,   71,
-       71,   71,   71,   71, 1708, 1716, 1706,   71, 1709, 1714,
-
-       71,   71, 1707, 1710, 1711, 1717, 1712, 1713,   71,   71,
-     1718,   71,   71,   71, 1723,   71,   71,   71, 1727,   71,
-       71, 1715,   71,   71, 3048,   71, 1722, 1720, 1719, 1729,
-       71, 1721, 1725,   71,   71, 1726,   71, 1724, 1730, 1731,
-       71, 1732, 1728, 1736,   71, 1735, 1734,   71,   71, 1733,
-       71, 1740,   71,   71,   71,   71,   71,   71,   71, 1747,
-     1738, 1742,   71,   71,   71,   71, 1737, 1741, 1743, 1739,
-     1744, 1841,   71,   71, 1745, 1748, 1752, 1746, 1750,   71,
-     1749, 1751,   71, 1753,   71,   71, 1756,   71, 1755,   71,
-     1754, 1759,   71, 1757,   71,   71,   71,   71, 1760, 1758,
-
-       71,   71,   71,   71,   71,   71, 1765,   71,   71, 1769,
-       71,   71, 1766, 3048,   71, 1775, 1761, 1767, 1763, 1762,
-     1764,   71, 1768, 1770,   71, 1778, 1773,   71, 1772, 1777,
-       71,   71, 1779, 1774,   71,   71, 1771,   71,   71, 1776,
-     1783,   71, 1786, 1787,   71,   71, 1780, 1788,   71,   71,
-     1781, 1784,   71, 1785,   71, 1782, 1790,   71,   71, 1791,
-     1794,   71,   71, 1796,   71, 1789, 1795, 1797, 1798,   71,
-     1792, 1800, 1799, 1793,   71,   71,   71,   71, 1805, 1802,
-     1803,   71,   71, 1804,   71,   71,   71,   71, 1812,   71,
-     1814,   71,   71,   71,   71, 1815,   71, 1806, 1807, 1808,
-
-     1801,   71,   71, 1817, 1809, 1816, 1810, 1811, 1819, 1813,
-     1820,   71, 1822, 1818,   71,   71,   71, 1824,   71,   71,
-     1821,   71, 1826,   71,   71, 1829, 1830,   71,   71, 1832,
-       71,   71,   71,   71,   71, 1823, 1838,   71, 1837, 1827,
-       71, 1825, 1834, 1835,   71, 1828,   71,   71, 1831,   71,
-       71, 1844,   71, 1836,   71, 1842, 1833,   71,   71, 1848,
-       71, 1839, 1840, 1847,   71,   71, 1851, 1850, 1852, 1854,
-     1846,   71,   71,   71,   71, 1843,   71, 1849, 1845, 1853,
-       71,   71, 1855,   71,   71,   71, 1859,   71, 1862,   71,
-     1863, 1856,   71, 1858,   71, 1857,   71,   71, 1866,   71,
-
-       71,   71, 1860, 1871,   71, 1870,   71, 1865,   71, 1864,
-       71, 1861,   71,   71, 1867,   71, 1875, 1868,   71, 1876,
-     1872, 1869, 1879, 1873, 1877, 1874, 1878,   71,   71, 1882,
-       71, 1883,   71,   71,   71,   71,   71, 1889,   71, 1880,
-     1886,   71,   71,   71, 1881, 1894, 1884, 1891, 1892,   71,
-       71, 1893, 1885, 1890, 1887,   71, 1888,   71,   71, 1899,
-       71, 1900,   71, 1903, 1895, 1901, 1904,   71, 1896,   71,
-     1902,   71,   71, 1897,   71,   71, 1908,   71, 1898, 1906,
-       71,   71,   71,   71, 1910, 1913,   71, 1907, 1915, 1909,
-       71,   71,   71, 1905,   71, 1911,   71,   71,   71,   71,
-
-     1920, 1925, 1916, 1919, 1917,   71, 1912,   71, 1914,   71,
-     1921, 1922,   71, 1923,   71, 1918,   71, 1932,   71, 1924,
-       71,   71, 1926, 1927,   71,   71, 1928,   71, 1931, 1930,
-     1929,   71, 1933,   71,   71,   71, 1937,   71,   71, 1934,
-     1936,   71,   71, 1938,   71, 1935, 1939, 1940, 1941,   71,
-       71,   71,   71, 1943,   71, 1948, 1946,   71, 1942, 1947,
-       71,   71,   71,   71,   71, 1953,   71,   71, 1944, 1950,
-     1945,   71,   71,   71, 1957, 1949, 1954, 1952,   71, 1959,
-     1951, 1956,   71,   71, 1955, 1963,   71, 1958, 1961,   71,
-       71,   71, 1960, 1964,   71, 1962,   71, 1969,   71,   71,
-
-     1971,   71,   71,   71, 1972, 1965,   71, 1966, 1975, 1967,
-     1968, 1973,   71,   71, 1974, 1970,   71, 1977,   71,   71,
-       71,   71,   71,   71,   71,   71,   71, 1978, 3048,   71,
-       71, 1985, 1980, 1976, 1981, 1982, 1989,   71,   71, 1984,
-     1979, 1988,   71,   71, 1986, 1992, 1987, 1983, 1990,   71,
-       71,   71,   71, 1996, 1993, 1995,   71,   71, 1991,   71,
-       71, 1998,   71, 1994, 1999,   71,   71,   71, 2000, 2004,
-     1997, 2002,   71,   71, 2006, 2008,   71, 2003, 2001,   71,
-       71,   71, 2011,   71,   71, 2005, 2010, 2007, 2012, 2013,
-       71,   71, 2016,   71,   71,   71,   71,   71,   71, 2017,
-
-       71, 2022,   71, 2019,   71, 2009, 2018, 2026, 2014,   71,
-     2023, 2015, 2024,   71, 2021, 2020,   71,   71,   71, 2028,
-       71, 2027, 2031,   71, 2025,   71, 2029,   71, 2033,   71,
-     2034,   71, 2032,   71, 2030,   71,   71,   71, 2036, 2040,
-     2035,   71,   71, 2037, 2038, 2042,   71, 2039,   71,   71,
-     2043,   71,   71, 2045, 2046, 2044,   71, 2041,   71,   71,
-       71, 2047, 2049, 2048, 2052,   71,   71,   71, 2050, 2051,
-     2053,   71,   71,   71,   71,   71,   71, 2054,   71,   71,
-     2061, 2056, 2055, 2062, 2058, 2059, 2057,   71, 2063,   71,
-       71,   71,   71, 2064, 2060, 2066, 2072,   71,   71, 2067,
-
-       71,   71, 2074,   71,   71, 2068, 2065, 2071, 2076, 2069,
-     2073,   71,   71,   71, 3048, 2079, 2077, 2070, 2081, 2075,
-     2080,   71, 2082,   71,   71, 2078, 2083,   71,   71, 2086,
-       71,   71, 2087, 2085,   71, 2084, 2091,   71,   71, 2092,
-       71,   71, 2095, 2090,   71,   71, 2088,   71,   71, 2096,
-       71, 2097, 2093, 2098,   71,   71, 2100, 2089,   71, 2094,
-     2099,   71,   71, 2105,   71, 2101,   71, 2102, 2103,   71,
-     2104,   71,   71,   71,   71,   71, 2108,   71,   71, 2112,
-     2114,   71, 2115,   71, 2107,   71,   71,   71,   71, 2106,
-     2109, 2110, 2117, 2111,   71,   71,   71,   71, 2116, 2113,
-
-     2119, 2121, 2124,   71,   71, 2120,   71, 2122,   71,   71,
-       71, 2118, 2125, 2123,   71,   71, 2126,   71,   71,   71,
-     2135,   71,   71,   71,   71, 2127, 2136, 2132,   71, 2130,
-     2290, 2128, 2138, 2129, 2134, 2131,   71, 2137, 2133,   71,
-     2140, 2139, 2141,   71, 2142,   71,   71,   71, 2145,   71,
-       71, 2143, 2148,   71,   71, 2149,   71,   71, 2146, 2144,
-       71, 2147, 2150, 2154,   71, 2155,   71,   71, 2157,   71,
-       71,   71, 2153,   71, 2151,   71, 2152, 2159,   71,   71,
-     2162,   71, 2163,   71, 2161, 2164, 2156,   71, 2158,   71,
-     2160,   71, 2167,   71, 2169,   71, 2165,   71, 2168, 2171,
-
-       71,   71,   71, 2166,   71, 2174,   71, 2173,   71, 2175,
-     2170, 2177,   71,   71,   71, 2172, 2181,   71,   71,   71,
-       71, 2179,   71, 2178, 2176,   71, 2185, 2186,   71,   71,
-     2190,   71, 2180,   71, 2182, 2184,   71,   71, 2187,   71,
-     2188, 2183,   71, 2192, 2189,   71,   71, 2197,   71,   71,
-     2199, 2193,   71, 2191,   71, 2200,   71, 2194, 2198,   71,
-     2195, 2204,   71,   71, 2205,   71, 2203,   71,   71,   71,
-     2201, 2196, 2202, 2209, 2211,   71, 2207,   71, 2214,   71,
-     2212,   71, 2216,   71,   71,   71, 2208, 2206,   71,   71,
-     2217,   71, 2213, 2210, 2218,   71, 2220,   71, 2221,   71,
-
-     2215,   71,   71,   71,   71, 2226, 2219, 2227, 2222, 2228,
-     2223, 2224, 2225,   71,   71,   71,   71, 2230, 2229,   71,
-     2232, 2233,   71, 2234, 2236, 2231, 2237,   71,   71,   71,
-       71, 2235, 2240,   71,   71,   71,   71,   71,   71, 2242,
-     2247,   71,   71,   71, 2238, 2239, 2248, 2243,   71, 2241,
-     2251,   71, 2244, 2245, 2246,   71, 2252, 2253,   71,   71,
-     2250,   71, 2254, 2249, 2256, 2257, 2255, 2258,   71,   71,
-       71,   71,   71, 2260,   71,   71,   71,   71, 2264, 2265,
-       71, 3048,   71, 2259,   71,   71, 2261, 2267, 2268, 2262,
-       71, 2270,   71, 2269, 2266, 2263,   71,   71,   71,   71,
-
-       71, 2271,   71, 2274, 2275,   71, 2272, 2277,   71,   71,
-       71,   71,   71, 2276,   71, 2281, 2284,   71, 2273, 2283,
-       71,   71,   71, 2285, 2280,   71,   71, 2289, 2278, 2279,
-     2288,   71, 2282,   71,   71,   71, 2291, 2287, 2286, 2297,
-     2292,   71, 2293,   71,   71, 2296, 2294, 2298,   71, 2300,
-       71,   71,   71,   71, 2302,   71,   71, 2295,   71,   71,
-     2299, 2301,   71,   71, 2306,   71,   71,   71, 2308, 2303,
-     2304, 2309, 2310,   71, 2305, 2311,   71, 2312,   71, 2313,
-       71, 2314,   71,   71,   71, 2316, 2319,   71, 2307, 2315,
-       71, 2321,   71,   71, 2324,   71, 2318,   71,   71, 2320,
-
-       71, 2317,   71, 2327, 2328,   71,   71,   71, 2323,   71,
-     2322, 2329,   71,   71, 2332, 2333,   71, 2325, 2326,   71,
-       71, 2331,   71,   71,   71, 2330,   71, 2337,   71, 2339,
-     2334, 2379, 2336, 2335, 2340,   71, 2341,   71, 2342,   71,
-     2343,   71,   71, 2338, 2345,   71,   71, 2347,   71, 2348,
-     2346,   71,   71,   71, 2344,   71, 2353,   71,   71, 2355,
-       71, 2356,   71, 2349, 2350,   71,   71,   71,   71,   71,
-       71, 2352,   71, 2351, 2359, 2362, 2357, 2354, 2358,   71,
-     2360, 2365,   71,   71,   71,   71,   71,   71,   71, 2361,
-       71, 2372, 2363, 2366,   71,   71,   71,   71,   71, 2364,
-
-     2369,   71, 2371, 2373,   71, 2368, 2383,   71, 3048, 2367,
-     2370, 2374, 2375, 2376,   71,   71,   71,   71, 2380, 2381,
-     2377, 2382, 2384,   71, 2378,   71, 2385,   71, 2386,   71,
-     2387,   71,   71, 2388,   71,   71, 2390,   71,   71,   71,
-       71,   71, 2389, 2397,   71,   71,   71, 2395,   71, 2401,
-     2402,   71, 2391, 2392,   71,   71, 2393, 2394,   71, 2396,
-     2398,   71, 2399, 2400, 2404, 2405,   71, 2406, 2403, 2407,
-       71,   71, 2408,   71,   71,   71,   71,   71, 2410, 2409,
-       71, 2416,   71, 2417,   71, 2418,   71,   71, 2411,   71,
-       71,   71, 2412, 2413,   71, 2415, 2414, 2423,   71, 2422,
-
-     2427,   71, 2420, 2425, 2419,   71,   71, 2426, 2421,   71,
-     2424, 2428, 2429,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71, 2431, 2435, 2430,   71,   71, 2433, 2439,
-     2440,   71, 2443,   71, 2432,   71,   71, 2434, 2436, 2437,
-     2442, 2438, 2441,   71,   71, 2447,   71, 2444, 2446, 2448,
-     2445,   71,   71, 2451,   71,   71,   71,   71, 2455,   71,
-       71, 2454, 2457,   71,   71, 2453,   71, 2452,   71, 2458,
-       71, 2449, 2450, 2462,   71, 2459,   71, 2463,   71, 2456,
-     2465,   71, 2461,   71, 2460,   71,   71,   71,   71, 2470,
-       71, 2472,   71,   71,   71, 2468, 2466, 2469, 2467, 2473,
-
-     2464,   71, 2471,   71,   71,   71, 2474, 2475, 2476,   71,
-       71,   71, 2477,   71,   71,   71,   71, 3048, 2479, 2480,
-     2482, 2483, 2485,   71, 2478, 2481, 2486,   71, 2484,   71,
-       71,   71, 2489, 2491, 3048, 2488, 2487,   71,   71,   71,
-       71, 2493, 2492,   71, 2496,   71, 2497,   71, 2495, 2490,
-       71, 2499,   71, 2494,   71, 2501,   71, 2500,   71,   71,
-     2502,   71,   71, 2498, 2503, 2505,   71, 2504,   71,   71,
-     2506,   71,   71, 2507,   71, 2512, 2521, 2511, 2508, 2513,
-       71,   71, 2510,   71,   71,   71,   71, 2509, 2514, 2516,
-       71,   71, 2515, 2517,   71,   71, 2519,   71, 2518, 2520,
-
-       71,   71, 2525,   71,   71,   71, 2523,   71, 2522, 2524,
-     2530,   71, 2526,   71,   71,   71, 2534,   71,   71,   71,
-       71, 2539,   71, 2527, 2532, 2528, 2529,   71,   71, 2533,
-     2541, 2538, 2531, 2542, 2536, 2543,   71, 2535,   71,   71,
-     2537,   71, 2544,   71,   71,   71, 2545,   71,   71, 2546,
-       71,   71, 2549, 2540, 2547,   71, 2552, 2553,   71,   71,
-     2548, 2554,   71, 2556, 2550,   71, 2551, 2555,   71,   71,
-     2557, 2558,   71,   71,   71, 2562,   71,   71, 2560,   71,
-     2563,   71,   71, 2565, 2566,   71, 2561, 2567,   71, 2559,
-       71,   71, 2569, 2568,   71, 2570, 2564, 2572,   71,   71,
-
-     2573, 2574,   71, 2576,   71,   71,   71,   71, 2580, 2575,
-       71, 2571, 2581,   71,   71,   71,   71, 2583, 2577, 2582,
-       71, 2579, 2584,   71, 2578,   71, 2589,   71, 2592,   71,
-       71, 2588,   71, 2585, 2591,   71, 2586,   71,   71,   71,
-     2587, 2595, 2593, 2594,   71,   71,   71, 2597,   71,   71,
-     3048, 2600, 2590,   71, 2604,   71,   71,   71,   71,   71,
-     2606,   71, 2598, 2599, 2596,   71, 2601, 2603, 2607, 2602,
-     2605, 2611, 2608, 2610, 2614,   71, 2612,   71, 2609,   71,
-     2613,   71, 2615,   71, 2616,   71, 2617,   71, 2618,   71,
-       71,   71,   71,   71, 2620, 2619,   71, 2626,   71,   71,
-
-       71, 2623, 2627, 2629,   71,   71, 2631,   71,   71,   71,
-     2621, 3048, 2630, 2624, 2632,   71, 2625, 2622, 2628, 2633,
-       71,   71,   71,   71, 2634,   71, 2637, 2638,   71, 2639,
-     2635, 2636, 2640,   71, 2642,   71,   71,   71,   71, 2643,
-       71,   71, 2646,   71, 2645, 2647,   71,   71, 2641, 2644,
-     2648,   71, 2649,   71,   71,   71, 2652,   71,   71,   71,
-     3048, 2651, 2657,   71, 2655, 2653, 2650,   71,   71,   71,
-     2658, 2699, 2660,   71, 2661,   71, 2662, 2656,   71, 2654,
-     2659,   71, 2663, 2664,   71, 2665, 2667,   71, 2666, 2668,
-       71, 2669,   71,   71,   71,   71,   71, 2674,   71,   71,
-
-     2673, 2671, 2670,   71, 2675,   71, 2677,   71,   71, 2682,
-     2676,   71,   71, 2672, 2678,   71, 2680, 2684,   71, 2679,
-       71,   71,   71,   71, 2685,   71, 2681, 2686, 2687,   71,
-     2688,   71, 2692,   71,   71,   71,   71, 2683,   71,   71,
-     2689,   71, 2695,   71,   71, 2691, 2690, 2693, 2694, 2700,
-     2696,   71, 2697, 2702,   71, 2704,   71,   71, 2698, 2705,
-       71, 2707,   71,   71,   71,   71,   71, 2712,   71, 2701,
-     2703, 2711,   71,   71,   71,   71, 2716,   71, 2706, 2708,
-     2709, 2710, 2718,   71,   71,   71,   71,   71, 2720,   71,
-     2721, 2717, 2713, 2715,   71,   71, 2714, 2723,   71, 2724,
-
-       71, 2726,   71,   71, 2719, 2731, 2728, 2725, 2722, 2730,
-       71,   71, 2729,   71,   71, 2735,   71,   71,   71, 2737,
-     2736, 2727,   71,   71, 2740, 2733, 2741,   71,   71, 2732,
-       71, 2742, 2743,   71, 2734, 2738,   71,   71,   71,   71,
-     2748, 2745, 2739,   71, 2746,   71,   71, 2751,   71,   71,
-       71, 2744,   71, 2756,   71,   71, 2747, 2752,   71,   71,
-     2749, 2750, 2759,   71, 3048, 2755,   71, 2753, 2758, 2760,
-       71, 2761, 2762,   71, 2757, 2754, 2764,   71, 2763, 2765,
-       71, 2766,   71,   71, 2768,   71,   71,   71, 2767,   71,
-       71,   71, 2773, 2774,   71,   71,   71,   71, 2778,   71,
-
-       71, 2779,   71,   71, 3048, 2769, 2777,   71, 2782, 2770,
-     2775, 2771, 2772, 2783,   71, 2776, 2784,   71,   71,   71,
-     2780, 2781, 2787, 2785,   71,   71,   71,   71,   71, 2790,
-       71,   71, 2791, 2786, 2789,   71, 2788,   71,   71,   71,
-     2794,   71,   71,   71, 2796, 2792,   71, 2797,   71, 2795,
-       71, 2793,   71,   71,   71,   71,   71, 2813,   71, 2806,
-     2798, 2807, 2799, 2800, 2801, 2809, 2802,   71, 2808, 2803,
-     2804,   71, 2810,   71, 2805, 2811, 2814,   71,   71, 2816,
-       71,   71, 2815, 2817,   71, 2824, 2812, 2818, 2819,   71,
-       71, 2820, 2821,   71,   71, 2822, 2823,   71,   71, 2825,
-
-       71,   71,   71,   71, 2831,   71,   71, 2826, 2830,   71,
-     2834, 2827, 2848, 2828,   71,   71, 2833,   71,   71,   71,
-       71, 2829,   71, 2835,   71, 2839,   71, 2832, 2838, 2869,
-     2836, 2840,   71, 2841,   71, 2837,   71, 2842,   71, 2846,
-       71, 2843,   71,   71, 2847,   71,   71, 2844, 2852,   71,
-     2845, 2849, 2855,   71, 2853, 2850, 2856,   71,   71, 2858,
-       71, 2904,   71, 2851, 2857, 2854, 2859,   71,   71, 2861,
-       71, 2862,   71, 2860, 2863,   71, 2864,   71, 2865,   71,
-     2866,   71, 2867,   71, 2868,   71, 2870,   71,   71,   71,
-       71,   71,   71, 2875,   71,   71,   71, 2871,   71, 2879,
-
-       71, 2872,   71, 2881,   71,   71, 2876,   71, 2877, 2888,
-     2873, 2874, 2878,   71, 2882,   71, 2883, 2880,   71, 2885,
-       71,   71,   71, 2887,   71, 2886,   71, 2890,   71,   71,
-       71, 2884,   71,   71, 2894, 2889, 2897,   71,   71, 2895,
-     2899,   71,   71, 2891, 2892, 2893,   71, 2896, 2900,   71,
-     2898, 2901,   71,   71,   71, 2903,   71,   71,   71,   71,
-     2912, 2902, 2905, 2909,   71,   71, 2910, 2906, 2908,   71,
-       71, 2911,   71,   71,   71,   71,   71, 2907, 2913,   71,
-       71,   71,   71,   71, 2919,   71, 2916, 2923, 2914, 2918,
-     2915, 2920, 2926,   71, 2927, 2924,   71, 2921, 2917,   71,
-
-     2922, 2928,   71, 2925,   71, 2929, 2930,   71, 2931,   71,
-       71,   71,   71, 2934,   71, 2932, 2935, 2936,   71, 2933,
-     2939,   71,   71,   71,   71,   71,   71,   71, 2942, 2944,
-       71, 2947,   71, 2938, 2941, 2940,   71,   71,   71, 2937,
-     2945, 2950,   71, 2954, 2943,   71, 2946,   71, 2951,   71,
-     2955, 2948,   71, 2952,   71, 2949,   71, 2953,   71,   71,
-     2960,   71, 2961,   71, 2959,   71, 2956, 2957,   71,   71,
-       71,   71,   71,   71, 2965,   71,   71, 2958, 2967,   71,
-     2974,   71,   71, 2964,   71, 2969, 2962, 2972, 2963, 2970,
-       71, 2966,   71,   71, 2968, 2973, 2978,   71, 2971,   71,
-
-       71, 2980,   71, 2981, 2975, 2979,   71,   71,   71,   71,
-     2976, 2982, 2977, 2983, 2984, 2986, 2987,   71, 2985,   71,
-       71,   71, 2989,   71, 2988,   71,   71,   71,   71, 2990,
-     2995,   71,   71, 2992,   71, 2998,   71, 2999,   71, 2991,
-       71,   71,   71,   71,   71, 2997, 2993, 2994, 3002, 3000,
-     2996,   71, 3001,   71, 3006,   71, 3007, 3005,   71,   71,
-     3003, 3004,   71, 3010,   71, 3012,   71, 3013, 3008,   71,
-       71,   71, 3017,   71, 3014,   71,   71, 3015, 3011,   71,
-     3018, 3019, 3020,   71, 3009,   71,   71,   71,   71,   71,
-     3016,   71, 3021, 3022, 3024, 3023, 3026,   71,   71,   71,
-
-       71,   71, 3032, 3028, 3029,   71, 3025, 3027, 3033,   71,
-     3030,   71,   71, 3036, 3037,   71,   71, 3039,   71, 3031,
-     3040,   71,   71, 3038, 3034,   71,   71,   71,   71, 3041,
-     3035, 3042, 3043, 3046,   71, 3047,   71, 3048, 3048, 3048,
-     3048, 3048, 3048, 3048, 3044, 3048, 3048, 3045,   43,   43,
-       43,   43,   43,   43,   43,   48,   48,   48,   48,   48,
-       48,   48,   53,   53,   53,   53,   53,   53,   53,   59,
-       59,   59,   59,   59,   59,   59,   64,   64,   64,   64,
-       64,   64,   64,   74,   74, 3048,   74,   74,   74,   74,
-      141,  141, 3048, 3048, 3048,  141,  141,  143,  143, 3048,
-
-     3048,  143, 3048,  143,  145, 3048, 3048, 3048, 3048, 3048,
-      145,  148,  148, 3048, 3048, 3048,  148,  148,  150, 3048,
-     3048, 3048, 3048, 3048,  150,  152,  152, 3048,  152,  152,
-      152,  152,   75,   75, 3048,   75,   75,   75,   75,   13,
-     3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
-     3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
-     3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
-     3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048
+      100,  119,  101,  107,   71,  120,  226,  108,  144,  121,
+      152,  144,   71,  141,   71,  111,   71,  113,   71,  122,
+      123,  114,  124,  125,  155,  115,  126,   71,  130,   71,
+      131,  116,   71,  127,  117,   71,  134,  128,  129,  132,
+
+      220,  118,  152,   71,  138,  133,  135,  159,  139,  160,
+      136,  137,  140,  146,   71,  146,  146,  156,  146,  149,
+      149,   75,   71,   75,   75,  151,   75,  151,  151,   70,
+      151,   70,   70,  154,   70,   72,  166,   71,   71,   73,
+       70,   75,  157,   75,   75,   71,   75,   71,  161,   71,
+      162,   71,   75,   76,   71,  170,  171,   71,  165,  174,
+      167,   71,   71,  163,   71,   71,  168,   71,  169,   71,
+       71,   71,   71,  172,  183,  176,  173,  184,  175,   71,
+      178,  179,  177,  192,   71,  181,  190,  186,  180,  182,
+      187,   71,   71,  185,   71,   71,  193,  195,   71,  150,
+
+       71,  196,   71,  188,  189,   71,  201,  202,   71,   71,
+       71,  191,  200,   71,  198,  204,  194,  197,  203,  199,
+       71,   71,  205,   71,  207,  209,   71,   71,   71,  214,
+      206,  208,  211,   71,   71,   71,  212,   71,   71,  216,
+       71,  210,   71,  228,   71,   71,  213,  222,  217,  219,
+       71,  225,  227,  215,  218,   71,  221,  231,  223,   71,
+      229,  233,  224,  230,   71,   71,  237,   71,  232,   71,
+       71,   71,   71,   71,  234,  238,  241,   71,  244,  240,
+      235,  236,  242,  245,  142,  142,  144,  239,  254,  144,
+      243,  146,  152,  146,  146,  246,  146,  149,  149,  151,
+
+       71,  151,  151,   75,  151,   75,   75,   71,   75,   71,
+      248,   71,  247,   71,   71,  154,   71,   71,  250,  252,
+       71,  255,   71,  261,  251,  249,  253,  258,   71,   71,
+      262,   71,  257,  256,   71,   71,  265,  260,  266,  264,
+      259,  267,   71,   71,   71,   71,  268,   71,  275,  270,
+       71,   71,   71,  148,  271,  277,  263,  278,   71,  272,
+       71,  276,  281,  269,  283,  273,  274,   71,   71,   71,
+      279,  280,  284,   71,   71,   71,   71,   71,   71,   71,
+       71,  290,  291,  285,  297,   71,  287,   71,  286,  288,
+       71,  282,  348,  289,   71,  292,  299,  300,  293,   71,
+
+      294,   71,  301,   71,  302,  298,  326,  304,  309,  306,
+       71,  307,  295,   71,  296,   71,  303,   71,  310,  305,
+       71,  312,  313,   71,   71,  311,  308,   71,   71,  315,
+      314,   71,   71,   71,   71,   71,   71,   71,  317,   71,
+      319,   71,   71,   71,  316,  321,  323,   71,   71,  328,
+       71,  324,  322,  318,  329,   71,   71,   71,  320,  334,
+       71,  330,  325,  327,  332,   71,  331,  337,   71,   71,
+       71,   71,  333,   71,  339,  335,  336,   71,  342,  340,
+      343,  344,   71,   71,  346,   71,   71,   71,  338,  341,
+       71,   71,  349,  350,   71,  347,  351,  353,   71,   71,
+
+      354,  345,   71,   71,  357,   71,  152,   71,  356,   71,
+       71,   71,  147,  364,   71,  360,  362,  355,  358,   71,
+      352,  365,   71,   71,  359,   71,  368,   71,  366,  361,
+      367,   71,   71,  363,   71,   71,   71,  369,   71,  374,
+      375,  376,   71,  378,  373,  370,   71,   71,   71,  372,
+      377,  379,  371,   71,   71,   71,  381,   71,  382,   71,
+       71,   71,   71,  385,   71,  380,  386,  388,   71,  383,
+      387,  390,  393,   71,  384,   71,  392,   71,  389,   71,
+      396,  391,   71,   71,  395,  397,   71,   71,   71,  394,
+       71,   71,   71,  402,   71,   71,   71,  403,   71,  145,
+
+      405,   71,   71,  401,   71,  399,  398,   71,  408,  400,
+       71,   71,  413,  404,  410,   71,  412,  406,   71,  407,
+      409,   71,  415,   71,  414,   71,   71,   71,  424,  428,
+       71,  411,   71,  423,  422,   71,  443,   71,  425,  430,
+      426,  416,  143,  429,  417,   71,   71,  431,  432,  418,
+      419,  420,  421,  433,   71,   71,  427,  435,  434,   71,
+       71,   71,   71,  436,   71,   71,  437,   71,   71,  445,
+      438,  441,  444,  442,   71,   71,  446,  439,  440,  447,
+       71,   71,  452,   71,  449,   71,   71,  448,   71,   71,
+      453,  457,  454,  458,  469,   71,  451,   71,   71,   71,
+
+      450,  455,  459,  456,   71,   71,   71,  470,  462,  460,
+      463,   71,  464,  471,  465,  461,  472,   71,   71,   71,
+       71,   71,   71,  473,   71,  474,   71,  466,  152,  152,
+      467,  475,  468,   71,   71,  476,  489,   71,   71,  486,
+      484,  487,  485,  477,   71,  478,   71,  479,  488,  504,
+       71,  491,  490,  499,   71,  500,  501,   71,   71,   71,
+      480,  502,   71,  481,  503,  482,   71,  483,   71,  505,
+      492,  493,  506,  508,   71,  507,   71,   71,   71,  509,
+      494,  586,  495,  496,  497,   71,   71,  498,  513,   71,
+       71,  512,   71,   71,   71,   71,  511,  519,  514,   71,
+
+      510,  515,   71,  522,  521,  518,  516,   71,  520,  517,
+       71,  524,  526,   71,   71,  523,   71,   71,   71,   71,
+       71,  525,  529,  530,  531,   71,   71,   71,   71,  536,
+      528,   71,  538,   71,  535,  533,  532,  539,  527,   71,
+      541,  534,   71,   71,   71,   71,   71,  537,   71,   71,
+      542,   71,  540,  551,  547,  552,   71,  543,  550,  544,
+      546,   71,  545,  554,   71,  548,   71,  549,  557,   71,
+      553,   71,  556,   71,  558,   71,   71,  555,  559,   71,
+      561,  563,   71,   71,   71,   71,  566,  567,  564,  562,
+       71,   71,   71,   71,  568,  560,   71,  565,   71,   71,
+
+      573,  571,   71,  572,   71,   71,  569,   71,  574,   71,
+       71,   71,  579,  570,  575,  580,   71,  582,   71,  578,
+       71,   71,  581,  577,  576,  583,   71,  585,   71,  587,
+       71,   71,   71,   71,   71,   71,   71,   71,  589,  584,
+      590,  592,  588,   71,  599,  594,  601,   71,   71,  598,
+       71,   71,   71,  591,  593,  595,  600,  596,   71,   71,
+       71,   71,  603,  597,  602,   71,  604,  609,  606,  605,
+       71,  610,   71,   71,  607,  611,  608,  612,   71,   71,
+       71,   71,   71,   71,  614,  615,  618,   71,   71,   71,
+       71,   71,  619,  621,  620,   71,   71,   71,   71,   71,
+
+      616,  613,  617,  635,  624,  622,   71,  150,   71,  623,
+       71,  625,  634,  642,  672,  633,  626,  636,  627,   71,
+       71,  645,  637,  638,  628,   71,  629,   71,   71,  630,
+      631,   71,  646,  639,   71,  641,  632,  640,   71,   71,
+      644,  643,  648,   71,   71,  651,   71,   71,  653,   71,
+      647,   71,   71,   71,   71,   71,   71,   71,   71,  148,
+      659,  649,   71,  650,  654,  655,  656,  660,  663,   71,
+       71,  652,  662,  657,  658,  661,  152,  666,  664,   71,
+      665,   71,  667,   71,   71,   71,   71,   71,  147,  673,
+       71,   71,   71,  675,  668,  676,  677,   71,  670,  678,
+
+      669,  671,  680,  674,  679,   71,   71,   71,   71,   71,
+      682,   71,   71,   71,   71,   71,  686,  685,  681,   71,
+      694,   71,  691,  683,  687,   71,  684,  692,   71,   71,
+      690,  688,  693,  696,  689,  695,   71,  697,   71,   71,
+      698,   71,  699,   71,   71,   71,  700,  701,   71,   71,
+      702,   71,  707,   71,  705,   71,   71,  704,  706,  710,
+      709,   71,  703,   71,   71,   71,   71,  711,   71,  713,
+      715,   71,   71,  716,  708,  718,   71,   71,   71,  712,
+      719,   71,  722,   71,  720,  717,  714,   71,   71,   71,
+       71,  729,  725,  726,  145,  721,  723,   71,   71,  724,
+
+       71,   71,   71,  727,  731,  728,  732,  730,   71,   71,
+       71,   71,  735,  734,   71,  736,  737,   71,   71,   71,
+       71,  739,   71,  741,  743,   71,   71,  749,  733,  738,
+      740,  744,   71,   71,   71,   71,  746,   71,  751,  742,
+       71,  747,   71,  750,  143,  745,  748,  752,  753,   71,
+       71,   71,  754,   71,   71,   71,  755,  760,  756,  758,
+      761,  759,  762,   71,   71,   71,   71,  757,   71,  763,
+      764,  765,   71,   71,  771,   71,  766,   71,   71,   71,
+       71,   71,  776,  769,  770,  767,  768,  773,   71,   71,
+       71,  780,   71,  774,  772,  778,  777,   71,   71,  775,
+
+      783,   71,  781,  782,   71,  784,   71,   71,  785,   71,
+      779,  787,   71,   71,  789,   71,   71,   71,   71,  795,
+       71,   71,   71,  788,  796,   71,  786,   71,   71,   71,
+      797,  790,   71,  791,  792,   71,  793,  798,  794,  804,
+       71,   71,  799,   71,  802,   71,  800,   71,  801,   71,
+      803,   71,   71,  806,  805,  809,   71,   71,   71,   71,
+       71,  817,  807,   71,   71,   71,  808,  810,  811,  818,
+       71,   71,   71,  816,  812,  813,  814,  815,  821,   71,
+       71,  820,  819,   71,  822,   71,   71,  823,   71,   71,
+      826,  824,  828,  825,  827,   71,   71,  833,   71,   71,
+
+      829,  830,   71,   71,  831,  832,   71,  152,   71,  838,
+       71,  835,  837,  834,  839,  836,   71,   71,   71,   71,
+      845,   71,  840,  848,   71,  841,   71,  846,   71,   71,
+      851,   71,  842,  843,   71,  847,   71,  849,  853,  844,
+       71,   71,   71,  857,   71,   71,   71,   71,  850,   71,
+       71,  852,  854,  858,  859,   71,   71,   71,   71,   71,
+      856,  889,  860,   71,  871,  872,  855,   71,  875,   71,
+      862,  861,   71,  869,  870,   71,   71,  863,   71,  873,
+      874,  864,   71,  876,  865,   71,  877,  878,   71,  881,
+       71,  866,  867,   71,  868,   71,   71,   71,  880,  879,
+
+       71,  882,  883,   71,  884,  904,  893,  885,  891,  890,
+      894,   71,  886,   71,   71,  896,   71,   71,  887,  888,
+      895,  892,   71,  898,   71,   71,   71,   71,  900,  899,
+      906,  897,  901,  902,   71,   71,  905,  903,   71,   71,
+       71,   71,  910,   71,   71,   71,   71,  909,   71,  913,
+      917,   71,  919,   71,  930,   71,   71,  912,  907,  908,
+      911,   71,  914,  915,  920,  923,  918,   71,  916,  921,
+       71,   71,  922,  924,   71,   71,  926,  927,   71,   71,
+      925,   71,   71,   71,  928,  931,   71,   71,   71,  929,
+       71,  932,   71,  934,   71,   71,   71,  935,  939,   71,
+
+       71,  942,   71,   71,  941,  933,   71,   71,   71,  940,
+      936,  937,  944,  938,   71,  945,   71,  947,   71,  946,
+       71,  943,   71,  948,   71,   71,  954,  949,   71,  956,
+      950,  955,   71,  952,   71,   71,   71,   71,  953,   71,
+      964,   71,  961,  951,   71,  959,  963,   71,   71,  957,
+      962,   71,   71,  966,  958,   71,   71,   71,   71,   71,
+       71,  960,   71,  977,  974,   71,   71,  972,  965,   71,
+       71,   71,  967,   71,  970,  968,  969,  971,  979,  978,
+      975,   71,  973,   71,  976,   71,   71,  981,   71,  982,
+      980,  984,  985,   71,   71,  983,   71,  987,   71,   71,
+
+       71,  994,   71,   71,  989,  986,  996,   71,   71,  998,
+      999,   71,   71,   71,  988,   71,   71,  995,  990,  992,
+       71,  991,  993,   71, 1000, 1002,   71,   71,  997,   71,
+     1001, 1004, 1007, 1003,   71, 1006,   71, 1011,   71, 1008,
+       71,   71, 1010,   71, 1005, 1009, 1013,   71,   71, 1016,
+      152,   71,   71, 1015,   71, 1019, 1018,   71,   71, 1014,
+     1012,   71,   71,   71,   71,   71, 1017, 1022,   71,   71,
+     1034,   71, 1037,   71,   71, 1035,   71,   71, 1021, 1020,
+     1023, 1039, 1025,   71, 1026,   71, 1027, 1024,   71, 1036,
+     1042, 1028,   71, 1029,   71, 1060,   71, 1030, 1040, 1031,
+
+       71, 1038,   71,   71, 1032, 1044, 1041, 1047, 1043, 1033,
+     1045,   71,   71,   71, 1046,   71,   71, 1049, 1050, 1048,
+     1053,   71,   71,   71, 1052, 1058, 1059,   71, 1051, 1057,
+     1054,   71,   71, 1061, 1062,   71, 1056,   71,   71,   71,
+       71,   71, 1055,   71,   71, 3093, 1074,   71, 1078, 1063,
+       71, 1073,   71, 1077, 1064, 1065,   71, 1066, 1075, 1076,
+       71,   71, 1067,   71, 1068, 1083,   71,   71, 1079, 1081,
+     1069, 1084, 1085,   71,   71, 1070, 1071, 1080,   71, 1089,
+     1082,   71, 1072,   71, 1086,   71,   71, 1088, 1090,   71,
+       71,   71, 1087,   71, 1095,   71,   71,   71, 1092, 1093,
+
+       71, 1098, 1096,   71,   71, 1091,   71, 1094,   71,   71,
+       71,   71,   71,   71, 1097, 1103,   71, 1099, 1100, 1104,
+     1102, 1107, 1105, 1101,   71, 1109, 1106,   71, 1108,   71,
+       71,   71,   71, 1110,   71,   71,   71, 1115,   71, 1116,
+     1117,   71, 1119, 1111, 1112, 1118, 1114, 1113, 1120,   71,
+       71,   71,   71, 1122,   71, 1125,   71,   71, 1121, 1129,
+     1126,   71,   71, 1123,   71, 1127, 1130, 1124, 1128,   71,
+       71,   71, 1135, 1137,   71,   71,   71, 1131,   71,   71,
+     1132, 1139, 1133,   71,   71, 1134,   71, 1141,   71, 1138,
+       71, 1136,   71, 1143,   71, 1144, 1142, 1140,   71, 1146,
+
+       71,   71, 1145, 1147, 1148,   71, 1149, 1152, 1153,   71,
+       71, 1151,   71,   71,   71,   71,   71, 1150, 1156, 1154,
+       71, 1157,   71,   71,   71, 1163, 1161, 1164,   71,   71,
+     1155,   71, 1158,   71, 1165, 1159,   71, 1162,   71, 1168,
+       71, 1166, 1160, 1167, 1171,   71, 1169,   71, 1173,   71,
+       71,   71, 1172,   71,   71,   71,   71,   71, 1177, 1178,
+     1170,   71, 1174, 1175,   71,   71, 1183, 1184, 1179, 1176,
+       71,   71,   71,   71,   71,   71, 1181, 1187,   71, 1180,
+     1186,   71, 1191,   71, 1182, 1185,   71,   71, 1189,   71,
+     1188,   71,   71, 1190, 1197,   71, 1193,   71,   71,   71,
+
+       71, 1192, 1203,   71,   71, 1201,   71,   71, 1194, 1200,
+     1233, 1196, 1198, 1202, 1199, 1205, 1195, 1206,   71,   71,
+     1208,   71,   71,   71, 1207,   71, 1204, 1209,   71,   71,
+       71,   71,   71,   71, 1212,   71, 1218,   71,   71, 1210,
+     1215,   71, 1211,   71,   71, 1213,   71, 1216,   71,   71,
+     1214, 1224, 1219, 1229, 1217, 1222,   71, 1228, 1221, 1220,
+     1225,   71, 1226,   71, 1223, 1227, 1230,   71, 1231,   71,
+       71,   71,   71,   71,   71,   71,   71, 1232, 1237, 1236,
+     1239, 1242,   71,   71, 3093, 1240,   71,   71, 1234, 1235,
+     1247, 1238, 1243,   71,   71, 1241,   71,   71, 1244, 1246,
+
+       71,   71,   71, 1245,   71, 1248,   71,   71,   71,   71,
+       71,   71, 1249, 1254, 1252, 1250,   71, 1259,   71, 1253,
+     1251, 1255,   71,   71, 1264,   71, 1256,   71, 1258, 1257,
+       71, 1260, 1263,   71,   71, 1266,   71,   71, 1261, 1265,
+       71, 1268, 1262, 1270,   71,   71, 1269,   71, 1271,   71,
+       71, 1275,   71, 1267, 1273,   71, 1272, 1274,   71, 1284,
+     1282, 1283, 1992, 1276, 1287,   71, 1277, 1278,   71, 1285,
+       71, 1279, 1288,   71,   71, 1286,   71, 1280,   71, 1289,
+       71, 1281,   71, 1291,   71, 1290,   71, 1293,   71,   71,
+       71, 1294,   71, 1295, 1292,   71, 1296, 1300, 1298,   71,
+
+     1303, 1304, 1297,   71,   71,   71,   71,   71, 1305, 1301,
+     1299,   71,   71, 1307,   71, 1306, 1317, 1302, 1308, 1312,
+     1309,   71, 1310,   71, 1311, 1318, 1313,   71, 1314, 1315,
+     1316,   71,   71,   71, 1322,   71,   71,   71, 1319, 1323,
+       71, 1325, 1321,   71,   71,   71,   71, 1331,   71, 1320,
+       71, 1326, 1327,   71,   71, 1332, 1333, 1324,   71,   71,
+     1330,   71,   71, 1328, 1329,   71, 1335,   71, 1338,   71,
+     3093, 1337, 1334, 1336, 1340, 1341,   71, 1343,   71,   71,
+       71, 1344, 1342, 1345,   71,   71,   71, 1349,   71, 1346,
+     1339,   71, 1351,   71,   71, 1348,   71, 1352,   71, 1353,
+
+       71, 1356,   71,   71, 1347,   71,   71,   71, 1358,   71,
+       71, 1350, 1360,   71,   71, 1362,   71, 1364, 1361, 1354,
+       71, 1355,   71, 1357,   71, 1366, 1359, 1367, 1363,   71,
+       71, 1365, 1368,   71, 1369, 1370,   71, 1371, 1372,   71,
+       71,   71,   71, 1377, 1378, 1380, 1374,   71, 1375,   71,
+       71,   71, 1379,   71,   71, 1376,   71, 1373, 1384,   71,
+       71,   71, 1381,   71, 1388, 1389,   71, 1383, 1391,   71,
+       71,   71, 1390, 1382,   71,   71,   71,   71,   71,   71,
+     1385, 1386,   71, 1392,   71, 1398, 1387,   71, 1395, 1393,
+       71, 1396,   71, 1403,   71, 1394, 1397, 1402,   71, 1399,
+
+       71, 3093,   71, 1405, 1407, 1401,   71, 1400,   71, 1408,
+       71,   71,   71, 1404,   71, 1410, 1411,   71,   71, 1406,
+     1409,   71,   71, 1416, 1418, 1412, 1417, 1413, 1420, 1414,
+       71, 1419, 1415,   71,   71,   71,   71, 1421, 1423,   71,
+     1425, 1422,   71, 1424,   71,   71,   71, 1428,   71,   71,
+     1430,   71,   71, 1435, 1427,   71,   71, 1429,   71, 1436,
+       71, 1426, 1432,   71, 1439,   71, 1431, 1433,   71, 1434,
+       71,   71, 1440,   71, 1437,   71,   71, 1438,   71, 1442,
+     1446, 1448, 1441, 1443,   71, 1447, 1444,   71,   71, 1451,
+       71,   71, 1445,   71,   71, 1456, 1450, 1453, 1457, 1455,
+
+       71,   71, 1449,   71,   71, 1452,   71, 1458,   71, 1459,
+     1460,   71,   71,   71, 1454,   71, 1461, 1464, 1463,   71,
+       71, 1467, 1462,   71,   71,   71, 1466,   71,   71, 1473,
+     1465, 1475, 1469, 1470, 1474,   71, 1476,   71,   71, 1471,
+       71, 1478,   71, 1468,   71,   71, 1472,   71,   71,   71,
+       71, 1486, 1482,   71, 1481,   71, 1489,   71, 1477,   71,
+     1487, 1479,   71, 1480,   71, 1492,   71, 1483, 1485, 1484,
+     1491,   71,   71,   71,   71,   71,   71,   71, 1490, 1488,
+       71,   71, 1500,   71,   71, 1493, 1501,   71, 3093, 1497,
+       71, 1494, 1495, 1496, 1508, 1499, 1502, 1498,   71, 1504,
+
+     1505,   71,   71, 1503, 1506,   71,   71, 1507,   71,   71,
+       71, 1509, 1512,   71, 1515, 1510, 1513,   71,   71, 1519,
+       71, 1511,   71,   71, 1521,   71,   71, 1520, 1516, 1514,
+       71,   71,   71,   71, 1518,   71, 1524, 1517, 1522, 1523,
+       71,   71, 1530, 1528, 1525, 1526, 1531,   71,   71,   71,
+       71,   71, 1527, 1529, 1536, 1534, 1533,   71, 1535,   71,
+       71, 1538,   71,   71, 1540,   71, 1539, 1532,   71,   71,
+       71, 1537, 1543,   71,   71, 1541,   71, 1546,   71,   71,
+       71,   71, 1545,   71, 1542, 1550,   71, 1552,   71, 1547,
+     1544,   71,   71, 1556,   71, 1551,   71,   71, 1549, 1548,
+
+       71, 1553, 1559, 1554, 1561,   71,   71,   71, 1557,   71,
+     1562,   71, 1564,   71, 1558, 1560, 1555,   71,   71,   71,
+       71, 1567, 1570,   71, 1566, 1569,   71, 1563,   71,   71,
+       71, 1565,   71, 1572,   71, 1577,   71, 1568,   71,   71,
+       71, 1578,   71, 1575, 1571,   71, 3093, 1573, 1574, 1581,
+     1582,   71, 1579, 1584, 1586, 1576,   71, 1588, 1580, 1583,
+       71, 1585, 1587,   71,   71, 1590,   71,   71,   71,   71,
+       71,   71, 1595,   71, 1592, 1593,   71, 1596, 1589,   71,
+       71,   71,   71, 1601, 1600,   71, 1591, 1597,   71,   71,
+       71, 3093, 1607, 1594, 1608, 1599,   71, 1598,   71, 1604,
+
+     1602,   71, 1605,   71, 1609, 1603,   71,   71,   71, 1617,
+     1614, 1612, 1611, 1615, 1606, 1613,   71,   71, 1618,   71,
+     1610, 1616, 1619,   71,   71,   71,   71,   71,   71, 1620,
+       71, 1626, 1627, 1625,   71, 1629, 1621,   71,   71, 1628,
+       71,   71,   71, 1622,   71, 1623,   71, 1624,   71, 1631,
+     1632,   71,   71, 1633,   71,   71, 1641,   71,   71,   71,
+     1634,   71,   71, 1630,   71,   71, 1635,   71, 1637, 1638,
+     1639,   71, 1636,   71, 1640, 1646,   71, 1642, 1644, 1643,
+       71,   71, 1649,   71,   71, 1648, 1645, 1647, 1650,   71,
+       71,   71,   71,   71,   71, 1652,   71, 1651, 1654, 1656,
+
+     1657,   71, 1653, 1658, 1663, 1655, 1664,   71,   71, 1659,
+       71, 1660, 1665,   71,   71,   71, 1661, 1668,   71, 1662,
+     1666, 1669,   71,   71,   71,   71,   71,   71, 1667, 1672,
+     1673, 1670,   71, 1681, 1671, 1676,   71,   71,   71,   71,
+     1682,   71, 1674, 1675,   71, 1678, 1680,   71, 1679,   71,
+       71, 1677,   71,   71, 1688,   71,   71, 1684, 1683, 1689,
+       71, 1690,   71, 1686, 1691, 1685, 1687,   71, 1694,   71,
+       71, 1696,   71, 1693,   71, 1697,   71, 1698, 1692,   71,
+       71, 1700, 1705,   71, 1701, 1695,   71, 1706,   71,   71,
+       71, 1699, 1702, 1711,   71, 1710,   71, 1707, 1704,   71,
+
+     1703, 1708, 1713,   71, 1714,   71, 3093,   71,   71, 1716,
+       71, 1709, 1712, 1715,   71,   71, 1718, 1720,   71, 1719,
+     1717,   71, 1724,   71, 1722,   71, 1726,   71,   71,   71,
+     1723, 1721,   71, 1725,   71,   71,   71, 1728,   71, 1734,
+       71, 1729,   71, 1736,   71, 1737, 1727, 1730, 1731,   71,
+     1732,   71, 1733,   71,   71, 1738,   71, 1743,   71,   71,
+       71, 1735,   71,   71, 1739, 1747,   71,   71,   71, 1742,
+       71, 1740, 1749, 1741,   71, 1745,   71,   71, 1746, 1750,
+     1744, 1751, 1748,   71,   71, 1755, 1753,   71, 1752,   71,
+     1754, 1756,   71, 1760,   71,   71,   71,   71,   71, 1758,
+
+       71,   71,   71, 1757, 1762, 1767,   71,   71, 1759, 1761,
+     1763,   71, 1764, 1770, 1768, 1765, 1771,   71,   71,   71,
+       71, 1766, 1772, 1774, 1769, 1773,   71, 1776,   71, 1775,
+     1777,   71,   71,   71, 1779,   71,   71,   71, 1780,   71,
+     1778,   71,   71,   71,   71,   71, 1785,   71,   71,   71,
+     1789,   71, 1786, 1790, 1797,   71, 1781, 1783,   71, 1782,
+     1784, 1787, 1788, 1793,   71,   71, 1791, 1798, 1792, 1795,
+     1794,   71, 1799,   71,   71,   71,   71,   71, 1803,   71,
+     1796,   71, 1806, 1807,   71, 1808,   71, 1810,   71,   71,
+     1800, 1801,   71, 1804, 1802, 1805,   71, 1809,   71, 1811,
+
+     1814,   71,   71, 1816,   71, 1818, 1815, 1817,   71,   71,
+     1812,   71, 1820, 1813, 1819,   71,   71,   71,   71, 1822,
+     1823,   71,   71, 1824, 1825,   71, 1832, 1826, 1827, 1828,
+       71,   71,   71, 1821, 1829, 1834,   71, 1830,   71,   71,
+     1835,   71,   71,   71, 1837, 1831, 1840,   71,   71, 1838,
+     1836, 1833,   71,   71, 1839,   71, 1841, 1844,   71,   71,
+     1846,   71,   71, 1842,   71, 1849, 1850,   71,   71, 1843,
+     1852,   71,   71,   71, 1857, 1847,   71, 1858,   71, 1845,
+       71, 1854, 1851, 1848,   71, 1855,   71,   71,   71,   71,
+       71, 1864,   71, 1853, 1856, 1861, 1862,   71,   71,   71,
+
+     1868, 1860,   71, 1867, 1871, 1859,   71,   71,   71, 1870,
+       71, 1874,   71, 1866, 1872, 1863,   71,   71, 1865, 1869,
+     1875,   71,   71,   71,   71, 1877, 1873, 1876, 1878,   71,
+       71,   71, 1881,   71, 1884, 1885, 1880,   71,   71,   71,
+       71,   71, 1879, 1888,   71,   71, 1893,   71, 1882,   71,
+     1892,   71, 1887, 3093,   71,   71,   71, 1883, 1886, 1889,
+     1890,   71, 1898,   71, 1899, 1897, 1891, 1901, 1894, 1895,
+     1896, 1900,   71,   71, 1904,   71,   71,   71,   71,   71,
+       71,   71, 1911, 1908, 1902,   71,   71,   71,   71, 1903,
+     1913, 1906, 1914,   71,   71, 1915,   71, 1905, 1907,   71,
+
+     1909, 1910, 1912, 1916,   71, 1917, 1920, 1921,   71, 1922,
+       71, 1923, 1925, 1926,   71, 1918, 1924,   71,   71,   71,
+     1919,   71,   71, 1930,   71,   71, 1928,   71,   71,   71,
+       71, 1932, 1935, 1937, 1929,   71, 1931, 1933,   71,   71,
+     1927,   71,   71,   71,   71, 1943,   71, 1938, 1941, 1942,
+     1944,   71, 1936, 1934, 1939, 1945,   71,   71, 1947,   71,
+     1940,   71,   71,   71,   71, 1948, 1949,   71, 1950,   71,
+     1953,   71, 1951,   71, 1952,   71, 1955, 1946,   71,   71,
+     1959,   71,   71, 1954, 1958, 1956,   71,   71,   71,   71,
+     1957, 1960, 1961, 1962, 1963,   71,   71,   71, 1965,   71,
+
+       71, 1970,   71, 1968,   71, 1969, 1964,   71,   71,   71,
+       71, 1975,   71, 1972, 1966,   71, 1967,   71, 1979,   71,
+     1971,   71, 1976, 1974, 1978,   71, 1973,   71, 1980,   71,
+     1977,   71, 1983, 1981, 1985,   71,   71,   71,   71, 1986,
+       71, 3093, 1984, 1991,   71, 1993, 1982, 1987,   71,   71,
+     1994,   71, 1990, 1988,   71, 1989, 1995,   71,   71, 1996,
+       71, 1997,   71, 1999,   71,   71,   71,   71,   71, 2000,
+       71,   71,   71,   71, 2011,   71, 2007, 2002, 1998, 2003,
+     2004,   71,   71,   71, 2010, 2001, 2006,   71, 2015, 2008,
+     2014,   71, 2005, 2009,   71,   71, 2018,   71,   71, 2012,
+
+     2017,   71, 2013, 2020,   71,   71,   71,   71, 2021,   71,
+       71, 2016, 2026, 2022,   71, 2019, 2024,   71, 2025, 2028,
+       71, 2030,   71, 2023,   71,   71,   71, 2033, 2027, 2032,
+       71, 2034,   71,   71, 2029, 2035, 2038,   71,   71,   71,
+     2031, 2042,   71, 2039,   71,   71, 2043,   71,   71, 2041,
+     2036,   71, 2040, 2037, 2047,   71, 2044,   71, 2048, 2046,
+       71, 2051,   71, 2045,   71,   71, 2049,   71,   71, 2052,
+     2053, 2056,   71, 2054, 2057,   71, 2058,   71, 2059,   71,
+     2050, 2055,   71,   71,   71,   71,   71, 2061, 2060,   71,
+       71, 2065, 2067, 2063,   71, 2069, 2064, 2068,   71,   71,
+
+       71, 2062, 2070,   71,   71, 2072, 2066, 2074, 2073,   71,
+       71, 2071, 2077,   71,   71,   71,   71,   71, 2076,   71,
+       71,   71,   71,   71, 2075,   71,   71, 2086, 2078, 2083,
+     2081, 2080, 2079, 2084, 2082, 2088,   71,   71,   71,   71,
+     2085, 2087,   71, 2089, 2091,   71, 2092, 3093,   71,   71,
+     2095, 2097,   71,   71, 2093,   71, 2090, 2096, 2098, 2101,
+     2094, 2099,   71,   71, 2100, 2104, 2103, 2106, 2102, 2107,
+     2105,   71,   71,   71,   71,   71,   71, 2108, 2111,   71,
+     2109,   71,   71, 2112, 2116,   71,   71, 2117,   71,   71,
+     2115,   71, 2120,   71,   71, 2126, 2110, 2113,   71, 2121,
+
+     2118,   71, 2122, 2123,   71,   71, 2125, 2119, 2114,   71,
+     2124,   71,   71, 2127,   71, 2128,   71,   71,   71, 2130,
+       71,   71,   71, 2133,   71,   71, 2139,   71,   71, 2137,
+       71,   71, 2132,   71, 2129, 2140,   71, 2135, 2134, 2131,
+       71, 2142, 2136, 2141,   71, 2144,   71, 2138,   71, 2146,
+     2149,   71,   71,   71,   71,   71, 2143,   71,   71, 2145,
+     2150, 2147,   71,   71, 2148,   71,   71,   71, 2160,   71,
+       71,   71, 2151, 2152, 2161, 2157,   71, 2155, 2153, 2162,
+       71, 2154, 2159, 2156, 2163,   71, 2158,   71, 2165, 2164,
+     2166,   71, 2167,   71,   71, 2168,   71, 2170, 2169, 2173,
+
+       71,   71,   71, 2171,   71,   71, 2172, 2174,   71, 2175,
+     2179,   71, 2180,   71,   71, 2182,   71,   71, 2184,   71,
+     2178, 2176,   71,   71,   71, 2177, 2187,   71, 2186, 2188,
+       71,   71,   71, 2181,   71, 2183,   71, 2185, 2189,   71,
+     2190, 2193, 2194,   71, 2196,   71, 2191,   71,   71,   71,
+       71, 2200, 2199, 2192, 2198, 2202,   71,   71, 2195,   71,
+       71,   71, 2205,   71,   71, 2197, 2201, 2208,   71,   71,
+       71,   71, 2213,   71, 2204, 2212, 2203,   71, 2206,   71,
+     2207,   71,   71,   71, 2209, 2211, 2217,   71,   71,   71,
+     2219,   71, 2210,   71, 2215,   71, 2214, 2216,   71, 2224,
+
+       71, 2218, 2220,   71, 2225, 2226,   71, 2221,   71, 2222,
+       71, 2227, 2230,   71,   71, 2231,   71,   71, 2232, 2223,
+       71,   71, 2236,   71,   71,   71, 2228, 2234, 2229, 2238,
+     2239, 2233, 2241, 2243,   71,   71, 2240, 2235,   71,   71,
+     2244,   71,   71,   71, 2242,   71, 2237, 2245, 2248,   71,
+       71,   71, 2249,   71, 2247, 2254,   71, 2255, 2250, 2246,
+     2251,   71, 2252,   71, 2253,   71,   71,   71, 2259, 2256,
+       71, 2260,   71, 2261,   71, 2258, 2257,   71,   71,   71,
+       71, 2262, 2267,   71,   71,   71,   71,   71,   71, 2268,
+     2263, 2274, 2264, 2269, 2265, 2266, 2271, 2270,   71, 2273,
+
+       71, 2272,   71, 2275, 2278,   71,   71, 2279, 2280,   71,
+       71,   71, 2283, 2281, 2277, 2284, 2282,   71,   71,   71,
+     2276,   71, 2285,   71,   71, 2287,   71,   71,   71, 2291,
+     2292, 2286,   71, 2289,   71,   71,   71, 2294, 2288, 2295,
+       71, 2297,   71, 2296,   71,   71, 2290,   71, 2293, 2298,
+       71,   71, 2302,   71, 2299, 2301,   71,   71,   71,   71,
+       71, 2304,   71, 2303, 2308,   71, 2311, 2300,   71,   71,
+     2310,   71,   71, 2307, 2312,   71, 2315, 2305, 2306, 2316,
+       71,   71, 2309, 2318,   71,   71,   71, 2313, 2317,   71,
+     2320, 2314,   71,   71, 2323, 2321,   71, 2325, 2319,   71,
+
+     2324, 2327,   71,   71,   71, 2329,   71,   71,   71,   71,
+       71, 2326, 2322, 2328, 2333,   71,   71,   71,   71, 2337,
+       71, 2335, 2331, 2336, 2339, 2330, 2332, 2338,   71,   71,
+       71,   71, 2340, 2341,   71,   71,   71,   71,   71, 2343,
+     2345, 2334, 2348,   71,   71,   71, 2350,   71, 2346,   71,
+     2347, 2342,   71, 2349, 2344, 2353,   71,   71,   71, 2356,
+     2357,   71, 2352, 2351,   71,   71,   71,   71, 2354, 2358,
+       71, 2361, 2362,   71,   71, 2355, 2360,   71,   71,   71,
+       71, 2369,   71, 2359, 2366, 2368,   71, 2363, 2364, 2365,
+     2370,   71, 2371,   71, 2372,   71,   71,   71, 2367,   71,
+
+     2376,   71, 2375,   71, 2374,   71, 2377,   71, 2373,   71,
+     2382,   71,   71, 2378,   71, 2379, 2384,   71, 2385,   71,
+       71,   71,   71,   71,   71, 2381, 2387, 2380,   71, 2388,
+       71, 2383, 2386, 2391,   71, 2389, 2394,   71,   71,   71,
+     2390,   71,   71, 2395, 2392,   71,   71,   71, 2401,   71,
+     2393,   71,   71,   71, 2398,   71,   71,   71, 2402, 2397,
+     2400,   71,   71, 2405, 2396, 2408, 2399, 2403, 2404,   71,
+     2409,   71, 2418, 2406, 2410, 2417, 2411,   71, 2407, 2412,
+       71, 2413,   71,   71, 2414,   71, 2415,   71, 2416,   71,
+       71,   71,   71,   71,   71,   71, 2419, 2426,   71,   71,
+
+       71,   71, 2424,   71, 2430, 2431,   71,   71, 2421, 2420,
+     2434,   71, 2423, 2422, 2425,   71, 2433, 2428, 2427, 2429,
+     2436,   71, 2432,   71, 2435,   71,   71,   71,   71,   71,
+       71,   71,   71, 2439, 2445,   71, 2446,   71, 2447,   71,
+       71, 2437, 2440, 2438,   71,   71, 2441, 2442, 2443, 2444,
+     2450,   71,   71,   71,   71, 2449, 2451, 2448, 2454,   71,
+       71, 2455, 2456,   71,   71, 2452, 2457, 2458,   71, 2460,
+       71,   71, 2453, 2459,   71,   71,   71,   71,   71,   71,
+     2464,   71,   71, 2462, 2468, 2469,   71, 2472,   71, 2461,
+       71,   71, 2470,   71, 2463,   71, 2465, 2466,   71, 2467,
+
+     2471, 2473, 2475,   71, 2478,   71, 2474, 2477, 2476,   71,
+       71, 2482,   71,   71,   71, 2480,   71, 2486,   71,   71,
+     2485,   71, 2479, 2484,   71, 2483, 2488,   71,   71, 2489,
+     2481,   71,   71, 2492, 2493,   71,   71, 2490, 2487,   71,
+     2494, 2496,   71,   71,   71,   71,   71, 2491,   71, 2497,
+     2501,   71,   71, 2499, 2495, 2500, 2498, 2503,   71,   71,
+     2502,   71, 2506,   71, 2504,   71, 2505,   71, 2507,   71,
+       71, 2509,   71, 2508,   71,   71, 2510, 2511,   71, 2513,
+     2514, 2516,   71, 2517,   71, 2512,   71, 2515,   71,   71,
+       71, 2522,   71, 2518, 2519, 2523, 2520,   71,   71, 2524,
+
+       71, 2527,   71, 2528,   71, 2526, 2521, 2525,   71, 2530,
+       71,   71, 2532,   71, 2531,   71, 2536, 2533,   71,   71,
+     2534, 2529,   71,   71, 2535,   71,   71, 2537, 2540,   71,
+     2538,   71, 2543, 2544,   71, 2539,   71, 2541,   71,   71,
+       71, 2545,   71,   71,   71, 2547, 2546, 2548, 2550,   71,
+       71,   71, 2542,   71, 2549, 2551,   71,   71, 2556,   71,
+       71,   71, 2554,   71, 2553, 2555,   71, 2552, 2557, 2561,
+       71,   71,   71, 2565,   71,   71,   71,   71,   71, 2558,
+     2563, 2559, 2560,   71,   71, 2562, 2572, 2564, 2569, 2570,
+       71, 2567,   71, 2573, 2566, 2574, 2579, 2568,   71,   71,
+
+       71,   71,   71, 2571, 2575,   71, 2576, 2577, 2580, 2578,
+       71,   71,   71, 2581,   71, 2582,   71,   71, 2585, 2586,
+       71, 2587,   71, 2588,   71,   71, 2583,   71,   71, 2589,
+       71, 2584, 2590, 2591,   71, 2593, 2595,   71,   71,   71,
+     2598, 2596,   71, 2599,   71, 2600,   71,   71, 2592, 2594,
+     2601,   71,   71,   71, 2605,   71,   71, 2606, 2597, 2607,
+       71,   71, 2609,   71, 2602,   71,   71,   71, 2613,   71,
+     2603, 2614,   71, 2604,   71,   71, 2608, 2616, 2610, 2615,
+       71, 2612, 2617,   71, 2611,   71,   71,   71, 2622, 2625,
+       71,   71, 2618, 2621,   71, 2624,   71,   71,   71,   71,
+
+     2619, 2626, 2628,   71,   71, 2620, 2627, 2630,   71,   71,
+       71, 2623,   71, 2633, 2637,   71,   71,   71,   71,   71,
+     2631, 2632, 2629,   71, 2653,   71, 2636, 2634, 2639,   71,
+     2635, 2638, 2641, 2644,   71, 2642, 2640, 2643, 2645,   71,
+     2647,   71, 2646,   71, 2648,   71, 2649,   71, 2650,   71,
+     2651,   71,   71,   71, 2654,   71,   71, 2659,   71,   71,
+       71,   71, 2656, 2660, 2662,   71,   71, 2652, 2663, 2664,
+       71, 2665, 2666,   71,   71, 2657, 2658, 2661, 2655,   71,
+       71,   71,   71, 2667, 2671,   71, 2672,   71, 2668, 2669,
+       71,   71,   71,   71,   71, 2677, 2673, 2682,   71, 2670,
+
+     2678,   71, 2675, 2680,   71,   71, 2679, 2676,   71, 2674,
+     2681, 2683,   71,   71,   71,   71,   71,   71, 2684,   71,
+       71,   71, 2692, 2687,   71,   71, 2690, 2688,   71, 2695,
+     2696, 2686, 2693, 2685,   71, 2697,   71,   71,   71, 2691,
+       71, 2689, 2694, 2699, 3093, 2698,   71, 2700, 2702,   71,
+     2701, 2703,   71, 2704,   71,   71,   71, 2706,   71, 2707,
+     2709, 2708,   71, 2710, 2705,   71,   71, 2711, 2712,   71,
+       71,   71,   71, 2717,   71,   71, 2715, 2719,   71,   71,
+       71,   71,   71, 2713, 2720,   71, 2721, 2722,   71, 2723,
+     2716, 2714,   71,   71, 2724, 2727,   71,   71,   71, 2718,
+
+     2725,   71, 2730,   71,   71,   71, 2728,   71,   71,   71,
+     2729,   71, 2726, 2731, 2735, 2734,   71, 2732, 2737,   71,
+     2739,   71, 2733, 2740,   71, 2742,   71, 2738,   71,   71,
+       71, 2736, 2741,   71, 2747,   71, 2748, 2750, 2746,   71,
+       71,   71,   71,   71, 2743, 2744, 2745,   71, 2749,   71,
+     2753, 2755,   71, 2757,   71,   71, 2754,   71,   71,   71,
+     2752,   71, 2758, 2751, 2760,   71,   71, 2756, 2761,   71,
+     2763,   71, 2765,   71, 2768, 2762, 2759,   71, 2767,   71,
+       71,   71, 2766, 2772,   71, 2769,   71, 2774,   71, 2770,
+     2764, 2773,   71, 2775, 2777, 2778,   71, 2780,   71, 2771,
+
+       71, 2779,   71,   71,   71,   71,   71, 2785,   71, 2782,
+     2783,   71, 2776,   71, 2788,   71,   71,   71,   71,   71,
+     2781, 2793,   71, 3093,   71, 2784, 2790,   71, 2786, 2787,
+     2789,   71, 2792, 2795, 2796,   71, 2794, 2797,   71,   71,
+       71, 2791,   71,   71, 2798, 2799, 2806, 2800, 2801,   71,
+     2802,   71, 2803,   71,   71, 2805,   71,   71,   71, 2804,
+       71, 2810, 2807, 2811,   71, 2808,   71,   71,   71,   71,
+     2817,   71,   71,   71, 2818,   71, 2926,   71, 2816, 2809,
+       71, 2814, 2821,   71, 2812, 2813, 2822,   71, 2815, 2823,
+       71,   71, 2819, 2826, 2820,   71, 2824, 2825,   71,   71,
+
+     2829,   71,   71,   71,   71,   71, 2828, 2827, 2830,   71,
+     2833,   71,   71,   71,   71,   71,   71, 2835,   71, 3093,
+     2836, 2834, 2831,   71, 2832,   71,   71,   71,   71,   71,
+       71, 2845, 2837, 2846, 2838, 2839, 2840, 2844, 2848, 2841,
+       71,   71, 2842, 2843,   71, 2849,   71, 2847, 2867, 2850,
+     2852,   71, 2853,   71, 2851,   71, 2855,   71, 2915, 2854,
+     2856,   71, 2857, 2858,   71,   71, 2859, 2860, 2863,   71,
+     2861, 2862,   71,   71,   71, 2866,   71, 2864,   71,   71,
+       71,   71,   71, 2865, 2872,   71, 2871,   71,   71,   71,
+       71,   71, 2868, 2875, 2874,   71,   71, 2876, 2954, 2869,
+
+     2870,   71, 2880,   71, 2879, 2877,   71, 2873,   71, 2878,
+     2881,   71, 2882,   71,   71,   71, 2887, 2885, 2883, 2884,
+     2886, 2888,   71, 2889,   71,   71, 3093,   71,   71,   71,
+     2891, 2890, 2893, 2894, 2896,   71, 2897,   71, 2899,   71,
+     2900,   71,   71, 2898, 2895, 2892,   71, 2902,   71, 2903,
+       71, 2901, 2904,   71, 2905,   71, 2906,   71, 2907,   71,
+     2908,   71, 2909,   71, 2910,   71,   71,   71, 2913,   71,
+       71,   71, 2918,   71,   71,   71, 2912,   71,   71, 2914,
+       71,   71,   71, 2922, 2924,   71,   71,   71, 2928, 2921,
+     2919, 2916, 2911, 2917, 2920, 2923, 2925,   71,   71, 2931,
+
+       71, 2930,   71,   71,   71,   71,   71, 2933,   71, 3093,
+       71,   71, 2927,   71, 2932, 2929, 2937, 2938, 2940,   71,
+     2936,   71, 2934,   71, 2935,   71, 2939, 2948, 2941, 2943,
+       71,   71, 2942, 2944,   71, 2945,   71,   71,   71,   71,
+     2947,   71,   71,   71, 2946,   71, 2953,   71, 2956,   71,
+       71,   71, 2950, 2952,   71,   71,   71, 2949, 2955,   71,
+       71,   71, 2951, 2957, 2958, 2966,   71, 2959, 2963,   71,
+     2960, 2962, 2964,   71, 2968, 2967, 2961,   71, 2971,   71,
+       71,   71, 2965, 2973,   71,   71, 2974, 2969,   71, 2972,
+     2975,   71, 2976,   71,   71,   71,   71, 2970, 2979, 2980,
+
+     2977, 2981,   71,   71, 2984,   71,   71,   71, 2978,   71,
+       71, 2987,   71, 2989,   71,   71, 2992,   71, 2983, 2985,
+       71, 2986, 2990,   71, 2995,   71,   71, 2982,   71, 2996,
+       71, 2999, 2988, 3000, 2991, 2993,   71,   71, 2997,   71,
+       71, 2994,   71,   71,   71, 2998, 3005,   71, 3004,   71,
+     3001, 3006,   71, 3002,   71,   71,   71,   71,   71, 3010,
+       71, 3003, 3012,   71,   71, 3007,   71,   71, 3009, 3008,
+       71,   71, 3017, 3014,   71, 3018, 3011, 3013,   71, 3015,
+     3019,   71, 3016, 3024, 3020, 3023,   71,   71, 3025, 3021,
+       71, 3026, 3027, 3022,   71,   71,   71,   71, 3031,   71,
+
+     3028, 3029, 3032,   71,   71,   71, 3034,   71,   71,   71,
+     3033,   71, 3035,   71,   71, 3040, 3030,   71, 3036,   71,
+     3037,   71,   71, 3043, 3044,   71, 3045,   71, 3038, 3046,
+     3039,   71, 3042, 3041,   71,   71, 3047,   71, 3051,   71,
+       71,   71,   71, 3055, 3052,   71, 3048, 3093, 3050,   71,
+     3057,   71, 3058, 3049, 3053,   71,   71,   71, 3062,   71,
+     3059, 3093,   71, 3060, 3056,   71, 3054, 3063,   71,   71,
+     3064, 3065,   71,   71,   71,   71, 3061,   71, 3071,   71,
+     3066, 3067, 3069,   71, 3068,   71,   71,   71, 3070,   71,
+     3073, 3074,   71, 3077, 3072, 3078,   71,   71,   71, 3081,
+
+     3082,   71, 3075,   71, 3084,   71, 3076,   71, 3079,   71,
+     3083, 3085,   71,   71, 3086,   71, 3080,   71, 3087, 3093,
+     3088, 3091,   71, 3092,   71, 3093, 3093, 3093, 3089, 3093,
+     3093, 3093, 3093, 3093, 3093, 3093, 3090,   43,   43,   43,
+       43,   43,   43,   43,   48,   48,   48,   48,   48,   48,
+       48,   53,   53,   53,   53,   53,   53,   53,   59,   59,
+       59,   59,   59,   59,   59,   64,   64,   64,   64,   64,
+       64,   64,   74,   74, 3093,   74,   74,   74,   74,  142,
+      142, 3093, 3093, 3093,  142,  142,  144,  144, 3093, 3093,
+      144, 3093,  144,  146, 3093, 3093, 3093, 3093, 3093,  146,
+
+      149,  149, 3093, 3093, 3093,  149,  149,  151, 3093, 3093,
+     3093, 3093, 3093,  151,  153,  153, 3093,  153,  153,  153,
+      153,   75,   75, 3093,   75,   75,   75,   75,   13, 3093,
+     3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093,
+     3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093,
+     3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093,
+     3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093
     } ;
 
-static const flex_int16_t yy_chk[5981] =
+static const flex_int16_t yy_chk[6070] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -2095,655 +2121,665 @@ static const flex_int16_t yy_chk[5981] =
         5,    3,    6,   20,    4,   20,   20,    5,   20,    6,
         7,    7,    7,    7,   20,    7,    8,    8,    8,    8,
        29,    8,    7,    9,    9,    9,   22,   22,    8,   10,
-       10,   10,   15,   25,    9,   29,   15,   25, 3054,   31,
+       10,   10,   15,   25,    9,   29,   15,   25, 3099,   31,
        10,   11,   11,   11,   11,   11,   11,   19,   79,   19,
 
        19,   30,   19,   11,   31,   79,   30,   25,   19,   19,
        47,   47,   11,   12,   12,   12,   12,   12,   12,   21,
-       23,   23,   21,   21,   24,   12,   21,   81,   23,   24,
-       34,   21,   23,   24,   12,   23,   24, 1005,   24,   24,
-       21,   26,   26,   27,   27,   90,   28,   81,   32,   32,
-       28,   34,   27,   28,   33,   33,   26,   32,   36,   33,
-       28,   35,   28,   32,   90,   42,   35,   32,   52,   84,
-       35,   52,   36,   37,   37,   33,   35,   38,   37,   35,
-       42,   69,   38,   63,   63,   38,   35,   84,   37,   37,
-       40,   37,   38,   80,   40,   69,   38,   38,   39,   39,
-
-      126,   39,   41,   41,   40,   80,  126,   41,   40,   40,
-       39,   41,   58,   89,   58,   58,   39,   58,   66,   86,
-       66,   66,   68,   66,   68,   68,   71,   68,   71,   71,
-       66,   71,   72,   86,  127,   89,   72,   71,   74,   77,
-       74,   74,   77,   74,   78,   88,  127,   85,   78,   74,
-       74,   82,   83,   87,   82,   83,   85,   92,   93,   87,
-       91,   94,   99,   88,   88,   87,   91,   87,   83,   95,
-       96,   92,   94,   94,  161,  102,   99,   97,   93,   91,
-       94,   97,  161,  105,   98,  106,  101,   95,   96,   98,
-      100,  150,  101,  100,  102,  103,  100,  112,  104,  106,
-
-      103,  104,  105,  109,  107,  104,  108,  105,  107,  100,
-      100,  101,  110,  108,  111,  113,  109,  112,  114,  110,
-      103,  104,  114,  115,  117,  116,  119,  111,  118,  118,
-      116,  122,  120,  113,  116,  121,  120,  123,  132,  125,
-      124,  115,  129,  124,  117,  120,  119,  128,  128,  129,
-      121,  120,  125,  130,  124,  131,  123,  122,  124,  132,
-      129,  133,  134,  135,  134,  128,  136,  137,  128,  130,
-      138,  136,  140,  134,  131,  135,  139,  133,  148,  137,
-      157,  139,  142,  142,  144,  134,  140,  144,  138,  146,
-      154,  146,  146,  154,  146,  149,  149,  151,  157,  151,
-
-      151,  152,  151,  152,  152,  155,  152,  158,  156,  159,
-      155,  162,  163,  152,  156,  160,  164,  159,  165,  166,
-      168,  164,  158,  156,  159,  167,  160,  163,  166,  169,
-      162,  167,  167,  171,  169,  170,  170,  175,  165,  171,
-      173,  172,  179,  172,  173,  168,  172,  174,  174,  173,
-      176,  147,  177,  178,  173,  176,  175,  177,  180,  183,
-      173,  173,  179,  172,  180,  178,  181,  182,  184,  185,
-      181,  186,  182,  183,  187,  188,  192,  190,  191,  187,
-      188,  185,  190,  184,  185,  194,  194,  180,  200,  186,
-      189,  189,  192,  193,  189,  195,  189,  196,  191,  193,
-
-      197,  195,  206,  196,  210,  198,  199,  195,  189,  200,
-      189,  198,  199,  201,  208,  206,  145,  202,  203,  201,
-      197,  199,  202,  204,  203,  205,  210,  207,  212,  204,
-      209,  211,  205,  207,  208,  213,  209,  214,  215,  211,
-      213,  212,  216,  217,  218,  222,  214,  219,  220,  218,
-      218,  221,  219,  215,  223,  221,  224,  226,  216,  225,
-      223,  229,  233,  217,  227,  225,  220,  222,  228,  227,
-      228,  230,  235,  231,  224,  224,  232,  226,  230,  231,
-      229,  233,  232,  234,  235,  236,  237,  237,  239,  234,
-      238,  238,  240,  242,  239,  241,  243,  241,  240,  236,
-
-      245,  243,  246,  244,  247,  249,  248,  250,  143,  260,
-      246,  248,  239,  250,  241,  244,  242,  251,  256,  245,
-      252,  253,  255,  251,  247,  252,  253,  254,  249,  257,
-      258,  259,  256,  254,  260,  261,  263,  255,  263,  259,
-      262,  261,  266,  262,  258,  264,  264,  257,  265,  267,
-      267,  265,  268,  268,  269,  271,  270,  272,  271,  273,
-      266,  272,  275,  274,  283,  277,  276,  277,  273,  274,
-      269,  270,  276,  278,  279,  284,  275,  281,  279,  278,
-      280,  280,  281,  282,  283,  285,  286,  287,  287,  282,
-      289,  288,  290,  284,  288,  279,  290,  291,  296,  286,
-
-      292,  293,  293,  294,  295,  297,  285,  295,  289,  298,
-      296,  297,  298,  299,  301,  302,  291,  303,  292,  315,
-      315,  294,  303,  301,  295,  299,  300,  304,  305,  306,
-      304,  305,  304,  302,  309,  300,  141,  307,  300,  309,
-      309,  311,  306,  300,  300,  300,  300,  312,  304,  307,
-      308,  310,  308,  308,  310,  313,  314,  318,  311,  317,
-      317,  311,  312,  316,  313,  314,  319,  320,  316,  321,
-      322,  319,  318,  327,  323,  324,  336,  336,  329,  320,
-       70,  324,  325,  325,  329,  325,  328,  330,  321,  323,
-      322,  328,  330,  327,  325,  331,  332,  333,  335,  332,
-
-      331,  332,  334,  337,  342,  334,  331,  335,  346,  337,
-      339,  333,  338,  338,  343,  339,  340,  344,  334,  340,
-      349,  334,  346,  334,  342,  340,  568,  345,  348,  340,
-      351,  348,  344,  568,  349,  343,  356,  340,  341,  341,
-      352,  341,  345,  357,  354,  351,  353,  348,  355,  352,
-      354,  353,  353,  361,  341,  356,  359,  341,  357,  341,
-      360,  341,  350,  358,  350,  350,  360,  362,  363,  355,
-      365,  366,  358,  368,  350,  359,  350,  350,  350,  361,
-      364,  350,  363,  367,  369,  370,  364,  362,  368,  369,
-      364,  366,  371,  365,  372,  372,  373,  374,  371,  375,
-
-      370,  376,  377,  367,  378,  379,  381,  376,  382,  374,
-      379,  380,  380,  375,  380,  383,  373,  385,  384,  385,
-      378,  386,  388,  388,  382,  386,  381,  377,  389,  387,
-      390,  383,  384,  387,  391,  392,  396,  385,  393,  397,
-      394,  396,  395,  397,  400,  390,  398,  389,  387,  394,
-      391,  395,  393,  392,  405,  398,  403,  399,  401,  403,
-      394,   64,  394,  399,  401,  400,  402,  404,  406,  406,
-      402,  407,  404,  409,  405,  408,  408,  410,  409,  411,
-      411,  412,  413,  414,  407,  415,  413,  412,  416,  417,
-      410,  418,  418,  416,  417,  419,  420,  421,  414,  422,
-
-      418,  423,  425,  427,  423,  424,  415,  419,  427,  424,
-      428,  422,  426,  426,  425,  421,  420,  429,  429,  430,
-      432,  432,  433,  437,  434,  435,  436,  439,  440,  443,
-      441,  428,  434,  442,  435,  437,  444,  446,  443,  442,
-      452,  430,  444,  433,  441,  439,  436,  439,  440,  445,
-      447,  446,  448,  449,  445,  448,  450,  451,  447,  453,
-      452,  447,  453,  451,  454,  455,  458,  449,  456,  457,
-      454,  450,  459,  456,  461,  460,  459,  462,  463,  455,
-      460,  464,  462,  465,  468,  484,  484,  458,  454,  461,
-      469,  457,  471,  470,  463,  473,  465,  470,  472,  473,
-
-      464,  466,  466,  474,  468,  469,  477,  466,  474,  466,
-      475,  471,  474,  476,  472,  466,  480,  466,  476,  478,
-      466,  466,  477,  479,  482,  475,  483,  466,  478,  479,
-      481,  485,  480,  481,  479,  486,  486,  487,  488,  489,
-      490,  491,  493,  492,   59,  494,  483,  482,  492,  496,
-      488,  493,  487,  495,  489,  496,  485,  498,  499,  490,
-      501,  500,  499,  491,  494,  502,  498,  500,  495,  503,
-      504,  505,  501,  506,  507,  509,  508,  509,  507,  510,
-      502,  511,  511,  513,  504,  515,  505,  510,  503,  508,
-      512,  506,  514,  517,  518,  513,  512,  515,  514,  516,
-
-      519,  520,  516,  521,  520,  519,  533,  517,  522,  518,
-      523,  533,  521,  524,  531,  523,  523,  525,  525,  521,
-      526,  526,  521,  527,  522,  534,  524,  528,  528,  527,
-      529,  529,  530,  532,  535,  531,  532,  536,  530,  538,
-      536,  537,  535,  540,  534,  539,  537,  540,  541,  542,
-      543,  544,  545,  542,  541,  546,  544,  548,  547,  550,
-       54,  546,  538,  547,  539,  552,  549,  556,  543,  549,
-      553,  548,  545,  557,  549,  551,  551,  550,  549,  554,
-      555,  556,  560,  552,  554,  555,  553,  559,  557,  561,
-      562,  560,  561,  559,  562,  563,  564,  565,  566,  564,
-
-      563,  567,  565,  570,  569,  571,  572,  572,  570,  573,
-      574,  575,  576,  584,  566,   53,  562,  569,  573,  567,
-      577,  576,  578,  580,  579,  571,  580,  575,  578,  574,
-      579,  584,  577,  581,  581,  582,  581,  583,  582,  585,
-      586,  588,  583,  587,  594,  590,  586,  588,  587,  589,
-      590,  591,  589,  585,  592,  593,  591,  591,  596,  595,
-      597,  598,  599,  594,  594,  595,  598,  592,  593,  597,
-      600,  600,  601,  602,  603,  604,  602,  596,  605,  601,
-      603,  608,  599,  605,  606,  607,  607,  604,  610,  606,
-      606,  602,  609,  611,  609,  611,  612,  613,  614,  615,
-
-      616,  618,  617,  619,  620,  618,  608,  610,  617,  621,
-      622,  623,  619,  624,  612,  613,  614,  625,  615,  620,
-      616,  626,  627,  628,  621,  624,  629,  626,  622,  630,
-      623,  632,  625,  631,  633,  628,  627,  631,  634,  635,
-      636,  637,  638,  638,  640,  629,  642,  639,  630,  632,
-      633,  639,  644,  641,  645,  637,  634,  635,  635,  636,
-      642,  643,  646,  640,  641,  647,  643,  652,  644,  648,
-      649,  650,  647,  645,  648,  646,  650,  649,  651,  653,
-      654,  655,  656,  651,  657,  652,  653,  658,  661,  654,
-      659,  656,  658,  659,  660,  655,  657,  662,  660,  663,
-
-      665,  664,  661,  666,  666,  671,  662,  667,  667,  668,
-      668,  669,  672,  673,  663,  664,  667,  675,  672,  674,
-      669,  665,  676,  674,  671,  677,  678,  679,  681,  675,
-      680,  682,  678,  673,  683,  679,  686,  680,  689,  692,
-       48,  695,  694,  677,  693,  695,  681,  676,  692,  699,
-      693,  686,  696,  696,  683,  689,  682,  684,  694,  697,
-      697,  698,  684,  701,  700,  702,  684,  699,  704,  684,
-      773,  702,  698,  704,  705,  706,  684,  684,  700,  684,
-      707,  709,  709,  701,  703,  703,  703,  708,  703,  712,
-      708,  703,  710,  706,  773,  705,  703,  711,  711,  710,
-
-      713,  713,  703,  703,  712,  707,  714,  715,  716,  719,
-      715,  714,  720,  716,  717,  717,  718,  722,  718,  721,
-      723,  719,  724,  721,  725,  725,  726,  729,  727,  731,
-      724,  720,  728,  728,  730,  733,  750,  722,  732,  723,
-      733,  726,  727,  750,  732,  729,  730,  734,  734,  735,
-      738,  731,  737,  739,  735,  735,  738,  737,  740,  739,
-      741,  742,  743,  740,  742,  744,  741,  747,  743,  745,
-      745,  746,  746,  744,  748,  747,  749,  751,  752,  752,
-      753,  749,  754,  756,  758,  755,  759,  765,  761,  753,
-      754,  755,  748,  758,  760,  759,  751,  761,  762,  760,
-
-      763,  762,  756,  764,  766,  763,  767,  769,  769,  768,
-      770,  771,  765,  766,  768,  768,  778,  764,  772,  767,
-      774,  779,  776,  774,  776,  770,  779,  772,  777,  777,
-      771,  774,  780,  785,  781,  782,  783,  778,  786,  784,
-      787,  789,  785,  790,  787,  788,  793,  791,   43,  790,
-      792,  795,  794,  780,  781,  782,  791,  795,  783,  784,
-      789,  786,  792,  788,  796,  793,  794,  797,  798,  798,
-      799,  800,  797,  801,  802,  803,  804,  805,  796,  806,
-      800,  807,  802,  808,  810,  809,  811,  807,  812,  814,
-      799,  809,  811,  801,  812,  803,  805,  808,  804,  806,
-
-      815,  813,  816,  817,  810,  813,  822,  816,  814,  818,
-      818,  819,  815,  820,  821,  823,  820,  819,  824,  822,
-      815,  823,  825,  825,  817,  826,  827,  828,  828,  829,
-      830,  827,  821,  832,  830,  831,  831,  833,  824,  835,
-      834,  837,  838,  826,  829,  834,  840,  841,  843,  843,
-      844,  847,  845,  879,  844,  832,  838,  833,  835,  846,
-      846,  879,  849,  866,  866,  837,  840,  845,  841,  842,
-      850,  848,  842,  852,  842,  848,  847,  849,  842,  854,
-      842,  851,  856,  853,  850,  842,  851,  852,  853,  853,
-      842,  855,  858,  854,  857,  855,  859,  856,  860,  857,
-
-      861,  859,  862,  869,  858,  863,  871,  855,  864,  857,
-      867,  863,  860,  865,  864,  867,  862,  868,  870,  865,
-      873,  861,  874,  868,  871,  869,  875,  874,  878,  876,
-      877,  877,  873,  878,  880,  881,  882,  870,  872,  872,
-      875,  876,  883,  883,  872,  884,  872,  886,  880,  884,
-      888,  892,  872,  886,  881,  882,  887,  872,  872,  887,
-      889,  890,  894,  891,  872,  895,  896,  890,  891,  888,
-      892,  894,  897,  889,  895,  898,  899,  901,  897,  902,
-      900,  903,  896,  905,  898,  900,  904,  906,  907,  908,
-      913,  911,  905,  902,  907,  899,  906,  901,  904,  909,
-
-      914,  903,  915,  916,  913,  909,  908,  911,  917,  918,
-      919,  920,   14,  923,  924,  919,  920,  916,  923,  926,
-      914,  915,  927,  924,  918,  926,  917,  925,  925,  929,
-      932,  930,  933,  932,  934,  927,  930,  930,  931,  931,
-      935,  938,  931,  936,  937,  929,  933,  938,  939,  940,
-      941,  946,  942,  943,  934,  940,  936,  942,  935,  937,
-      945,  947,  949,  945,  948,  941,  947,  943,  939,  948,
-      950,  951,  946,  952,  954,  950,  951,  955,  949,  960,
-      954,  956,  957,  958,  958,  952,  959,  956,  957,  961,
-      962,  962,  961,  955,  963,  959,  964,  960,  965,  966,
-
-      967,  968,  966,  969,  976,  970,  971,  968,  975,  969,
-      970,  971,  963,  967,  972,  964,  973,  977,  965,  972,
-      978,  980,  973,  977,  976,  978,  975,  979,  979,  981,
-      980,  982,  983,  984,  985,  983,  984,  986,  981,  987,
-      988,  989,  990,  991,  994,  985,  995,  989,  990,  982,
-      996,  987,  992,  993,  993,  986,  998,  992,  991,  988,
-      995,  997,  996,  994,  999,  997, 1000, 1001, 1003, 1004,
-     1004, 1008, 1006,  999,  998, 1007, 1009, 1011, 1011, 1010,
-     1012, 1009, 1016, 1008, 1016, 1000, 1006, 1003, 1010, 1013,
-     1007, 1014, 1001, 1015, 1017, 1013, 1018, 1014, 1015, 1017,
-
-     1012, 1019, 1020, 1021, 1022, 1023, 1024, 1020, 1025, 1030,
-     1018, 1028, 1023, 1027, 1027, 1019, 1029, 1032, 1021, 1040,
-     1031, 1024, 1040, 1022, 1030, 1028, 1031, 1025, 1033, 1035,
-     1035, 1036, 1039, 1033, 1029, 1041, 1036, 1032, 1037, 1037,
-     1042, 1038, 1033, 1043, 1033, 1044, 1039, 1033, 1038, 1045,
-     1044, 1046, 1043, 1047, 1041, 1048, 1046, 1051, 1042, 1050,
-     1050, 1052, 1051, 1053, 1047, 1054, 1052, 1055, 1045, 1056,
-     1054, 1055, 1057, 1058, 1048, 1059, 1061, 1060, 1056, 1062,
-     1063, 1064, 1065, 1053, 1066, 1069, 1062, 1057, 1058, 1060,
-     1067, 1061, 1063, 1068, 1059, 1070, 1067, 1071, 1073, 1074,
-
-     1064, 1075, 1066, 1065, 1073, 1069, 1071, 1076, 1068, 1075,
-     1078, 1077, 1079, 1074, 1080, 1070, 1077, 1079, 1079, 1082,
-     1081, 1086, 1078, 1083, 1083, 1085,   13, 1076, 1088, 1088,
-     1086, 1087, 1082, 1080, 1081, 1084, 1089, 1087, 1085, 1091,
-     1084, 1089, 1090, 1084, 1084, 1091, 1095, 1092, 1084, 1098,
-     1093, 1090, 1092, 1099, 1084, 1093, 1094, 1094, 1084, 1096,
-     1096, 1097, 1101, 1100, 1097, 1102, 1097, 1095, 1104, 1098,
-     1102, 1099, 1100, 1103, 1105, 1106, 1109, 1139, 1107, 1139,
-     1105, 1106, 1101, 1107, 1108, 1109, 1104, 1103, 1108, 1116,
-     1109, 1114, 1109, 1112, 1109, 1114, 1109, 1110, 1110, 1111,
-
-     1111, 1115, 1111, 1117, 1112, 1118, 1119, 1116, 1120, 1121,
-     1118, 1118, 1117, 1120, 1123, 1122, 1115, 1124, 1125, 1126,
-     1127, 1127, 1128, 1121, 1122, 1126, 1129, 1131, 1119, 1130,
-     1128, 1133, 1125, 1123, 1130, 1132, 1124, 1134, 1135, 1137,
-     1129, 1131, 1143, 1135, 1132, 1136, 1136, 1138, 1138, 1133,
-     1141, 1142, 1146, 1141, 1137, 1144, 1142, 1145, 1145, 1147,
-     1147, 1143, 1134, 1149, 1144, 1148, 1148, 1150, 1149, 1151,
-     1152, 1152, 1146, 1153, 1154, 1155, 1156, 1154, 1157, 1159,
-     1158, 1156, 1158, 1161, 1162,    0, 1161, 1157, 1150, 1163,
-     1151, 1164, 1165, 1153, 1163, 1155, 1164, 1159, 1166, 1162,
-
-     1165, 1167, 1169, 1166, 1168, 1168, 1167, 1169, 1170, 1171,
-     1172, 1173, 1175, 1176, 1178, 1171, 1177, 1172, 1175, 1176,
-     1178, 1177, 1179, 1180, 1173, 1181, 1170, 1182, 1182, 1183,
-     1185, 1179, 1186, 1187, 1188, 1189, 1181, 1191, 1192, 1187,
-     1188, 1189, 1180, 1191, 1193, 1194, 1195, 1196, 1198, 1183,
-     1185, 1199, 1192, 1197, 1197, 1186, 1200, 1194, 1192, 1203,
-     1195, 1201, 1202, 1202, 1193, 1196, 1201, 1204, 1198, 1206,
-        0, 1208, 1204, 1207, 1200, 1209, 1199, 1210, 1207, 1207,
-     1211, 1212, 1203, 1213, 1209, 1210, 1216, 1214, 1206, 1208,
-     1222, 1215, 1214, 1215, 1211, 1214, 1212, 1218, 1213, 1220,
-
-     1216, 1213, 1219, 1218, 1223, 1224, 1219, 1221, 1226, 1222,
-     1220, 1225, 1221, 1221, 1227, 1228, 1225, 1230, 1231, 1227,
-     1232, 1233, 1233, 1224, 1234, 1235, 1226, 1236, 1234, 1238,
-     1223, 1230, 1239, 1237, 1240, 1228, 1231, 1241, 1232, 1237,
-     1242, 1238, 1243, 1235, 1244, 1246, 1236, 1245, 1240, 1244,
-     1246, 1239, 1241, 1247, 1245, 1242, 1248, 1249, 1249, 1250,
-     1251, 1243, 1252, 1253, 1254, 1248, 1251, 1255, 1253, 1262,
-     1254, 1247, 1263, 1255, 1250, 1256, 1256, 1257, 1257, 1259,
-     1259, 1260, 1261, 1252, 1264, 1260, 1263, 1262, 1265, 1266,
-     1266, 1261, 1267, 1268, 1270, 1265, 1271, 1269, 1272, 1264,
-
-     1273, 1268, 1269, 1272, 1272, 1273, 1273, 1274, 1270, 1275,
-     1275, 1276, 1267, 1277, 1278, 1271, 1279, 1280, 1281, 1282,
-     1283, 1279, 1285, 1278, 1284, 1286, 1283, 1274, 1287, 1284,
-     1276, 1286, 1277, 1288, 1289, 1290, 1280, 1282, 1281, 1288,
-     1289, 1291, 1292, 1293, 1294, 1295,    0, 1287, 1285, 1296,
-     1297, 1297, 1298, 1299, 1290, 1298, 1300, 1300, 1294, 1303,
-     1291, 1292, 1293, 1303, 1296, 1299, 1295, 1301, 1301, 1302,
-     1304, 1305, 1306, 1307, 1302, 1307, 1309, 1311, 1310, 1307,
-     1305, 1309, 1312, 1304, 1314, 1306, 1313, 1313, 1315, 1314,
-     1316, 1317, 1307, 1310, 1315, 1318, 1321, 1311, 1312, 1319,
-
-     1318, 1322, 1320, 1319, 1317, 1316, 1320, 1323, 1324, 1325,
-     1325, 1327, 1329, 1330, 1324, 1333, 1321, 1332, 1330, 1322,
-     1331, 1331, 1339, 1332, 1335, 1335, 1340, 1323, 1337, 1327,
-     1343, 1337, 1344, 1329, 1346, 1333, 1338, 1338, 1339, 1347,
-     1342, 1344, 1340, 1342, 1345, 1345, 1348, 1349, 1350, 1346,
-     1343, 1352, 1349, 1351, 1351, 1353, 1354, 1355, 1355, 1356,
-     1347, 1357, 1350, 1358, 1362, 1348, 1364, 1359, 1358, 1352,
-     1353, 1360, 1360, 1356, 1361, 1363, 1363, 1367, 1361, 1357,
-     1365, 1354, 1359, 1366, 1362, 1368, 1371, 1366, 1364, 1372,
-     1368, 1365, 1370, 1370, 1373, 1374, 1367, 1375, 1376, 1376,
-
-     1377, 1378, 1380, 1372, 1371, 1377, 1379, 1381, 1382, 1374,
-     1385, 1380, 1381, 1373, 1373, 1383, 1385, 1383, 1384, 1386,
-     1389, 1378, 1375, 1384, 1387, 1391, 1379, 1392, 1382, 1395,
-     1387, 1390, 1390, 1392, 1389, 1394, 1396, 1396, 1398, 1386,
-     1394, 1397, 1397, 1399, 1391, 1400, 1401, 1402, 1402, 1401,
-     1403, 1404, 1398, 1395, 1407, 1412, 1416, 1416, 1406, 1407,
-     1400, 1399, 1403, 1405, 1406, 1408, 1405, 1410, 1408, 1405,
-     1411, 1404, 1414, 1418, 1413, 1411, 1410, 1413, 1414, 1418,
-     1412, 1405, 1415, 1419, 1408, 1417, 1417, 1415, 1419, 1420,
-     1421, 1422, 1423, 1424, 1425, 1426, 1424, 1429, 1427, 1428,
-
-     1425, 1426, 1420, 1427, 1430, 1428, 1431, 1431, 1421, 1430,
-     1422, 1432, 1423, 1433, 1434, 1435, 1432, 1438, 1436, 1437,
-     1429, 1440, 1441, 1439, 1442, 1443, 1444, 1440, 1447, 1438,
-     1452, 1433, 1436, 1437, 1434, 1435, 1439, 1446, 1446, 1443,
-     1448, 1450, 1441, 1451, 1442, 1448, 1453, 1444, 1447, 1449,
-     1449, 1454, 1455, 1458, 1452, 1456, 1450, 1451, 1460, 1457,
-     1454, 1462, 1456, 1463, 1453, 1467, 1463, 1455, 1457, 1458,
-     1466, 1457, 1470, 1460, 1464, 1464, 1465, 1465, 1460, 1469,
-     1469, 1468, 1466, 1467, 1468, 1470, 1462, 1471, 1472, 1473,
-     1474, 1475, 1476, 1472, 1473, 1477, 1478, 1480, 1481, 1481,
-
-     1482, 1476, 1479, 1480, 1483, 1478, 1471, 1475, 1478, 1474,
-     1484, 1479, 1485, 1486, 1477, 1487, 1490, 1483, 1491, 1493,
-     1482, 1492, 1492, 1494, 1498, 1495, 1485, 1487, 1484, 1486,
-     1495, 1497, 1494, 1496, 1496, 1493, 1491, 1499, 1500, 1501,
-     1497, 1490, 1498, 1497, 1501, 1501, 1503, 1504, 1496, 1505,
-     1506, 1507, 1508, 1509, 1509, 1506, 1500, 1507, 1499, 1510,
-     1503, 1511, 1504, 1512, 1515, 1510, 1511, 1513, 1516, 1512,
-     1508, 1505, 1517, 1513, 1518, 1520, 1519, 1524, 1517, 1519,
-     1522, 1520, 1516, 1525, 1515, 1519, 1526, 1518, 1522, 1527,
-     1528, 1529, 1530, 1531, 1526, 1533, 1524, 1535, 1527, 1532,
-
-     1532, 1533, 1525, 1528, 1529, 1534, 1530, 1531, 1536, 1537,
-     1535, 1534, 1538, 1539, 1540, 1541, 1542, 1543, 1545, 1545,
-     1540, 1532, 1546, 1552,    0, 1547, 1539, 1537, 1536, 1547,
-     1554, 1538, 1542, 1548, 1549, 1543, 1550, 1541, 1548, 1549,
-     1551, 1550, 1546, 1555, 1555, 1554, 1552, 1556, 1557, 1551,
-     1558, 1559, 1559, 1560, 1561, 1564, 1562, 1565, 1563, 1566,
-     1557, 1561, 1568, 1567, 1659, 1566, 1556, 1560, 1562, 1558,
-     1563, 1659, 1569, 1571, 1564, 1567, 1571, 1565, 1569, 1575,
-     1568, 1570, 1570, 1572, 1572, 1574, 1576, 1578, 1575, 1579,
-     1574, 1579, 1576, 1577, 1577, 1580, 1581, 1582, 1580, 1578,
-
-     1583, 1585, 1584, 1586, 1589, 1587, 1585, 1588, 1591, 1589,
-     1593, 1597, 1586,    0, 1590, 1593, 1581, 1587, 1583, 1582,
-     1584, 1592, 1588, 1590, 1594, 1596, 1592, 1598, 1591, 1595,
-     1595, 1596, 1597, 1592, 1599, 1600, 1590, 1602, 1601, 1594,
-     1601, 1603, 1603, 1604, 1604, 1606, 1598, 1605, 1605, 1609,
-     1599, 1602, 1610, 1602, 1617, 1600, 1607, 1607, 1608, 1608,
-     1611, 1611, 1612, 1613, 1614, 1606, 1612, 1614, 1616, 1613,
-     1609, 1618, 1617, 1610, 1616, 1619, 1620, 1618, 1623, 1620,
-     1621, 1621, 1622, 1622, 1623, 1624, 1625, 1626, 1627, 1628,
-     1630, 1631, 1637, 1634, 1627, 1630, 1630, 1624, 1624, 1624,
-
-     1619, 1632, 1633, 1632, 1624, 1631, 1625, 1626, 1634, 1628,
-     1635, 1636, 1637, 1633, 1638, 1640, 1635, 1639, 1639, 1642,
-     1636, 1641, 1641, 1643, 1644, 1644, 1645, 1645, 1646, 1649,
-     1649, 1650, 1654, 1651, 1653, 1638, 1656, 1656, 1655, 1642,
-     1657, 1640, 1651, 1653, 1655, 1643, 1660, 1658, 1646, 1661,
-     1662, 1662, 1663, 1654, 1664, 1660, 1650, 1668, 1666, 1667,
-     1669, 1657, 1658, 1666, 1673, 1667, 1670, 1669, 1671, 1673,
-     1664, 1675, 1670, 1674, 1671, 1661, 1676, 1668, 1663, 1672,
-     1672, 1677, 1674, 1678, 1679, 1680, 1678, 1681, 1681, 1683,
-     1682, 1675, 1684, 1677, 1685, 1676, 1682, 1687, 1685, 1688,
-
-     1689, 1691, 1679, 1690, 1690, 1689, 1694, 1684, 1692, 1683,
-     1702, 1680, 1695, 1696, 1685, 1697, 1695, 1687, 1699, 1696,
-     1691, 1688, 1699, 1692, 1697, 1694, 1698, 1698, 1700, 1701,
-     1701, 1702, 1703, 1704, 1706, 1705, 1707, 1708, 1709, 1700,
-     1705, 1713, 1710, 1708, 1700, 1713, 1703, 1710, 1711, 1711,
-     1712, 1712, 1704, 1709, 1706, 1715, 1707, 1716, 1717, 1718,
-     1718, 1719, 1719, 1721, 1715, 1720, 1722, 1723, 1716, 1721,
-     1720, 1720, 1722, 1716, 1724, 1725, 1726, 1728, 1717, 1724,
-     1729, 1731, 1726, 1730, 1729, 1732, 1733, 1725, 1734, 1728,
-     1735, 1732, 1737, 1723, 1734, 1730, 1738, 1741, 1739, 1745,
-
-     1741, 1746, 1735, 1739, 1737, 1755, 1731, 1746, 1733, 1742,
-     1742, 1743, 1743, 1744, 1744, 1738, 1747, 1755, 1748, 1745,
-     1749, 1750, 1747, 1748, 1752, 1754, 1749, 1758, 1754, 1752,
-     1750, 1756, 1756, 1759, 1762, 1760, 1761, 1761, 1766, 1758,
-     1760, 1763, 1764, 1762, 1767, 1759, 1763, 1764, 1765, 1765,
-     1768, 1769, 1770, 1767, 1771, 1772, 1770, 1773, 1766, 1771,
-     1774, 1772, 1775, 1776, 1778, 1778, 1779, 1783, 1768, 1774,
-     1769, 1784, 1780, 1781, 1781, 1773, 1778, 1776, 1782, 1783,
-     1775, 1780, 1786, 1785, 1779, 1789, 1789, 1782, 1785, 1792,
-     1791, 1793, 1784, 1791, 1795, 1786, 1796, 1797, 1798, 1799,
-
-     1799, 1804, 1800, 1797, 1800, 1792, 1802, 1793, 1804, 1795,
-     1796, 1801, 1801, 1805, 1802, 1798, 1806, 1806, 1807, 1808,
-     1809, 1812, 1810, 1811, 1813, 1814, 1816, 1807,    0, 1817,
-     1819, 1814, 1809, 1805, 1810, 1811, 1818, 1818, 1820, 1813,
-     1808, 1817, 1821, 1823, 1814, 1821, 1816, 1812, 1819, 1822,
-     1825, 1826, 1827, 1826, 1822, 1825, 1828, 1829, 1820, 1831,
-     1833, 1828, 1834, 1823, 1829, 1835, 1837, 1836, 1831, 1836,
-     1827, 1834, 1839, 1840, 1839, 1841, 1841, 1835, 1833, 1842,
-     1844, 1843, 1844, 1845, 1846, 1837, 1843, 1840, 1845, 1846,
-     1847, 1848, 1849, 1851, 1850, 1852, 1854, 1858, 1849, 1850,
-
-     1855, 1856, 1856, 1852, 1859, 1842, 1851, 1860, 1847, 1857,
-     1857, 1848, 1858, 1860, 1855, 1854, 1861, 1862, 1863, 1862,
-     1865, 1861, 1864, 1864, 1859, 1870, 1863, 1866, 1866, 1867,
-     1867, 1868, 1865, 1869, 1863, 1872, 1874, 1873, 1869, 1873,
-     1868, 1877, 1879, 1870, 1872, 1875, 1876, 1872, 1884, 1883,
-     1875, 1875, 1887, 1877, 1879, 1876, 1880, 1874, 1881, 1888,
-     1885, 1880, 1883, 1881, 1886, 1886, 1889, 1890, 1884, 1885,
-     1887, 1891, 1893, 1894, 1895, 1896, 1904, 1888, 1897, 1898,
-     1896, 1890, 1889, 1897, 1893, 1894, 1891, 1901, 1898, 1903,
-     1905, 1906, 1907, 1901, 1895, 1903, 1909, 1909, 1908, 1904,
-
-     1912, 1910, 1911, 1911, 1913, 1905, 1901, 1908, 1913, 1906,
-     1910, 1914, 1915, 1921,    0, 1916, 1914, 1907, 1917, 1912,
-     1916, 1916, 1918, 1919, 1917, 1915, 1919, 1920, 1918, 1924,
-     1924, 1925, 1925, 1921, 1926, 1920, 1927, 1927, 1928, 1928,
-     1929, 1930, 1931, 1926, 1932, 1942, 1925, 1939, 1931, 1932,
-     1933, 1933, 1929, 1934, 1934, 1935, 1936, 1925, 1943, 1930,
-     1935, 1938, 1936, 1943, 1940, 1938, 1944, 1939, 1940, 1945,
-     1942, 1946, 1947, 1949, 1950, 1948, 1946, 1951, 1953, 1950,
-     1952, 1952, 1953, 1954, 1945, 1956, 1958, 1955, 1957, 1944,
-     1947, 1948, 1955, 1949, 1960, 1961, 1959, 1965, 1954, 1951,
-
-     1957, 1959, 1962, 1962, 1964, 1958, 1966, 1960, 1967, 1968,
-     1969, 1956, 1964, 1961, 1970, 1971, 1965, 1972, 1978, 1974,
-     1975, 1975, 2139, 1976, 1977, 1966, 1976, 1971, 1979, 1969,
-     2139, 1967, 1978, 1968, 1974, 1970, 1983, 1977, 1972, 1980,
-     1980, 1979, 1981, 1981, 1982, 1982, 1984, 1985, 1985, 1986,
-     1988, 1983, 1987, 1987, 1991, 1988, 1992, 1990, 1986, 1984,
-     1993, 1986, 1990, 1994, 1994, 1995, 1995, 1996, 1997, 1997,
-     1998, 2004, 1993, 2007, 1991, 2000, 1992, 1999, 1999, 2001,
-     2002, 2002, 2003, 2003, 2001, 2004, 1996, 2005, 1998, 2006,
-     2000, 2011, 2007, 2009, 2010, 2010, 2005, 2013, 2009, 2012,
-
-     2012, 2014, 2015, 2006, 2018, 2015, 2019, 2014, 2016, 2016,
-     2011, 2017, 2017, 2020, 2023, 2013, 2021, 2021, 2024, 2028,
-     2025, 2019, 2026, 2018, 2016, 2029, 2026, 2027, 2027, 2030,
-     2032, 2032, 2020, 2033, 2023, 2025, 2034, 2035, 2028, 2036,
-     2029, 2024, 2037, 2034, 2030, 2038, 2039, 2039, 2041, 2040,
-     2041, 2035, 2042, 2033, 2044, 2042, 2045, 2036, 2040, 2046,
-     2037, 2045, 2047, 2048, 2046, 2049, 2044, 2051, 2050, 2053,
-     2042, 2038, 2042, 2050, 2053, 2054, 2048, 2055, 2056, 2057,
-     2054, 2061, 2058, 2062, 2056, 2059, 2049, 2047, 2058, 2060,
-     2059, 2068, 2055, 2051, 2060, 2063, 2062, 2073, 2063, 2064,
-
-     2057, 2065, 2066, 2067, 2079, 2068, 2061, 2069, 2064, 2070,
-     2065, 2066, 2067, 2069, 2071, 2070, 2075, 2073, 2071, 2076,
-     2076, 2077, 2078, 2078, 2079, 2075, 2079, 2077, 2081, 2082,
-     2085, 2078, 2083, 2083, 2084, 2087, 2088, 2092, 2089, 2085,
-     2092, 2093, 2090, 2094, 2081, 2082, 2093, 2087, 2095, 2084,
-     2096, 2096, 2088, 2089, 2090, 2097, 2097, 2099, 2099, 2100,
-     2095, 2101, 2100, 2094, 2102, 2103, 2101, 2104, 2104, 2105,
-     2102, 2103, 2106, 2106, 2107, 2108, 2109, 2110, 2110, 2111,
-     2112,    0, 2113, 2105, 2115, 2111, 2107, 2113, 2115, 2108,
-     2116, 2117, 2117, 2116, 2112, 2109, 2118, 2119, 2120, 2121,
-
-     2123, 2118, 2125, 2121, 2122, 2122, 2119, 2125, 2126, 2127,
-     2128, 2129, 2130, 2123, 2131, 2129, 2132, 2133, 2120, 2131,
-     2134, 2136, 2132, 2133, 2128, 2137, 2143, 2138, 2126, 2127,
-     2137, 2146, 2130, 2138, 2140, 2149, 2140, 2136, 2134, 2149,
-     2143, 2144, 2144, 2145, 2147, 2147, 2145, 2150, 2151, 2152,
-     2152, 2158, 2153, 2150, 2156, 2156, 2160, 2146, 2161, 2164,
-     2151, 2153, 2165, 2166, 2164, 2174, 2167, 2175, 2166, 2158,
-     2160, 2167, 2168, 2168, 2161, 2170, 2170, 2172, 2173, 2173,
-     2176, 2174, 2178, 2172, 2179, 2176, 2180, 2180, 2165, 2175,
-     2182, 2183, 2184, 2185, 2187, 2187, 2179, 2183, 2188, 2182,
-
-     2189, 2178, 2191, 2191, 2192, 2192, 2193, 2194, 2185, 2196,
-     2184, 2193, 2195, 2197, 2196, 2197, 2198, 2188, 2189, 2199,
-     2200, 2195, 2201, 2202, 2203, 2194, 2209, 2201, 2244, 2203,
-     2198, 2244, 2200, 2199, 2204, 2204, 2205, 2205, 2206, 2206,
-     2207, 2207, 2208, 2202, 2209, 2210, 2211, 2211, 2212, 2212,
-     2210, 2213, 2214, 2215, 2208, 2216, 2217, 2217, 2218, 2219,
-     2219, 2220, 2220, 2213, 2214, 2221, 2222, 2223, 2224, 2225,
-     2226, 2216, 2227, 2215, 2223, 2226, 2221, 2218, 2222, 2228,
-     2224, 2229, 2229, 2231, 2230, 2232, 2234, 2233, 2235, 2225,
-     2236, 2236, 2227, 2230, 2237, 2241, 2238, 2239, 2242, 2228,
-
-     2233, 2243, 2235, 2237, 2245, 2232, 2248, 2248,    0, 2231,
-     2234, 2238, 2239, 2241, 2246, 2255, 2247, 2257, 2245, 2246,
-     2242, 2247, 2249, 2249, 2243, 2250, 2250, 2252, 2252, 2254,
-     2254, 2256, 2259, 2255, 2261, 2260, 2257, 2262, 2263, 2264,
-     2266, 2265, 2256, 2265, 2267, 2268, 2272, 2263, 2269, 2269,
-     2271, 2271, 2259, 2260, 2278, 2273, 2261, 2262, 2276, 2264,
-     2266, 2279, 2267, 2268, 2273, 2274, 2274, 2276, 2272, 2277,
-     2277, 2280, 2278, 2281, 2282, 2283, 2285, 2293, 2280, 2279,
-     2284, 2286, 2286, 2287, 2287, 2288, 2289, 2290, 2281, 2291,
-     2294, 2288, 2282, 2283, 2292, 2285, 2284, 2293, 2295, 2292,
-
-     2297, 2297, 2290, 2295, 2289, 2296, 2301, 2296, 2291, 2298,
-     2294, 2298, 2299, 2299, 2303, 2304, 2305, 2306, 2308, 2307,
-     2309, 2312, 2316, 2303, 2307, 2301, 2313, 2315, 2305, 2313,
-     2314, 2314, 2317, 2317, 2304, 2320, 2323, 2306, 2308, 2309,
-     2316, 2312, 2315, 2318, 2321, 2322, 2322, 2318, 2321, 2323,
-     2320, 2325, 2326, 2327, 2327, 2329, 2330, 2331, 2332, 2332,
-     2333, 2331, 2334, 2334, 2335, 2330, 2336, 2329, 2337, 2335,
-     2338, 2325, 2326, 2339, 2339, 2336, 2344, 2344, 2345, 2333,
-     2346, 2346, 2338, 2347, 2337, 2348, 2349, 2352, 2350, 2351,
-     2351, 2354, 2354, 2359, 2357, 2349, 2347, 2350, 2348, 2357,
-
-     2345, 2358, 2352, 2360, 2361, 2362, 2358, 2359, 2360, 2363,
-     2366, 2364, 2361, 2369, 2374, 2367, 2368,    0, 2363, 2364,
-     2367, 2368, 2370, 2370, 2362, 2366, 2371, 2371, 2369, 2372,
-     2373, 2375, 2374, 2376,    0, 2373, 2372, 2377, 2379, 2376,
-     2378, 2378, 2377, 2380, 2381, 2381, 2382, 2382, 2380, 2375,
-     2385, 2386, 2386, 2379, 2387, 2388, 2397, 2387, 2410, 2389,
-     2388, 2388, 2390, 2385, 2389, 2391, 2392, 2390, 2393, 2394,
-     2392, 2391, 2395, 2393, 2396, 2398, 2410, 2397, 2394, 2399,
-     2401, 2398, 2396, 2400, 2403, 2399, 2406, 2395, 2400, 2403,
-     2404, 2408, 2401, 2404, 2409, 2411, 2408, 2412, 2406, 2409,
-
-     2413, 2414, 2414, 2415, 2418, 2419, 2412, 2420, 2411, 2413,
-     2421, 2421, 2415, 2422, 2424, 2423, 2425, 2425, 2426, 2428,
-     2430, 2432, 2432, 2418, 2423, 2419, 2420, 2431, 2433, 2424,
-     2434, 2431, 2422, 2435, 2428, 2436, 2434, 2426, 2438, 2435,
-     2430, 2436, 2437, 2437, 2439, 2441, 2438, 2442, 2444, 2439,
-     2445, 2446, 2444, 2433, 2441, 2448, 2448, 2449, 2449, 2453,
-     2442, 2450, 2450, 2453, 2445, 2454, 2446, 2452, 2452, 2458,
-     2454, 2456, 2456, 2459, 2460, 2461, 2463, 2471, 2459, 2469,
-     2461, 2461, 2464, 2464, 2466, 2466, 2460, 2467, 2467, 2458,
-     2468, 2473, 2469, 2468, 2477, 2471, 2463, 2474, 2474, 2475,
-
-     2475, 2476, 2476, 2478, 2478, 2479, 2480, 2481, 2482, 2477,
-     2488, 2473, 2483, 2483, 2482, 2484, 2489, 2487, 2479, 2484,
-     2490, 2481, 2487, 2487, 2480, 2491, 2492, 2493, 2495, 2495,
-     2494, 2491, 2492, 2488, 2494, 2500, 2489, 2498, 2501, 2503,
-     2490, 2501, 2498, 2500, 2504, 2505, 2506, 2504, 2507, 2508,
-        0, 2506, 2493, 2509, 2510, 2510, 2511, 2512, 2513, 2514,
-     2512, 2517, 2505, 2505, 2503, 2515, 2507, 2509, 2512, 2508,
-     2511, 2516, 2513, 2515, 2518, 2518, 2516, 2516, 2514, 2523,
-     2517, 2519, 2519, 2520, 2520, 2521, 2521, 2522, 2522, 2524,
-     2525, 2526, 2527, 2528, 2524, 2523, 2529, 2531, 2531, 2532,
-
-     2533, 2527, 2532, 2535, 2535, 2536, 2537, 2537, 2545, 2538,
-     2525,    0, 2536, 2528, 2538, 2541, 2529, 2526, 2533, 2540,
-     2540, 2542, 2543, 2548, 2541, 2547, 2545, 2546, 2546, 2547,
-     2542, 2543, 2548, 2549, 2550, 2552, 2551, 2556, 2560, 2550,
-     2550, 2561, 2556, 2562, 2552, 2557, 2557, 2564, 2549, 2551,
-     2559, 2559, 2560, 2565, 2568, 2569, 2564, 2570, 2573, 2575,
-        0, 2562, 2571, 2621, 2569, 2565, 2561, 2577, 2571, 2578,
-     2573, 2621, 2577, 2580, 2578, 2579, 2579, 2570, 2582, 2568,
-     2575, 2589, 2580, 2582, 2583, 2583, 2585, 2585, 2583, 2586,
-     2586, 2587, 2587, 2588, 2590, 2591, 2597, 2593, 2598, 2594,
-
-     2591, 2589, 2588, 2593, 2594, 2595, 2596, 2596, 2600, 2601,
-     2595, 2599, 2602, 2590, 2597, 2601, 2599, 2603, 2603, 2598,
-     2605, 2609, 2606, 2607, 2605, 2611, 2600, 2606, 2607, 2608,
-     2608, 2610, 2613, 2613, 2615, 2616, 2619, 2602, 2617, 2620,
-     2609, 2618, 2617, 2623, 2622, 2611, 2610, 2615, 2616, 2622,
-     2618, 2625, 2619, 2624, 2624, 2627, 2627, 2630, 2620, 2628,
-     2628, 2632, 2632, 2634, 2635, 2636, 2637, 2639, 2639, 2623,
-     2625, 2637, 2640, 2641, 2642, 2644, 2644, 2645, 2630, 2634,
-     2635, 2636, 2646, 2646, 2649, 2651, 2652, 2655, 2650, 2659,
-     2651, 2645, 2640, 2642, 2650, 2657, 2641, 2653, 2653, 2654,
-
-     2654, 2656, 2656, 2658, 2649, 2660, 2657, 2655, 2652, 2659,
-     2661, 2660, 2658, 2662, 2663, 2664, 2664, 2665, 2666, 2666,
-     2665, 2656, 2671, 2670, 2672, 2662, 2673, 2673, 2674, 2661,
-     2672, 2674, 2675, 2676, 2663, 2670, 2678, 2680, 2675, 2679,
-     2681, 2678, 2671, 2682, 2679, 2685, 2681, 2683, 2683, 2686,
-     2687, 2676, 2688, 2689, 2689, 2690, 2680, 2685, 2696, 2691,
-     2682, 2682, 2693, 2693,    0, 2688, 2695, 2686, 2691, 2694,
-     2694, 2695, 2696, 2697, 2690, 2687, 2698, 2698, 2697, 2699,
-     2699, 2700, 2700, 2701, 2703, 2703, 2706, 2708, 2701, 2709,
-     2710, 2711, 2711, 2713, 2713, 2715, 2714, 2716, 2717, 2717,
-
-     2720, 2719, 2721, 2722,    0, 2706, 2716, 2719, 2722, 2708,
-     2714, 2709, 2710, 2725, 2725, 2715, 2727, 2727, 2728, 2729,
-     2720, 2721, 2730, 2728, 2731, 2736, 2732, 2734, 2730, 2733,
-     2733, 2737, 2734, 2729, 2732, 2738, 2731, 2739, 2740, 2742,
-     2738, 2743, 2744, 2745, 2740, 2736, 2746, 2742, 2753, 2739,
-     2747, 2737, 2748, 2749, 2750, 2757, 2752, 2761, 2761, 2750,
-     2743, 2752, 2744, 2745, 2746, 2754, 2747, 2755, 2753, 2748,
-     2748, 2754, 2755, 2758, 2749, 2757, 2762, 2762, 2763, 2767,
-     2767, 2773, 2763, 2769, 2769, 2773, 2758, 2770, 2770, 2776,
-     2770, 2771, 2771, 2779, 2771, 2772, 2772, 2777, 2772, 2775,
-
-     2775, 2780, 2785, 2781, 2782, 2782, 2787, 2776, 2781, 2786,
-     2787, 2777, 2800, 2779, 2788, 2789, 2786, 2791, 2800, 2792,
-     2826, 2780, 2796, 2788, 2793, 2793, 2801, 2785, 2792, 2826,
-     2789, 2794, 2794, 2795, 2795, 2791, 2797, 2796, 2798, 2799,
-     2802, 2797, 2803, 2804, 2799, 2799, 2806, 2798, 2804, 2805,
-     2798, 2801, 2807, 2807, 2805, 2802, 2808, 2878, 2809, 2810,
-     2810, 2878, 2808, 2803, 2809, 2806, 2811, 2811, 2812, 2815,
-     2815, 2818, 2818, 2812, 2819, 2819, 2820, 2820, 2821, 2821,
-     2822, 2822, 2823, 2823, 2824, 2824, 2827, 2827, 2828, 2829,
-     2830, 2834, 2832, 2833, 2833, 2835, 2842, 2828, 2837, 2837,
-
-     2836, 2829, 2838, 2839, 2839, 2844, 2834, 2846, 2835, 2849,
-     2830, 2832, 2836, 2843, 2842, 2849, 2843, 2838, 2845, 2845,
-     2848, 2850, 2851, 2848, 2852, 2846, 2853, 2851, 2856, 2854,
-     2857, 2844, 2860, 2869, 2856, 2850, 2869, 2871, 2876, 2857,
-     2872, 2872, 2879, 2852, 2853, 2854, 2877, 2860, 2873, 2873,
-     2871, 2874, 2874, 2880, 2882, 2877, 2886, 2883, 2884, 2887,
-     2887, 2876, 2879, 2884, 2885, 2888, 2885, 2880, 2883, 2889,
-     2891, 2886, 2890, 2892, 2893, 2894, 2896, 2882, 2888, 2895,
-     2897, 2902, 2898, 2903, 2894, 2905, 2891, 2898, 2889, 2893,
-     2890, 2895, 2904, 2904, 2905, 2902, 2910, 2896, 2892, 2911,
-
-     2897, 2906, 2906, 2903, 2907, 2907, 2908, 2908, 2909, 2909,
-     2912, 2913, 2914, 2912, 2915, 2910, 2913, 2914, 2916, 2911,
-     2917, 2918, 2919, 2920, 2921, 2923, 2917, 2924, 2920, 2922,
-     2922, 2925, 2925, 2916, 2919, 2918, 2927, 2929, 2935, 2915,
-     2923, 2932, 2932, 2936, 2921, 2934, 2924, 2933, 2933, 2936,
-     2937, 2927, 2938, 2934, 2939, 2929, 2937, 2935, 2940, 2941,
-     2942, 2942, 2943, 2943, 2941, 2945, 2938, 2939, 2946, 2948,
-     2949, 2951, 2954, 2952, 2949, 2953, 2955, 2940, 2952, 2956,
-     2959, 2959, 2957, 2948, 2962, 2954, 2945, 2957, 2946, 2955,
-     2958, 2951, 2963, 2964, 2953, 2958, 2965, 2965, 2956, 2972,
-
-     2966, 2967, 2968, 2968, 2962, 2966, 2969, 2967, 2970, 2971,
-     2963, 2969, 2964, 2970, 2971, 2973, 2975, 2975, 2972, 2976,
-     2980, 2973, 2977, 2977, 2976, 2979, 2981, 2982, 2983, 2979,
-     2984, 2985, 2986, 2981, 2988, 2988, 2984, 2990, 2990, 2980,
-     2991, 2993, 2994, 2992, 2995, 2986, 2982, 2983, 2992, 2991,
-     2985, 2997, 2991, 2996, 2996, 2998, 2997, 2995, 3000, 3002,
-     2993, 2994, 3001, 3001, 3003, 3003, 3004, 3004, 2998, 3005,
-     3006, 3007, 3008, 3008, 3005, 3009, 3014, 3006, 3002, 3010,
-     3009, 3010, 3011, 3011, 3000, 3012, 3013, 3016, 3019, 3015,
-     3007, 3023, 3012, 3013, 3015, 3014, 3018, 3018, 3021, 3022,
-
-     3024, 3025, 3025, 3021, 3022, 3028, 3016, 3019, 3027, 3027,
-     3023, 3029, 3030, 3030, 3031, 3031, 3032, 3034, 3034, 3024,
-     3035, 3035, 3036, 3032, 3028, 3042, 3038, 3041, 3043, 3036,
-     3029, 3038, 3041, 3044, 3044, 3045, 3045,    0,    0,    0,
-        0,    0,    0,    0, 3042,    0,    0, 3043, 3049, 3049,
-     3049, 3049, 3049, 3049, 3049, 3050, 3050, 3050, 3050, 3050,
-     3050, 3050, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3052,
-     3052, 3052, 3052, 3052, 3052, 3052, 3053, 3053, 3053, 3053,
-     3053, 3053, 3053, 3055, 3055,    0, 3055, 3055, 3055, 3055,
-     3056, 3056,    0,    0,    0, 3056, 3056, 3057, 3057,    0,
-
-        0, 3057,    0, 3057, 3058,    0,    0,    0,    0,    0,
-     3058, 3059, 3059,    0,    0,    0, 3059, 3059, 3060,    0,
-        0,    0,    0,    0, 3060, 3061, 3061,    0, 3061, 3061,
-     3061, 3061, 3062, 3062,    0, 3062, 3062, 3062, 3062, 3048,
-     3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
-     3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
-     3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
-     3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048
+       23,   23,   21,   21,   24,   12,   21,   84,   23,   24,
+       34,   21,   23,   24,   12,   23,   24, 1016,   24,   24,
+       21,   26,   26,   27,   27,   84,   28,   36,   32,   32,
+       28,   34,   27,   28,   33,   33,   26,   32,   42,   33,
+       28,   36,   28,   32,   37,   37,  127,   32,   52,   37,
+       69,   52,  127,   42,  123,   33,   35,   35,   38,   37,
+       37,   35,   37,   38,   69,   35,   38,   39,   39,   81,
+       39,   35,   40,   38,   35,   80,   40,   38,   38,   39,
+
+      123,   35,  151,   41,   41,   39,   40,   80,   41,   81,
+       40,   40,   41,   58,   77,   58,   58,   77,   58,   63,
+       63,   66,   86,   66,   66,   68,   66,   68,   68,   71,
+       68,   71,   71,   66,   71,   72,   86,   88,   78,   72,
+       71,   74,   78,   74,   74,   82,   74,   83,   82,   85,
+       83,   89,   74,   74,   87,   88,   88,   90,   85,   91,
+       87,   92,   93,   83,  102,   91,   87,   95,   87,   94,
+       97,   96,   98,   89,   97,   92,   90,   98,   91,   99,
+       94,   94,   93,  102,  100,   95,  101,  100,   94,   96,
+      100,  103,  101,   99,  104,  105,  103,  104,  106,  149,
+
+      108,  104,  107,  100,  100,  109,  107,  108,  110,  111,
+      112,  101,  106,  114,  105,  110,  103,  104,  109,  105,
+      113,  115,  111,  116,  113,  115,  118,  117,  119,  119,
+      112,  114,  117,  120,  122,  121,  117,  124,  126,  121,
+      128,  116,  129,  129,  125,  131,  118,  125,  121,  122,
+      130,  126,  128,  120,  121,  132,  124,  130,  125,  133,
+      129,  131,  125,  129,  135,  134,  135,  136,  130,  141,
+      138,  137,  139,  140,  132,  135,  137,  161,  140,  136,
+      133,  134,  138,  141,  143,  143,  145,  135,  161,  145,
+      139,  147,  155,  147,  147,  155,  147,  150,  150,  152,
+
+      158,  152,  152,  153,  152,  153,  153,  156,  153,  159,
+      157,  160,  156,  162,  163,  153,  157,  164,  158,  160,
+      166,  162,  165,  168,  159,  157,  160,  165,  167,  168,
+      168,  169,  164,  163,  170,  171,  171,  167,  172,  170,
+      166,  173,  176,  173,  172,  174,  173,  175,  175,  174,
+      177,  180,  178,  148,  174,  177,  169,  178,  179,  174,
+      182,  176,  181,  173,  182,  174,  174,  183,  181,  184,
+      179,  180,  183,  185,  186,  187,  188,  189,  238,  191,
+      193,  188,  189,  184,  191,  192,  186,  201,  185,  186,
+      218,  181,  238,  187,  190,  190,  193,  194,  190,  198,
+
+      190,  195,  195,  194,  196,  192,  218,  197,  201,  199,
+      196,  200,  190,  197,  190,  199,  196,  200,  202,  198,
+      203,  204,  205,  206,  202,  203,  200,  204,  205,  207,
+      206,  208,  209,  210,  211,  207,  212,  213,  209,  214,
+      211,  215,  216,  219,  208,  213,  215,  217,  222,  220,
+      224,  216,  214,  210,  220,  220,  221,  226,  212,  225,
+      223,  221,  217,  219,  223,  225,  222,  227,  228,  229,
+      231,  232,  224,  227,  229,  226,  226,  230,  232,  230,
+      233,  234,  235,  237,  236,  244,  233,  234,  228,  231,
+      236,  239,  239,  240,  240,  237,  241,  242,  243,  245,
+
+      243,  235,  241,  242,  245,  247,  246,  248,  244,  249,
+      251,  250,  146,  252,  262,  248,  250,  243,  246,  252,
+      241,  253,  257,  254,  247,  255,  256,  253,  254,  249,
+      255,  258,  256,  251,  259,  260,  261,  257,  264,  262,
+      263,  264,  266,  266,  261,  258,  263,  268,  265,  260,
+      265,  267,  259,  271,  267,  269,  269,  270,  270,  272,
+      273,  275,  274,  273,  277,  268,  274,  276,  281,  271,
+      275,  278,  281,  276,  272,  283,  280,  278,  277,  279,
+      283,  279,  280,  282,  282,  284,  285,  286,  287,  281,
+      288,  284,  289,  289,  290,  291,  292,  290,  293,  144,
+
+      292,  294,  296,  288,  298,  286,  285,  295,  295,  287,
+      301,  297,  299,  291,  297,  304,  298,  293,  299,  294,
+      296,  300,  301,  305,  300,  303,  307,  309,  305,  307,
+      308,  297,  302,  304,  303,  306,  318,  318,  306,  309,
+      306,  302,  142,  308,  302,  310,  313,  310,  310,  302,
+      302,  302,  302,  311,  312,  314,  306,  312,  311,  311,
+      315,  321,  316,  313,  317,  324,  313,  319,  320,  320,
+      314,  316,  319,  317,  322,  323,  321,  315,  315,  322,
+      325,  326,  327,  330,  324,  338,  331,  323,  327,  328,
+      328,  331,  328,  332,  338,   70,  326,  333,  336,  332,
+
+      325,  328,  333,  330,  334,  335,  339,  339,  335,  334,
+      335,  337,  336,  340,  337,  334,  341,  341,  342,  340,
+      345,  346,  343,  342,  347,  343,  348,  337,  358,   64,
+      337,  343,  337,  351,  349,  343,  351,  352,  354,  347,
+      345,  348,  346,  343,  344,  344,  355,  344,  349,  358,
+      359,  352,  351,  354,  362,  355,  356,  360,  357,  433,
+      344,  356,  356,  344,  357,  344,  361,  344,  353,  359,
+      353,  353,  360,  362,  364,  361,  365,  366,  368,  363,
+      353,  433,  353,  353,  353,  363,  369,  353,  367,  370,
+      371,  366,  372,  373,  367,  376,  365,  372,  367,  377,
+
+      364,  368,  375,  375,  374,  371,  369,  378,  373,  370,
+      374,  377,  379,  380,  381,  376,  384,  382,  379,  385,
+      387,  378,  382,  383,  383,  386,  383,  388,  389,  388,
+      381,  392,  389,  390,  387,  385,  384,  390,  380,  391,
+      391,  386,  393,  394,  395,  397,  396,  388,  399,  398,
+      392,  400,  390,  399,  397,  400,  403,  393,  398,  394,
+      396,  401,  395,  402,  405,  397,  404,  397,  405,  402,
+      401,  406,  404,  407,  406,  408,  410,  403,  407,  409,
+      409,  411,  411,  412,  413,  414,  414,  415,  412,  410,
+      416,  417,  418,  415,  416,  408,  419,  413,  420,  421,
+
+      421,  419,  422,  420,  423,  424,  417,  425,  421,  426,
+      428,  427,  426,  418,  422,  427,  429,  429,  431,  425,
+      430,  436,  428,  424,  423,  430,  432,  432,  435,  435,
+      437,  438,  439,  442,  441,  446,  440,  444,  437,  431,
+      438,  440,  436,  445,  447,  442,  449,  448,  451,  446,
+      447,  457,  449,  439,  441,  444,  448,  444,  452,  450,
+      454,  455,  451,  445,  450,  453,  452,  456,  453,  452,
+      460,  457,  458,  456,  454,  458,  455,  459,  462,  466,
+      461,  463,  464,  459,  460,  461,  464,  465,  467,  468,
+      469,  470,  465,  467,  466,  473,  511,  474,  476,  475,
+
+      462,  459,  463,  475,  470,  468,  477,   59,  481,  469,
+      471,  471,  474,  481,  511,  473,  471,  476,  471,  478,
+      480,  484,  477,  478,  471,  482,  471,  484,  479,  471,
+      471,  483,  484,  479,  485,  480,  471,  479,  487,  486,
+      483,  482,  486,  488,  489,  489,  490,  491,  491,  492,
+      485,  494,  496,  493,  495,  497,  499,  500,  498,   54,
+      497,  487,  501,  488,  492,  493,  494,  498,  501,  503,
+      506,  490,  500,  495,  496,  499,  504,  505,  503,  507,
+      504,  508,  506,  505,  509,  512,  510,  515,   53,  512,
+      513,  514,  518,  514,  507,  515,  516,  516,  509,  517,
+
+      508,  510,  519,  513,  518,  517,  520,  521,  519,  522,
+      521,  523,  524,  525,  527,  526,  525,  524,  520,  529,
+      530,  530,  528,  522,  526,  536,  523,  528,  528,  543,
+      527,  526,  529,  532,  526,  531,  531,  533,  533,  532,
+      534,  534,  535,  539,  537,  538,  536,  537,  535,  540,
+      538,  541,  543,  542,  541,  544,  545,  540,  542,  546,
+      545,  548,  539,  547,  549,  546,  550,  547,  552,  549,
+      551,  553,  554,  552,  544,  554,  551,  555,  557,  548,
+      554,  556,  556,  558,  554,  553,  550,  559,  560,  561,
+      562,  564,  559,  560,   48,  555,  557,  564,  565,  558,
+
+      571,  566,  567,  561,  566,  562,  567,  565,  568,  569,
+      570,  572,  569,  568,  573,  570,  571,  574,  575,  576,
+      580,  573,  578,  575,  577,  577,  579,  583,  567,  572,
+      574,  578,  581,  583,  582,  585,  580,  584,  585,  576,
+      589,  581,  592,  584,   43,  579,  582,  586,  586,  587,
+      586,  588,  587,  590,  591,  594,  588,  593,  589,  591,
+      594,  592,  595,  593,  601,  597,  596,  590,  595,  596,
+      597,  598,  599,  600,  602,  603,  598,  598,  604,  606,
+      602,  607,  607,  601,  601,  599,  600,  604,  605,  608,
+      611,  610,  609,  605,  603,  609,  608,  610,  612,  606,
+
+      613,  615,  611,  612,  617,  613,  613,  614,  614,  616,
+      609,  616,  618,  619,  618,  620,  621,  622,  623,  624,
+      625,  626,  627,  617,  625,  624,  615,  628,  629,  630,
+      626,  619,  631,  620,  621,  632,  622,  627,  623,  633,
+      634,  635,  628,  636,  631,  633,  629,  637,  630,  639,
+      632,  638,  640,  635,  634,  638,  641,  642,  643,  644,
+      645,  645,  636,  647,  649,  646,  637,  639,  640,  646,
+      648,  651,  652,  644,  641,  642,  642,  643,  649,  650,
+      653,  648,  647,  654,  650,  656,  659,  651,  661,  655,
+      654,  652,  656,  653,  655,  657,  658,  661,  660,  662,
+
+      657,  658,  663,  664,  659,  660,  666,  665,  668,  666,
+      667,  663,  665,  662,  667,  664,  669,  670,  672,  671,
+      673,  673,  668,  675,  675,  669,  674,  674,  676,  678,
+      679,  680,  670,  671,  681,  674,  679,  676,  681,  672,
+      682,  683,  684,  685,  688,  686,  689,  687,  678,  685,
+      690,  680,  682,  686,  687,  699,  711,  696,  693,  700,
+      684,  711,  688,  701,  699,  700,  683,  703,  703,  706,
+      690,  689,  691,  693,  696,  705,  702,  691,  708,  701,
+      702,  691,  704,  704,  691,  707,  705,  706,  712,  709,
+      713,  691,  691,  726,  691,  709,  714,   14,  708,  707,
+
+      710,  710,  710,  715,  710,  726,  715,  710,  713,  712,
+      716,  716,  710,  717,  718,  718,  719,  727,  710,  710,
+      717,  714,  720,  720,  721,  722,  728,  723,  722,  721,
+      728,  719,  723,  724,  724,  725,  727,  725,  729,  731,
+      730,  732,  732,  734,  736,  733,  738,  731,  735,  735,
+      739,  737,  741,  741,  752,  752,  739,  734,  729,  730,
+      733,  740,  736,  737,  742,  745,  740,  744,  738,  742,
+      742,  745,  744,  746,  749,  747,  748,  749,  750,  746,
+      747,  751,  748,  754,  750,  753,  753,  755,  756,  751,
+      757,  754,  758,  756,  760,  759,  763,  757,  761,  761,
+
+      762,  764,  765,  767,  763,  755,  768,  764,  770,  762,
+      758,  759,  767,  760,  769,  768,  773,  770,  774,  769,
+      771,  765,  772,  771,  775,  776,  777,  772,  778,  778,
+      773,  777,  777,  775,  779,  780,  781,  782,  776,  783,
+      786,  786,  783,  774,  785,  781,  785,  787,  788,  779,
+      783,  789,  792,  788,  780,  790,  791,  793,  794,  795,
+      796,  782,  797,  799,  796,  798,  801,  794,  787,  799,
+      800,  802,  789,  803,  792,  790,  791,  793,  801,  800,
+      797,  805,  795,  804,  798,  808,  806,  803,  809,  804,
+      802,  806,  807,  807,  810,  805,  811,  809,  812,  813,
+
+      814,  816,  815,  817,  811,  808,  818,  816,  819,  820,
+      821,  823,  818,  824,  810,  820,  821,  817,  812,  814,
+      822,  813,  815,  826,  822,  824,  825,  830,  819,  831,
+      823,  825,  828,  824,  827,  827,  829,  832,  828,  829,
+      833,  835,  831,  832,  826,  830,  834,  834,  836,  837,
+      837,  838,  839,  836,  840,  840,  839,  841,  842,  835,
+      833,  844,  843,  846,  849,  850,  838,  843,  847,  852,
+      852,  853,  855,  855,  854,  853,  856,  857,  842,  841,
+      844,  857,  847,  858,  849,  860,  850,  846,  851,  854,
+      860,  851,  859,  851,  861,  875,  875,  851,  858,  851,
+
+      863,  856,  865,  864,  851,  862,  859,  864,  861,  851,
+      862,  862,  867,  866,  863,  868,  869,  865,  866,  864,
+      868,  870,  871,  872,  867,  873,  874,  878,  866,  872,
+      869,  873,  874,  876,  877,  879,  871,  880,  876,  882,
+      877,  883,  870,  887,  884,   13,  883,  885,  887,  878,
+      890,  882,  886,  886,  879,  880,  881,  881,  884,  885,
+      888,  891,  881,  889,  881,  892,  892,  893,  888,  890,
+      881,  893,  895,  897,  898,  881,  881,  889,  895,  899,
+      891,  896,  881,  900,  896,  899,  901,  898,  900,  903,
+      904,  905,  897,  907,  906,  908,  909,  910,  903,  904,
+
+      906,  909,  907,  912,  911,  901,  914,  905,  913,  917,
+      915,  922,  920,  923,  908,  914,  916,  910,  911,  915,
+      913,  918,  916,  912,  924,  922,  917,  918,  920,  926,
+      925,  927,  928,  923,  929,  932,  933,  928,  937,  929,
+      932,  934,  934,  924,  925,  933,  927,  926,  935,  936,
+      938,  940,  944,  937,  935,  941,  943,  945,  936,  943,
+      941,  941,  946,  938,  942,  942,  944,  940,  942,  947,
+      948,  950,  949,  951,  952,  957,  953,  945,  949,  951,
+      946,  953,  947,  954,  956,  948,  960,  956,  958,  952,
+      959,  950,  963,  958,  961,  959,  957,  954,  962,  961,
+
+      965,  966,  960,  962,  963,  967,  965,  968,  969,  969,
+      970,  967,  971,  968,  974,  972,  975,  966,  972,  970,
+      973,  973,  976,  977,  978,  979,  977,  980,  986,  981,
+      971,  979,  974,  980,  981,  975,  982,  978,  983,  984,
+      987,  982,  976,  983,  988,  984,  986,  989,  990,  990,
+      988,  993,  989,  991,  992,  994,  995,  996,  994,  995,
+      987,  997,  991,  992,  998,  999, 1000, 1001,  996,  993,
+     1002, 1005, 1000, 1001, 1006, 1003,  998, 1004, 1004,  997,
+     1003, 1007, 1008, 1009,  999, 1002, 1008, 1010, 1006, 1011,
+     1005, 1012, 1014, 1007, 1015, 1015, 1010, 1019, 1017, 1018,
+
+     1020, 1009, 1022, 1022, 1021, 1020, 1023, 1051, 1011, 1019,
+     1051, 1014, 1017, 1021, 1018, 1024, 1012, 1025, 1027, 1026,
+     1027, 1024, 1028, 1025, 1026, 1029, 1023, 1028, 1030, 1031,
+     1032, 1033, 1035, 1034, 1031, 1036, 1038, 1038, 1039, 1029,
+     1034, 1040, 1030, 1041, 1043, 1032, 1044, 1035, 1047, 1042,
+     1033, 1044, 1039, 1047, 1036, 1042, 1046, 1046, 1041, 1040,
+     1044, 1049, 1044, 1050, 1043, 1044, 1048, 1048, 1049, 1052,
+     1054, 1053, 1056, 1055, 1058, 1057, 1059, 1050, 1055, 1054,
+     1057, 1061, 1061, 1064,    0, 1058, 1066, 1062, 1052, 1053,
+     1066, 1056, 1062, 1063, 1065, 1059, 1067, 1068, 1063, 1065,
+
+     1069, 1070, 1071, 1064, 1072, 1067, 1073, 1075, 1076, 1074,
+     1077, 1078, 1068, 1073, 1071, 1069, 1079, 1078, 1080, 1072,
+     1070, 1074, 1081, 1082, 1084, 1085, 1075, 1086, 1077, 1076,
+     1084, 1079, 1082, 1087, 1089, 1086, 1088, 1091, 1080, 1085,
+     1092, 1088, 1081, 1090, 1093, 1818, 1089, 1096, 1090, 1090,
+     1094, 1094, 1097, 1087, 1092, 1101, 1091, 1093, 1095, 1098,
+     1096, 1097, 1818, 1095, 1101, 1098, 1095, 1095, 1099, 1099,
+     1100, 1095, 1102, 1106, 1103, 1100, 1109, 1095, 1102, 1103,
+     1104, 1095, 1105, 1105, 1110, 1104, 1107, 1107, 1108, 1111,
+     1112, 1108, 1113, 1108, 1106, 1114, 1109, 1113, 1111, 1115,
+
+     1116, 1117, 1110, 1118, 1120, 1125, 1116, 1117, 1118, 1114,
+     1112, 1119, 1122, 1120, 1121, 1119, 1125, 1115, 1120, 1121,
+     1120, 1127, 1120, 1128, 1120, 1127, 1122, 1123, 1123, 1124,
+     1124, 1129, 1124, 1130, 1131, 1132, 1133, 1134, 1128, 1131,
+     1131, 1133, 1130, 1135, 1136, 1137, 1138, 1139, 1141, 1129,
+     1146, 1134, 1135, 1139, 1140, 1140, 1141, 1132, 1142, 1144,
+     1138, 1143, 1145, 1136, 1137, 1147, 1143, 1150, 1146, 1148,
+        0, 1145, 1142, 1144, 1148, 1149, 1149, 1151, 1151, 1152,
+     1154, 1152, 1150, 1154, 1155, 1156, 1157, 1158, 1158, 1155,
+     1147, 1159, 1160, 1160, 1162, 1157, 1161, 1161, 1163, 1162,
+
+     1164, 1165, 1165, 1166, 1156, 1167, 1168, 1169, 1167, 1170,
+     1172, 1159, 1169, 1171, 1174, 1171, 1175, 1174, 1170, 1163,
+     1176, 1164, 1177, 1166, 1178, 1176, 1168, 1177, 1172, 1179,
+     1180, 1175, 1178, 1182, 1179, 1180, 1181, 1181, 1182, 1183,
+     1184, 1185, 1186, 1188, 1189, 1191, 1184, 1190, 1185, 1188,
+     1189, 1191, 1190, 1192, 1193, 1186, 1194, 1183, 1195, 1195,
+     1196, 1198, 1192, 1199, 1200, 1201, 1202, 1194, 1204, 1205,
+     1200, 1201, 1202, 1193, 1204, 1206, 1207, 1208, 1209, 1211,
+     1196, 1198, 1212, 1205, 1210, 1210, 1199, 1213, 1207, 1205,
+     1216, 1208, 1214, 1215, 1215, 1206, 1209, 1214, 1217, 1211,
+
+     1219,    0, 1221, 1217, 1220, 1213, 1222, 1212, 1223, 1220,
+     1220, 1224, 1225, 1216, 1226, 1222, 1223, 1229, 1227, 1219,
+     1221, 1235, 1228, 1227, 1228, 1224, 1227, 1225, 1231, 1226,
+     1233, 1229, 1226, 1232, 1231, 1236, 1237, 1232, 1234, 1239,
+     1235, 1233, 1238, 1234, 1234, 1240, 1241, 1238, 1243, 1244,
+     1240, 1245, 1246, 1246, 1237, 1247, 1248, 1239, 1249, 1247,
+     1251, 1236, 1243, 1252, 1250, 1253, 1241, 1244, 1254, 1245,
+     1250, 1255, 1251, 1256, 1248, 1257, 1259, 1249, 1258, 1253,
+     1257, 1259, 1252, 1254, 1260, 1258, 1255, 1261, 1262, 1262,
+     1263, 1264, 1256, 1265, 1266, 1267, 1261, 1264, 1268, 1266,
+
+     1275, 1267, 1260, 1276, 1268, 1263, 1269, 1269, 1270, 1270,
+     1272, 1272, 1273, 1274, 1265, 1277, 1273, 1276, 1275, 1278,
+     1279, 1279, 1274, 1280, 1281, 1283, 1278, 1284, 1282, 1285,
+     1277, 1286, 1281, 1282, 1285, 1285, 1286, 1286, 1287, 1283,
+     1288, 1288, 1289, 1280, 1290, 1291, 1284, 1292, 1293, 1294,
+     1295, 1296, 1292, 1298, 1291, 1297, 1299, 1296, 1287, 1300,
+     1297, 1289, 1299, 1290, 1301, 1302, 1303, 1293, 1295, 1294,
+     1301, 1302, 1304, 1305, 1306, 1307, 1308, 1312, 1300, 1298,
+     1309, 1310, 1310, 1311, 1313, 1303, 1311, 1314,    0, 1307,
+     1318, 1304, 1305, 1306, 1318, 1309, 1312, 1308, 1319, 1314,
+
+     1315, 1315, 1317, 1313, 1316, 1316, 1320, 1317, 1321, 1324,
+     1322, 1319, 1322, 1325, 1324, 1320, 1322, 1326, 1327, 1328,
+     1328, 1321, 1329, 1331, 1330, 1337, 1332, 1329, 1325, 1322,
+     1330, 1333, 1336, 1338, 1327, 1344, 1333, 1326, 1331, 1332,
+     1334, 1335, 1339, 1337, 1334, 1335, 1340, 1340, 1339, 1342,
+     1345, 1348, 1336, 1338, 1347, 1345, 1344, 1346, 1346, 1354,
+     1347, 1350, 1350, 1352, 1353, 1353, 1352, 1342, 1355, 1357,
+     1358, 1348, 1357, 1359, 1361, 1354, 1360, 1360, 1362, 1363,
+     1364, 1365, 1359, 1367, 1355, 1364, 1366, 1366, 1368, 1361,
+     1358, 1369, 1370, 1370, 1371, 1365, 1372, 1373, 1363, 1362,
+
+     1374, 1367, 1373, 1368, 1375, 1375, 1376, 1377, 1371, 1379,
+     1376, 1378, 1378, 1380, 1372, 1374, 1369, 1381, 1382, 1387,
+     1383, 1381, 1385, 1385, 1380, 1383, 1386, 1377, 1388, 1389,
+     1390, 1379, 1393, 1387, 1391, 1391, 1392, 1382, 1394, 1397,
+     1395, 1392, 1401, 1389, 1386, 1396,    0, 1388, 1388, 1395,
+     1396, 1398, 1393, 1398, 1400, 1390, 1399, 1402, 1394, 1397,
+     1400, 1399, 1401, 1402, 1404, 1405, 1405, 1406, 1407, 1410,
+     1409, 1411, 1411, 1413, 1407, 1409, 1412, 1412, 1404, 1414,
+     1415, 1416, 1417, 1417, 1416, 1419, 1406, 1413, 1418, 1422,
+     1427,    0, 1421, 1410, 1422, 1415, 1420, 1414, 1421, 1420,
+
+     1418, 1423, 1420, 1425, 1423, 1419, 1426, 1428, 1431, 1431,
+     1428, 1426, 1425, 1429, 1420, 1427, 1430, 1432, 1432, 1429,
+     1423, 1430, 1433, 1435, 1434, 1436, 1437, 1438, 1433, 1434,
+     1439, 1440, 1441, 1439, 1442, 1443, 1435, 1440, 1441, 1442,
+     1444, 1443, 1448, 1436, 1445, 1437, 1449, 1438, 1447, 1445,
+     1446, 1446, 1450, 1447, 1451, 1452, 1455, 1456, 1453, 1457,
+     1448, 1454, 1455, 1444, 1458, 1459, 1449, 1462, 1451, 1452,
+     1453, 1467, 1450, 1465, 1454, 1461, 1461, 1456, 1458, 1457,
+     1463, 1464, 1464, 1466, 1468, 1463, 1459, 1462, 1465, 1469,
+     1470, 1472, 1471, 1473, 1477, 1467, 1475, 1466, 1469, 1471,
+
+     1472, 1478, 1468, 1472, 1478, 1470, 1479, 1479, 1481, 1473,
+     1482, 1475, 1480, 1480, 1483, 1486, 1475, 1483, 1485, 1477,
+     1481, 1484, 1484, 1489, 1487, 1488, 1491, 1490, 1482, 1487,
+     1488, 1485, 1492, 1495, 1486, 1491, 1493, 1494, 1497, 1495,
+     1496, 1496, 1489, 1490, 1498, 1493, 1494, 1499, 1493, 1500,
+     1501, 1492, 1504, 1507, 1502, 1508, 1503, 1498, 1497, 1502,
+     1502, 1503, 1511, 1500, 1504, 1499, 1501, 1509, 1509, 1510,
+     1512, 1511, 1514, 1508, 1515, 1512, 1513, 1513, 1507, 1516,
+     1517, 1514, 1518, 1520, 1514, 1510, 1521, 1518, 1518, 1522,
+     1523, 1513, 1515, 1524, 1525, 1523, 1532, 1520, 1517, 1524,
+
+     1516, 1521, 1526, 1526, 1527, 1533,    0, 1541, 1528, 1529,
+     1527, 1522, 1525, 1528, 1530, 1529, 1532, 1534, 1535, 1533,
+     1530, 1536, 1537, 1534, 1536, 1539, 1541, 1542, 1537, 1543,
+     1536, 1535, 1544, 1539, 1545, 1546, 1547, 1543, 1548, 1549,
+     1549, 1544, 1552, 1550, 1553, 1551, 1542, 1545, 1546, 1550,
+     1547, 1551, 1548, 1554, 1555, 1552, 1556, 1557, 1558, 1559,
+     1560, 1549, 1563, 1557, 1553, 1562, 1562, 1569, 1564, 1556,
+     1571, 1554, 1564, 1555, 1565, 1559, 1566, 1568, 1560, 1565,
+     1558, 1566, 1563, 1567, 1573, 1571, 1568, 1574, 1567, 1575,
+     1569, 1572, 1572, 1576, 1576, 1577, 1581, 1578, 1579, 1574,
+
+     1580, 1582, 1584, 1573, 1578, 1583, 1585, 1586, 1575, 1577,
+     1579, 1583, 1580, 1586, 1584, 1581, 1587, 1587, 1591, 1588,
+     1592, 1582, 1588, 1591, 1585, 1589, 1589, 1593, 1595, 1592,
+     1594, 1594, 1596, 1593, 1596, 1597, 1598, 1599, 1597, 1600,
+     1595, 1602, 1601, 1603, 1607, 1606, 1602, 1605, 1608, 1604,
+     1606, 1614, 1603, 1607, 1612, 1612, 1598, 1600, 1609, 1599,
+     1601, 1604, 1605, 1609, 1610, 1611, 1607, 1613, 1608, 1610,
+     1609, 1615, 1614, 1613, 1617, 1616, 1618, 1623, 1618, 1619,
+     1611, 1620, 1620, 1621, 1621, 1622, 1622, 1624, 1624, 1626,
+     1615, 1616, 1627, 1619, 1617, 1619, 1634, 1623, 1625, 1625,
+
+     1628, 1628, 1629, 1630, 1631, 1633, 1629, 1631, 1636, 1630,
+     1626, 1633, 1635, 1627, 1634, 1641, 1637, 1642, 1635, 1637,
+     1638, 1638, 1639, 1639, 1640, 1643, 1644, 1641, 1641, 1641,
+     1640, 1645, 1644, 1636, 1641, 1647, 1648, 1642, 1650, 1651,
+     1647, 1647, 1649, 1654, 1649, 1643, 1652, 1653, 1655, 1650,
+     1648, 1645, 1652, 1657, 1651, 1659, 1653, 1656, 1656, 1658,
+     1658, 1660, 1663, 1654, 1661, 1661, 1662, 1662, 1667, 1655,
+     1666, 1666, 1668, 1671, 1672, 1659, 1670, 1673, 1673, 1657,
+     1672, 1668, 1663, 1660, 1674, 1670, 1675, 1677, 1676, 1678,
+     1679, 1679, 1680, 1667, 1671, 1676, 1677, 1681, 1683, 1685,
+
+     1684, 1675, 1686, 1683, 1687, 1674, 1684, 1690, 1695, 1686,
+     1687, 1691, 1688, 1681, 1688, 1678, 1694, 1691, 1680, 1685,
+     1692, 1692, 1693, 1696, 1697, 1694, 1690, 1693, 1695, 1698,
+     1699, 1700, 1698, 1701, 1701, 1702, 1697, 1704, 1703, 1705,
+     1707, 1702, 1696, 1705, 1708, 1709, 1710, 1710, 1699, 1711,
+     1709, 1714, 1704,    0, 1712, 1717, 1716, 1700, 1703, 1705,
+     1707, 1715, 1716, 1719, 1717, 1715, 1708, 1719, 1711, 1712,
+     1714, 1718, 1718, 1720, 1721, 1721, 1722, 1723, 1725, 1724,
+     1726, 1727, 1728, 1725, 1720, 1730, 1737, 1729, 1728, 1720,
+     1730, 1723, 1731, 1731, 1732, 1732, 1735, 1722, 1724, 1733,
+
+     1726, 1727, 1729, 1733, 1736, 1735, 1737, 1738, 1738, 1739,
+     1739, 1740, 1741, 1742, 1743, 1736, 1740, 1740, 1741, 1742,
+     1736, 1744, 1745, 1746, 1748, 1750, 1744, 1749, 1751, 1746,
+     1753, 1749, 1752, 1754, 1745, 1755, 1748, 1750, 1752, 1754,
+     1743, 1758, 1757, 1759, 1762, 1762, 1761, 1755, 1759, 1761,
+     1763, 1763, 1753, 1751, 1757, 1764, 1764, 1765, 1766, 1767,
+     1758, 1768, 1769, 1770, 1766, 1767, 1768, 1774, 1769, 1772,
+     1774, 1775, 1770, 1778, 1772, 1776, 1776, 1765, 1779, 1780,
+     1781, 1781, 1782, 1775, 1780, 1778, 1786, 1783, 1784, 1787,
+     1779, 1782, 1783, 1784, 1785, 1785, 1788, 1789, 1787, 1790,
+
+     1791, 1792, 1793, 1790, 1794, 1791, 1786, 1792, 1795, 1796,
+     1798, 1798, 1799, 1794, 1788, 1800, 1789, 1801, 1801, 1802,
+     1793, 1803, 1798, 1796, 1800, 1804, 1795, 1805, 1802, 1806,
+     1799, 1812, 1805, 1803, 1809, 1809, 1811, 1813, 1816, 1811,
+     1815,    0, 1806, 1817, 1819, 1819, 1804, 1812, 1820, 1817,
+     1820, 1822, 1816, 1813, 1824, 1815, 1821, 1821, 1825, 1822,
+     1827, 1824, 1826, 1826, 1828, 1829, 1832, 1830, 1831, 1827,
+     1834, 1833, 1837, 1836, 1838, 1838, 1834, 1829, 1825, 1830,
+     1831, 1839, 1840, 1842, 1837, 1828, 1833, 1841, 1842, 1834,
+     1841, 1843, 1832, 1836, 1846, 1845, 1846, 1847, 1848, 1839,
+
+     1845, 1849, 1840, 1848, 1851, 1853, 1855, 1854, 1849, 1857,
+     1856, 1843, 1856, 1851, 1862, 1847, 1854, 1859, 1855, 1859,
+     1860, 1861, 1861, 1853, 1863, 1864, 1865, 1864, 1857, 1863,
+     1866, 1865, 1867, 1868, 1860, 1866, 1869, 1872, 1870, 1871,
+     1862, 1873, 1869, 1870, 1876, 1877, 1873, 1873, 1874, 1872,
+     1867, 1880, 1871, 1868, 1878, 1878, 1874, 1879, 1879, 1877,
+     1881, 1882, 1887, 1876, 1883, 1885, 1880, 1882, 1884, 1883,
+     1884, 1886, 1886, 1885, 1887, 1888, 1888, 1889, 1889, 1890,
+     1881, 1885, 1891, 1892, 1894, 1896, 1898, 1891, 1890, 1895,
+     1899, 1895, 1897, 1894, 1905, 1898, 1894, 1897, 1897, 1901,
+
+     1902, 1892, 1899, 1903, 1906, 1902, 1896, 1905, 1903, 1907,
+     1909, 1901, 1908, 1908, 1910, 1911, 1912, 1915, 1907, 1913,
+     1917, 1916, 1918, 1926, 1906, 1929, 1920, 1918, 1909, 1915,
+     1912, 1911, 1910, 1916, 1913, 1920, 1919, 1923, 1925, 1927,
+     1917, 1919, 1928, 1923, 1925, 1934, 1926,    0, 1930, 1932,
+     1929, 1931, 1931, 1937, 1927, 1935, 1923, 1930, 1932, 1935,
+     1928, 1933, 1933, 1936, 1934, 1938, 1937, 1939, 1936, 1940,
+     1938, 1938, 1942, 1939, 1941, 1940, 1943, 1941, 1946, 1946,
+     1942, 1948, 1947, 1947, 1949, 1949, 1950, 1950, 1951, 1952,
+     1948, 1960, 1953, 1961, 1954, 1960, 1943, 1947, 1953, 1954,
+
+     1951, 1955, 1955, 1956, 1956, 1957, 1958, 1952, 1947, 1964,
+     1957, 1962, 1958, 1961, 1965, 1962, 1966, 1967, 1968, 1965,
+     1969, 1970, 1971, 1968, 1972, 1973, 1974, 1974, 1976, 1972,
+     1978, 1975, 1967, 1979, 1964, 1975, 1977, 1970, 1969, 1966,
+     1980, 1977, 1971, 1976, 1981, 1979, 1983, 1973, 1982, 1981,
+     1984, 1984, 1986, 1987, 1988, 1989, 1978, 1990, 1991, 1980,
+     1986, 1982, 1992, 1993, 1983, 1994, 1999, 1996, 1997, 1997,
+     2000, 1998, 1987, 1988, 1998, 1993, 2001, 1991, 1989, 1999,
+     2005, 1990, 1996, 1992, 2000, 2006, 1994, 2002, 2002, 2001,
+     2003, 2003, 2004, 2004, 2008, 2005, 2007, 2007, 2006, 2009,
+
+     2009, 2013, 2010, 2008, 2012, 2014, 2008, 2010, 2015, 2012,
+     2016, 2016, 2017, 2017, 2018, 2019, 2019, 2020, 2021, 2021,
+     2015, 2013, 2022, 2023, 2026, 2014, 2024, 2024, 2023, 2025,
+     2025, 2027, 2028, 2018, 2029, 2020, 2031, 2022, 2026, 2033,
+     2027, 2031, 2032, 2032, 2034, 2034, 2028, 2035, 2036, 2037,
+     2038, 2038, 2037, 2029, 2036, 2039, 2039, 2040, 2033, 2041,
+     2042, 2045, 2042, 2044, 2048, 2035, 2038, 2046, 2046, 2049,
+     2050, 2051, 2052, 2052, 2041, 2051, 2040, 2053, 2044, 2054,
+     2045, 2058, 2055, 2059, 2048, 2050, 2057, 2057, 2060, 2061,
+     2059, 2062, 2049, 2063, 2054, 2065, 2053, 2055, 2064, 2064,
+
+     2069, 2058, 2060, 2066, 2065, 2066, 2072, 2061, 2067, 2062,
+     2070, 2067, 2069, 2071, 2073, 2070, 2074, 2075, 2071, 2063,
+     2076, 2080, 2075, 2082, 2078, 2079, 2067, 2073, 2067, 2078,
+     2079, 2072, 2081, 2083, 2086, 2084, 2080, 2074, 2081, 2083,
+     2084, 2087, 2085, 2089, 2082, 2088, 2076, 2085, 2088, 2090,
+     2093, 2091, 2089, 2092, 2087, 2094, 2098, 2095, 2090, 2086,
+     2091, 2094, 2092, 2095, 2093, 2096, 2100, 2101, 2101, 2096,
+     2104, 2102, 2103, 2103, 2109, 2100, 2098, 2102, 2106, 2107,
+     2113, 2103, 2108, 2108, 2110, 2112, 2114, 2115, 2117, 2109,
+     2104, 2117, 2104, 2110, 2106, 2107, 2113, 2112, 2118, 2115,
+
+     2119, 2114, 2120, 2118, 2121, 2121, 2122, 2122, 2124, 2124,
+     2125, 2126, 2127, 2125, 2120, 2128, 2126, 2130, 2127, 2133,
+     2119, 2128, 2129, 2129, 2131, 2131, 2132, 2134, 2135, 2135,
+     2136, 2130, 2138, 2133, 2137, 2140, 2136, 2138, 2132, 2140,
+     2141, 2142, 2142, 2141, 2143, 2144, 2134, 2145, 2137, 2143,
+     2148, 2146, 2147, 2147, 2144, 2146, 2150, 2151, 2152, 2153,
+     2154, 2150, 2155, 2148, 2154, 2156, 2157, 2145, 2158, 2159,
+     2156, 2162, 2157, 2153, 2158, 2161, 2162, 2151, 2152, 2163,
+     2164, 2165, 2155, 2165, 2168, 2163, 2171, 2159, 2164, 2169,
+     2169, 2161, 2170, 2172, 2172, 2170, 2174, 2175, 2168, 2176,
+
+     2174, 2177, 2177, 2175, 2178, 2181, 2181, 2183, 2185, 2189,
+     2186, 2176, 2171, 2178, 2189, 2190, 2191, 2199, 2192, 2193,
+     2193, 2191, 2185, 2192, 2197, 2183, 2186, 2195, 2195, 2200,
+     2197, 2198, 2198, 2199, 2201, 2203, 2205, 2204, 2206, 2201,
+     2204, 2190, 2207, 2207, 2209, 2211, 2210, 2212, 2205, 2215,
+     2206, 2200, 2210, 2209, 2203, 2214, 2214, 2216, 2218, 2218,
+     2219, 2219, 2212, 2211, 2220, 2221, 2223, 2222, 2215, 2220,
+     2224, 2223, 2224, 2225, 2226, 2216, 2222, 2227, 2229, 2228,
+     2230, 2231, 2231, 2221, 2228, 2230, 2236, 2225, 2226, 2227,
+     2232, 2232, 2233, 2233, 2234, 2234, 2235, 2237, 2229, 2238,
+
+     2238, 2240, 2237, 2241, 2236, 2239, 2239, 2242, 2235, 2243,
+     2244, 2244, 2245, 2240, 2249, 2241, 2246, 2246, 2247, 2247,
+     2252, 2248, 2250, 2251, 2254, 2243, 2249, 2242, 2253, 2250,
+     2255, 2245, 2248, 2253, 2257, 2251, 2256, 2256, 2258, 2259,
+     2252, 2260, 2261, 2257, 2254, 2268, 2262, 2263, 2263, 2264,
+     2255, 2269, 2265, 2266, 2260, 2270, 2272, 2282, 2264, 2259,
+     2262, 2283, 2271, 2268, 2258, 2271, 2261, 2265, 2266, 2273,
+     2272, 2274, 2283, 2269, 2273, 2282, 2274, 2284, 2270, 2275,
+     2275, 2276, 2276, 2277, 2277, 2279, 2279, 2281, 2281, 2286,
+     2287, 2288, 2289, 2290, 2291, 2292, 2284, 2292, 2293, 2294,
+
+     2299, 2295, 2290, 2296, 2296, 2298, 2298, 2300, 2287, 2286,
+     2301, 2301, 2289, 2288, 2291, 2303, 2300, 2294, 2293, 2295,
+     2304, 2304, 2299, 2305, 2303, 2306, 2307, 2308, 2309, 2310,
+     2312, 2318, 2311, 2307, 2313, 2313, 2314, 2314, 2315, 2316,
+     2317, 2305, 2308, 2306, 2315, 2320, 2309, 2310, 2311, 2312,
+     2318, 2319, 2321, 2322, 2328, 2317, 2319, 2316, 2322, 2323,
+     2330, 2323, 2324, 2324, 2325, 2320, 2325, 2326, 2326, 2330,
+     2331, 2332, 2321, 2328, 2333, 2334, 2335, 2342, 2336, 2339,
+     2334, 2340, 2343, 2332, 2340, 2341, 2341, 2344, 2344, 2331,
+     2345, 2346, 2342, 2349, 2333, 2354, 2335, 2336, 2347, 2339,
+
+     2343, 2345, 2347, 2350, 2351, 2351, 2346, 2350, 2349, 2352,
+     2355, 2356, 2356, 2358, 2359, 2354, 2360, 2361, 2361, 2362,
+     2360, 2367, 2352, 2359, 2364, 2358, 2363, 2363, 2365, 2364,
+     2355, 2366, 2374, 2367, 2368, 2368, 2376, 2365, 2362, 2373,
+     2373, 2375, 2375, 2377, 2378, 2381, 2379, 2366, 2388, 2376,
+     2380, 2380, 2391, 2378, 2374, 2379, 2377, 2383, 2383, 2386,
+     2381, 2387, 2388, 2389, 2386, 2390, 2387, 2392, 2389, 2393,
+     2395, 2391, 2398, 2390, 2396, 2397, 2392, 2393, 2403, 2396,
+     2397, 2399, 2399, 2400, 2400, 2395, 2401, 2398, 2404, 2402,
+     2406, 2405, 2408, 2401, 2402, 2406, 2403, 2405, 2407, 2407,
+
+     2409, 2410, 2410, 2411, 2411, 2409, 2404, 2408, 2414, 2415,
+     2415, 2416, 2417, 2424, 2416, 2418, 2420, 2417, 2417, 2419,
+     2418, 2414, 2420, 2421, 2419, 2422, 2423, 2421, 2424, 2425,
+     2422, 2426, 2427, 2428, 2430, 2423, 2429, 2425, 2427, 2428,
+     2432, 2429, 2435, 2437, 2433, 2432, 2430, 2433, 2437, 2439,
+     2438, 2440, 2426, 2441, 2435, 2438, 2442, 2443, 2443, 2444,
+     2447, 2448, 2441, 2449, 2440, 2442, 2451, 2439, 2444, 2450,
+     2450, 2452, 2453, 2454, 2454, 2455, 2457, 2459, 2462, 2447,
+     2452, 2448, 2449, 2471, 2460, 2451, 2463, 2453, 2460, 2461,
+     2461, 2457, 2463, 2464, 2455, 2465, 2471, 2459, 2467, 2464,
+
+     2470, 2465, 2468, 2462, 2466, 2466, 2467, 2468, 2473, 2470,
+     2474, 2475, 2476, 2474, 2473, 2475, 2477, 2479, 2479, 2480,
+     2480, 2481, 2481, 2483, 2483, 2484, 2476, 2485, 2489, 2484,
+     2490, 2477, 2485, 2487, 2487, 2490, 2492, 2491, 2494, 2495,
+     2495, 2492, 2492, 2497, 2497, 2498, 2498, 2499, 2489, 2491,
+     2499, 2500, 2502, 2504, 2505, 2505, 2506, 2506, 2494, 2507,
+     2507, 2508, 2509, 2509, 2500, 2510, 2511, 2512, 2513, 2519,
+     2502, 2514, 2514, 2504, 2513, 2515, 2508, 2518, 2510, 2515,
+     2520, 2512, 2518, 2518, 2511, 2521, 2524, 2522, 2523, 2526,
+     2526, 2525, 2519, 2522, 2523, 2525, 2529, 2534, 2531, 2532,
+
+     2520, 2529, 2532, 2536, 2535, 2521, 2531, 2535, 2537, 2538,
+     2539, 2524, 2540, 2537, 2541, 2541, 2545, 2542, 2544, 2555,
+     2536, 2536, 2534, 2548, 2555, 2543, 2540, 2538, 2543, 2546,
+     2539, 2542, 2544, 2547, 2556, 2545, 2543, 2546, 2547, 2547,
+     2549, 2549, 2548, 2550, 2550, 2551, 2551, 2552, 2552, 2553,
+     2553, 2554, 2557, 2558, 2556, 2559, 2560, 2562, 2562, 2564,
+     2563, 2567, 2558, 2563, 2566, 2566, 2569, 2554, 2567, 2568,
+     2568, 2569, 2571, 2571, 2572, 2559, 2560, 2564, 2557, 2573,
+     2574, 2576, 2578, 2572, 2577, 2577, 2578, 2579, 2573, 2574,
+     2580, 2581, 2582, 2584, 2585, 2583, 2579, 2590, 2590, 2576,
+
+     2583, 2583, 2581, 2585, 2593, 2589, 2584, 2582, 2594, 2580,
+     2589, 2592, 2592, 2595, 2597, 2598, 2601, 2602, 2593, 2603,
+     2606, 2608, 2604, 2597, 2610, 2611, 2602, 2598, 2604, 2610,
+     2611, 2595, 2606, 2594, 2612, 2612, 2613, 2622, 2615, 2603,
+     2623, 2601, 2608, 2615,    0, 2613, 2616, 2616, 2618, 2618,
+     2616, 2619, 2619, 2620, 2620, 2621, 2624, 2622, 2627, 2623,
+     2626, 2624, 2628, 2627, 2621, 2630, 2626, 2628, 2629, 2629,
+     2631, 2632, 2633, 2634, 2635, 2642, 2632, 2636, 2636, 2634,
+     2638, 2639, 2640, 2630, 2638, 2643, 2639, 2640, 2641, 2641,
+     2633, 2631, 2644, 2648, 2642, 2646, 2646, 2649, 2650, 2635,
+
+     2643, 2652, 2650, 2653, 2651, 2656, 2648, 2654, 2658, 2655,
+     2649, 2663, 2644, 2651, 2655, 2654, 2673, 2652, 2657, 2657,
+     2660, 2660, 2653, 2661, 2661, 2665, 2665, 2658, 2667, 2668,
+     2669, 2656, 2663, 2670, 2672, 2672, 2673, 2675, 2670, 2674,
+     2676, 2677, 2680, 2675, 2667, 2668, 2669, 2684, 2674, 2679,
+     2679, 2681, 2681, 2685, 2687, 2690, 2680, 2686, 2694, 2685,
+     2677, 2692, 2686, 2676, 2688, 2688, 2696, 2684, 2689, 2689,
+     2691, 2691, 2692, 2693, 2695, 2690, 2687, 2697, 2694, 2698,
+     2695, 2705, 2693, 2699, 2699, 2696, 2701, 2701, 2700, 2697,
+     2691, 2700, 2706, 2705, 2707, 2708, 2708, 2710, 2709, 2698,
+
+     2707, 2709, 2711, 2710, 2713, 2714, 2715, 2716, 2721, 2713,
+     2714, 2717, 2706, 2716, 2718, 2718, 2722, 2725, 2720, 2723,
+     2711, 2724, 2724,    0, 2726, 2715, 2721, 2741, 2717, 2717,
+     2720, 2731, 2723, 2726, 2728, 2728, 2725, 2729, 2729, 2730,
+     2743, 2722, 2732, 2744, 2730, 2731, 2741, 2732, 2733, 2733,
+     2734, 2734, 2735, 2735, 2736, 2738, 2738, 2745, 2749, 2736,
+     2746, 2746, 2743, 2748, 2748, 2744, 2750, 2751, 2752, 2753,
+     2754, 2754, 2757, 2884, 2756, 2758, 2884, 2759, 2753, 2745,
+     2756, 2751, 2759, 2766, 2749, 2750, 2762, 2762, 2752, 2764,
+     2764, 2765, 2757, 2767, 2758, 2768, 2765, 2766, 2769, 2767,
+
+     2770, 2770, 2773, 2771, 2774, 2775, 2769, 2768, 2771, 2776,
+     2775, 2777, 2779, 2780, 2781, 2782, 2786, 2777, 2783,    0,
+     2779, 2776, 2773, 2784, 2774, 2785, 2787, 2790, 2789, 2794,
+     2815, 2787, 2780, 2789, 2781, 2782, 2783, 2786, 2791, 2784,
+     2792, 2795, 2785, 2785, 2791, 2792, 2870, 2790, 2815, 2794,
+     2798, 2798, 2799, 2799, 2795, 2800, 2804, 2804, 2870, 2800,
+     2806, 2806, 2807, 2807, 2810, 2807, 2808, 2808, 2810, 2808,
+     2809, 2809, 2812, 2809, 2813, 2814, 2814, 2812, 2816, 2818,
+     2819, 2820, 2824, 2813, 2821, 2821, 2820, 2825, 2827, 2826,
+     2828, 2830, 2816, 2826, 2825, 2831, 2928, 2827, 2928, 2818,
+
+     2819, 2832, 2832, 2835, 2831, 2828, 2840, 2824, 2837, 2830,
+     2833, 2833, 2834, 2834, 2836, 2841, 2838, 2837, 2835, 2836,
+     2837, 2838, 2838, 2839, 2842, 2845,    0, 2843, 2844, 2839,
+     2841, 2840, 2843, 2844, 2846, 2846, 2847, 2848, 2849, 2849,
+     2850, 2850, 2847, 2848, 2845, 2842, 2851, 2854, 2854, 2857,
+     2857, 2851, 2858, 2858, 2859, 2859, 2860, 2860, 2861, 2861,
+     2862, 2862, 2863, 2863, 2864, 2864, 2865, 2867, 2868, 2868,
+     2869, 2871, 2874, 2874, 2873, 2875, 2867, 2877, 2883, 2869,
+     2879, 2876, 2878, 2878, 2880, 2880, 2885, 2886, 2886, 2877,
+     2875, 2871, 2865, 2873, 2876, 2879, 2883, 2887, 2889, 2890,
+
+     2891, 2889, 2892, 2893, 2895, 2890, 2894, 2892, 2898,    0,
+     2897, 2901, 2885, 2911, 2891, 2887, 2897, 2898, 2911, 2914,
+     2895, 2919, 2893, 2921, 2894, 2912, 2901, 2921, 2912, 2915,
+     2915, 2920, 2914, 2916, 2916, 2917, 2917, 2922, 2923, 2925,
+     2920, 2927, 2926, 2929, 2919, 2932, 2927, 2930, 2930, 2933,
+     2931, 2935, 2923, 2926, 2934, 2941, 2936, 2922, 2929, 2937,
+     2938, 2939, 2925, 2931, 2932, 2940, 2940, 2933, 2937, 2942,
+     2934, 2936, 2938, 2946, 2942, 2941, 2935, 2947, 2948, 2948,
+     2949, 2954, 2939, 2950, 2950, 2951, 2951, 2946, 2955, 2949,
+     2952, 2952, 2953, 2953, 2957, 2956, 2958, 2947, 2956, 2957,
+
+     2954, 2958, 2959, 2960, 2961, 2962, 2964, 2968, 2955, 2963,
+     2961, 2964, 2965, 2967, 2967, 2969, 2970, 2970, 2960, 2962,
+     2972, 2963, 2968, 2974, 2977, 2977, 2980, 2959, 2978, 2978,
+     2979, 2981, 2965, 2982, 2969, 2972, 2983, 2981, 2979, 2982,
+     2984, 2974, 2985, 2986, 2990, 2980, 2987, 2987, 2986, 2991,
+     2983, 2988, 2988, 2984, 2993, 2994, 2996, 2997, 2998, 2994,
+     2999, 2985, 2997, 3001, 3007, 2990, 3000, 3002, 2993, 2991,
+     3003, 3008, 3002, 2999, 3009, 3003, 2996, 2998, 3011, 3000,
+     3004, 3004, 3001, 3011, 3007, 3010, 3010, 3014, 3012, 3008,
+     3013, 3013, 3014, 3009, 3012, 3015, 3016, 3017, 3018, 3025,
+
+     3015, 3016, 3020, 3020, 3018, 3021, 3022, 3022, 3024, 3027,
+     3021, 3028, 3024, 3026, 3030, 3029, 3017, 3036, 3025, 3031,
+     3026, 3029, 3033, 3033, 3035, 3035, 3036, 3038, 3027, 3036,
+     3028, 3037, 3031, 3030, 3039, 3040, 3037, 3041, 3041, 3042,
+     3045, 3043, 3046, 3046, 3042, 3047, 3038,    0, 3040, 3048,
+     3048, 3049, 3049, 3039, 3043, 3050, 3051, 3052, 3053, 3053,
+     3050,    0, 3054, 3051, 3047, 3059, 3045, 3054, 3055, 3061,
+     3055, 3056, 3056, 3057, 3058, 3064, 3052, 3060, 3063, 3063,
+     3057, 3058, 3060, 3068, 3059, 3066, 3067, 3069, 3061, 3073,
+     3066, 3067, 3070, 3070, 3064, 3072, 3072, 3074, 3075, 3075,
+
+     3076, 3076, 3068, 3077, 3079, 3079, 3069, 3081, 3073, 3087,
+     3077, 3080, 3080, 3083, 3081, 3086, 3074, 3088, 3083,    0,
+     3086, 3089, 3089, 3090, 3090,    0,    0,    0, 3087,    0,
+        0,    0,    0,    0,    0,    0, 3088, 3094, 3094, 3094,
+     3094, 3094, 3094, 3094, 3095, 3095, 3095, 3095, 3095, 3095,
+     3095, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3097, 3097,
+     3097, 3097, 3097, 3097, 3097, 3098, 3098, 3098, 3098, 3098,
+     3098, 3098, 3100, 3100,    0, 3100, 3100, 3100, 3100, 3101,
+     3101,    0,    0,    0, 3101, 3101, 3102, 3102,    0,    0,
+     3102,    0, 3102, 3103,    0,    0,    0,    0,    0, 3103,
+
+     3104, 3104,    0,    0,    0, 3104, 3104, 3105,    0,    0,
+        0,    0,    0, 3105, 3106, 3106,    0, 3106, 3106, 3106,
+     3106, 3107, 3107,    0, 3107, 3107, 3107, 3107, 3093, 3093,
+     3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093,
+     3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093,
+     3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093,
+     3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2942,7 +2978,7 @@ static void config_end_include(void)
         }
 #endif
 
-#line 2943 "<stdout>"
+#line 2980 "<stdout>"
 #define YY_NO_INPUT 1
 #line 184 "./util/configlexer.lex"
 #ifndef YY_NO_UNPUT
@@ -2951,9 +2987,9 @@ static void config_end_include(void)
 #ifndef YY_NO_INPUT
 #define YY_NO_INPUT 1
 #endif
-#line 2952 "<stdout>"
+#line 2989 "<stdout>"
 
-#line 2954 "<stdout>"
+#line 2991 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -3175,7 +3211,7 @@ YY_DECL
        {
 #line 204 "./util/configlexer.lex"
 
-#line 3176 "<stdout>"
+#line 3213 "<stdout>"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -3208,13 +3244,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 >= 3049 )
+                               if ( yy_current_state >= 3094 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 5940 );
+               while ( yy_base[yy_current_state] != 6029 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -4615,123 +4651,143 @@ YY_RULE_SETUP
 case 273:
 YY_RULE_SETUP
 #line 491 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
+{ YDVAR(1, VAR_PAD_RESPONSES) }
        YY_BREAK
 case 274:
 YY_RULE_SETUP
 #line 492 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
+{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) }
        YY_BREAK
 case 275:
 YY_RULE_SETUP
 #line 493 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_HOOK) }
+{ YDVAR(1, VAR_PAD_QUERIES) }
        YY_BREAK
 case 276:
 YY_RULE_SETUP
 #line 494 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
+{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) }
        YY_BREAK
 case 277:
 YY_RULE_SETUP
 #line 495 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
+{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
        YY_BREAK
 case 278:
 YY_RULE_SETUP
 #line 496 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_STRICT) }
+{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
        YY_BREAK
 case 279:
 YY_RULE_SETUP
 #line 497 "./util/configlexer.lex"
-{ YDVAR(0, VAR_CACHEDB) }
+{ YDVAR(1, VAR_IPSECMOD_HOOK) }
        YY_BREAK
 case 280:
 YY_RULE_SETUP
 #line 498 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_BACKEND) }
+{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
        YY_BREAK
 case 281:
 YY_RULE_SETUP
 #line 499 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_SECRETSEED) }
+{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
        YY_BREAK
 case 282:
 YY_RULE_SETUP
 #line 500 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISHOST) }
+{ YDVAR(1, VAR_IPSECMOD_STRICT) }
        YY_BREAK
 case 283:
 YY_RULE_SETUP
 #line 501 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISPORT) }
+{ YDVAR(0, VAR_CACHEDB) }
        YY_BREAK
 case 284:
 YY_RULE_SETUP
 #line 502 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) }
+{ YDVAR(1, VAR_CACHEDB_BACKEND) }
        YY_BREAK
 case 285:
 YY_RULE_SETUP
 #line 503 "./util/configlexer.lex"
-{ YDVAR(0, VAR_IPSET) }
+{ YDVAR(1, VAR_CACHEDB_SECRETSEED) }
        YY_BREAK
 case 286:
 YY_RULE_SETUP
 #line 504 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSET_NAME_V4) }
+{ YDVAR(1, VAR_CACHEDB_REDISHOST) }
        YY_BREAK
 case 287:
 YY_RULE_SETUP
 #line 505 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSET_NAME_V6) }
+{ YDVAR(1, VAR_CACHEDB_REDISPORT) }
        YY_BREAK
 case 288:
 YY_RULE_SETUP
 #line 506 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
+{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) }
        YY_BREAK
 case 289:
 YY_RULE_SETUP
 #line 507 "./util/configlexer.lex"
-{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
+{ YDVAR(0, VAR_IPSET) }
        YY_BREAK
 case 290:
-/* rule 290 can match eol */
 YY_RULE_SETUP
 #line 508 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++; }
+{ YDVAR(1, VAR_IPSET_NAME_V4) }
        YY_BREAK
-/* Quoted strings. Strip leading and ending quotes */
 case 291:
 YY_RULE_SETUP
+#line 509 "./util/configlexer.lex"
+{ YDVAR(1, VAR_IPSET_NAME_V6) }
+       YY_BREAK
+case 292:
+YY_RULE_SETUP
+#line 510 "./util/configlexer.lex"
+{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
+       YY_BREAK
+case 293:
+YY_RULE_SETUP
 #line 511 "./util/configlexer.lex"
+{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
+       YY_BREAK
+case 294:
+/* rule 294 can match eol */
+YY_RULE_SETUP
+#line 512 "./util/configlexer.lex"
+{ LEXOUT(("NL\n")); cfg_parser->line++; }
+       YY_BREAK
+/* Quoted strings. Strip leading and ending quotes */
+case 295:
+YY_RULE_SETUP
+#line 515 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 512 "./util/configlexer.lex"
+#line 516 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 292:
+case 296:
 YY_RULE_SETUP
-#line 517 "./util/configlexer.lex"
+#line 521 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 293:
-/* rule 293 can match eol */
+case 297:
+/* rule 297 can match eol */
 YY_RULE_SETUP
-#line 518 "./util/configlexer.lex"
+#line 522 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 294:
+case 298:
 YY_RULE_SETUP
-#line 520 "./util/configlexer.lex"
+#line 524 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -4744,34 +4800,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 295:
+case 299:
 YY_RULE_SETUP
-#line 532 "./util/configlexer.lex"
+#line 536 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 533 "./util/configlexer.lex"
+#line 537 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 296:
+case 300:
 YY_RULE_SETUP
-#line 538 "./util/configlexer.lex"
+#line 542 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 297:
-/* rule 297 can match eol */
+case 301:
+/* rule 301 can match eol */
 YY_RULE_SETUP
-#line 539 "./util/configlexer.lex"
+#line 543 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 298:
+case 302:
 YY_RULE_SETUP
-#line 541 "./util/configlexer.lex"
+#line 545 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -4784,38 +4840,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 299:
+case 303:
 YY_RULE_SETUP
-#line 553 "./util/configlexer.lex"
+#line 557 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 555 "./util/configlexer.lex"
+#line 559 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 300:
+case 304:
 YY_RULE_SETUP
-#line 559 "./util/configlexer.lex"
+#line 563 "./util/configlexer.lex"
 { LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
-case 301:
-/* rule 301 can match eol */
+case 305:
+/* rule 305 can match eol */
 YY_RULE_SETUP
-#line 560 "./util/configlexer.lex"
+#line 564 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
-case 302:
+case 306:
 YY_RULE_SETUP
-#line 561 "./util/configlexer.lex"
+#line 565 "./util/configlexer.lex"
 { LEXOUT(("IQS ")); BEGIN(include_quoted); }
        YY_BREAK
-case 303:
+case 307:
 YY_RULE_SETUP
-#line 562 "./util/configlexer.lex"
+#line 566 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext);
@@ -4823,27 +4879,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 567 "./util/configlexer.lex"
+#line 571 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 304:
+case 308:
 YY_RULE_SETUP
-#line 571 "./util/configlexer.lex"
+#line 575 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 305:
-/* rule 305 can match eol */
+case 309:
+/* rule 309 can match eol */
 YY_RULE_SETUP
-#line 572 "./util/configlexer.lex"
+#line 576 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 306:
+case 310:
 YY_RULE_SETUP
-#line 574 "./util/configlexer.lex"
+#line 578 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -4853,7 +4909,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 580 "./util/configlexer.lex"
+#line 584 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -4865,33 +4921,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 307:
+case 311:
 YY_RULE_SETUP
-#line 591 "./util/configlexer.lex"
+#line 595 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 308:
+case 312:
 YY_RULE_SETUP
-#line 595 "./util/configlexer.lex"
+#line 599 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 309:
+case 313:
 YY_RULE_SETUP
-#line 599 "./util/configlexer.lex"
+#line 603 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 310:
+case 314:
 YY_RULE_SETUP
-#line 603 "./util/configlexer.lex"
+#line 607 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 4892 "<stdout>"
+#line 4949 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -5186,7 +5242,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 >= 3049 )
+                       if ( yy_current_state >= 3094 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5214,11 +5270,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 >= 3049 )
+               if ( yy_current_state >= 3094 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 3048);
+       yy_is_jam = (yy_current_state == 3093);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5857,6 +5913,6 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 603 "./util/configlexer.lex"
+#line 607 "./util/configlexer.lex"
 
 
index e4baf13f9c1ff8887867ff52d94dd4ab8e88ae3b..5200a5f2fa2c7389492f9790bbf481988329e5c5 100644 (file)
@@ -488,6 +488,10 @@ dnscrypt-shared-secret-cache-slabs{COLON}  {
                YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) }
 dnscrypt-nonce-cache-size{COLON}       { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) }
 dnscrypt-nonce-cache-slabs{COLON}      { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) }
+pad-responses{COLON}           { YDVAR(1, VAR_PAD_RESPONSES) }
+pad-responses-block-size{COLON}        { YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) }
+pad-queries{COLON}             { YDVAR(1, VAR_PAD_QUERIES) }
+pad-queries-block-size{COLON}  { YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) }
 ipsecmod-enabled{COLON}                { YDVAR(1, VAR_IPSECMOD_ENABLED) }
 ipsecmod-ignore-bogus{COLON}   { YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
 ipsecmod-hook{COLON}           { YDVAR(1, VAR_IPSECMOD_HOOK) }
index 657f9957920be2b9f7030df59babfea3b20c0b40..6f3e29eeaf8bdbfba4e79bdf68ca0d394aed8a5f 100644 (file)
@@ -1,73 +1,23 @@
-/* A Bison parser, made by GNU Bison 3.4.1.  */
+/* original parser id follows */
+/* yysccsid[] = "@(#)yaccpar   1.9 (Berkeley) 02/21/93" */
+/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+#define YYPATCH 20140715
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar = YYEMPTY)
+#define yyerrok        (yyerrflag = 0)
+#define YYRECOVERING() (yyerrflag != 0)
+#define YYENOMEM       (-2)
+#define YYEOF          0
+#define YYPREFIX "yy"
 
-/* Bison implementation for Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 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
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
-
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
-
-/* C LALR(1) parser skeleton written by Richard Stallman, by
-   simplifying the original so-called "semantic" parser.  */
-
-/* All symbols defined below should begin with yy or YY, to avoid
-   infringing on user name space.  This should be done even for local
-   variables, as they might otherwise be expanded by user macros.
-   There are some unavoidable exceptions within include files to
-   define necessary library symbols; they are noted "INFRINGES ON
-   USER NAME SPACE" below.  */
-
-/* Undocumented macros, especially those whose name start with YY_,
-   are private implementation details.  Do not rely on them.  */
-
-/* Identify Bison output.  */
-#define YYBISON 1
-
-/* Bison version.  */
-#define YYBISON_VERSION "3.4.1"
-
-/* Skeleton name.  */
-#define YYSKELETON_NAME "yacc.c"
-
-/* Pure parsers.  */
 #define YYPURE 0
 
-/* Push parsers.  */
-#define YYPUSH 0
-
-/* Pull parsers.  */
-#define YYPULL 1
-
-
-
-
-/* First part of user prologue.  */
-#line 38 "./util/configparser.y"
-
+#line 39 "./util/configparser.y"
 #include "config.h"
 
 #include <stdarg.h>
@@ -94,2620 +44,1982 @@ extern struct config_parser_state* cfg_parser;
 #define OUTYY(s)
 #endif
 
-
-#line 99 "util/configparser.c"
-
-# ifndef YY_NULLPTR
-#  if defined __cplusplus
-#   if 201103L <= __cplusplus
-#    define YY_NULLPTR nullptr
-#   else
-#    define YY_NULLPTR 0
-#   endif
-#  else
-#   define YY_NULLPTR ((void*)0)
-#  endif
-# endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Use api.header.include to #include this header
-   instead of duplicating it here.  */
-#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
-# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token type.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-  enum yytokentype
-  {
-    SPACE = 258,
-    LETTER = 259,
-    NEWLINE = 260,
-    COMMENT = 261,
-    COLON = 262,
-    ANY = 263,
-    ZONESTR = 264,
-    STRING_ARG = 265,
-    VAR_SERVER = 266,
-    VAR_VERBOSITY = 267,
-    VAR_NUM_THREADS = 268,
-    VAR_PORT = 269,
-    VAR_OUTGOING_RANGE = 270,
-    VAR_INTERFACE = 271,
-    VAR_PREFER_IP4 = 272,
-    VAR_DO_IP4 = 273,
-    VAR_DO_IP6 = 274,
-    VAR_PREFER_IP6 = 275,
-    VAR_DO_UDP = 276,
-    VAR_DO_TCP = 277,
-    VAR_TCP_MSS = 278,
-    VAR_OUTGOING_TCP_MSS = 279,
-    VAR_TCP_IDLE_TIMEOUT = 280,
-    VAR_EDNS_TCP_KEEPALIVE = 281,
-    VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 282,
-    VAR_CHROOT = 283,
-    VAR_USERNAME = 284,
-    VAR_DIRECTORY = 285,
-    VAR_LOGFILE = 286,
-    VAR_PIDFILE = 287,
-    VAR_MSG_CACHE_SIZE = 288,
-    VAR_MSG_CACHE_SLABS = 289,
-    VAR_NUM_QUERIES_PER_THREAD = 290,
-    VAR_RRSET_CACHE_SIZE = 291,
-    VAR_RRSET_CACHE_SLABS = 292,
-    VAR_OUTGOING_NUM_TCP = 293,
-    VAR_INFRA_HOST_TTL = 294,
-    VAR_INFRA_LAME_TTL = 295,
-    VAR_INFRA_CACHE_SLABS = 296,
-    VAR_INFRA_CACHE_NUMHOSTS = 297,
-    VAR_INFRA_CACHE_LAME_SIZE = 298,
-    VAR_NAME = 299,
-    VAR_STUB_ZONE = 300,
-    VAR_STUB_HOST = 301,
-    VAR_STUB_ADDR = 302,
-    VAR_TARGET_FETCH_POLICY = 303,
-    VAR_HARDEN_SHORT_BUFSIZE = 304,
-    VAR_HARDEN_LARGE_QUERIES = 305,
-    VAR_FORWARD_ZONE = 306,
-    VAR_FORWARD_HOST = 307,
-    VAR_FORWARD_ADDR = 308,
-    VAR_DO_NOT_QUERY_ADDRESS = 309,
-    VAR_HIDE_IDENTITY = 310,
-    VAR_HIDE_VERSION = 311,
-    VAR_IDENTITY = 312,
-    VAR_VERSION = 313,
-    VAR_HARDEN_GLUE = 314,
-    VAR_MODULE_CONF = 315,
-    VAR_TRUST_ANCHOR_FILE = 316,
-    VAR_TRUST_ANCHOR = 317,
-    VAR_VAL_OVERRIDE_DATE = 318,
-    VAR_BOGUS_TTL = 319,
-    VAR_VAL_CLEAN_ADDITIONAL = 320,
-    VAR_VAL_PERMISSIVE_MODE = 321,
-    VAR_INCOMING_NUM_TCP = 322,
-    VAR_MSG_BUFFER_SIZE = 323,
-    VAR_KEY_CACHE_SIZE = 324,
-    VAR_KEY_CACHE_SLABS = 325,
-    VAR_TRUSTED_KEYS_FILE = 326,
-    VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 327,
-    VAR_USE_SYSLOG = 328,
-    VAR_OUTGOING_INTERFACE = 329,
-    VAR_ROOT_HINTS = 330,
-    VAR_DO_NOT_QUERY_LOCALHOST = 331,
-    VAR_CACHE_MAX_TTL = 332,
-    VAR_HARDEN_DNSSEC_STRIPPED = 333,
-    VAR_ACCESS_CONTROL = 334,
-    VAR_LOCAL_ZONE = 335,
-    VAR_LOCAL_DATA = 336,
-    VAR_INTERFACE_AUTOMATIC = 337,
-    VAR_STATISTICS_INTERVAL = 338,
-    VAR_DO_DAEMONIZE = 339,
-    VAR_USE_CAPS_FOR_ID = 340,
-    VAR_STATISTICS_CUMULATIVE = 341,
-    VAR_OUTGOING_PORT_PERMIT = 342,
-    VAR_OUTGOING_PORT_AVOID = 343,
-    VAR_DLV_ANCHOR_FILE = 344,
-    VAR_DLV_ANCHOR = 345,
-    VAR_NEG_CACHE_SIZE = 346,
-    VAR_HARDEN_REFERRAL_PATH = 347,
-    VAR_PRIVATE_ADDRESS = 348,
-    VAR_PRIVATE_DOMAIN = 349,
-    VAR_REMOTE_CONTROL = 350,
-    VAR_CONTROL_ENABLE = 351,
-    VAR_CONTROL_INTERFACE = 352,
-    VAR_CONTROL_PORT = 353,
-    VAR_SERVER_KEY_FILE = 354,
-    VAR_SERVER_CERT_FILE = 355,
-    VAR_CONTROL_KEY_FILE = 356,
-    VAR_CONTROL_CERT_FILE = 357,
-    VAR_CONTROL_USE_CERT = 358,
-    VAR_EXTENDED_STATISTICS = 359,
-    VAR_LOCAL_DATA_PTR = 360,
-    VAR_JOSTLE_TIMEOUT = 361,
-    VAR_STUB_PRIME = 362,
-    VAR_UNWANTED_REPLY_THRESHOLD = 363,
-    VAR_LOG_TIME_ASCII = 364,
-    VAR_DOMAIN_INSECURE = 365,
-    VAR_PYTHON = 366,
-    VAR_PYTHON_SCRIPT = 367,
-    VAR_VAL_SIG_SKEW_MIN = 368,
-    VAR_VAL_SIG_SKEW_MAX = 369,
-    VAR_CACHE_MIN_TTL = 370,
-    VAR_VAL_LOG_LEVEL = 371,
-    VAR_AUTO_TRUST_ANCHOR_FILE = 372,
-    VAR_KEEP_MISSING = 373,
-    VAR_ADD_HOLDDOWN = 374,
-    VAR_DEL_HOLDDOWN = 375,
-    VAR_SO_RCVBUF = 376,
-    VAR_EDNS_BUFFER_SIZE = 377,
-    VAR_PREFETCH = 378,
-    VAR_PREFETCH_KEY = 379,
-    VAR_SO_SNDBUF = 380,
-    VAR_SO_REUSEPORT = 381,
-    VAR_HARDEN_BELOW_NXDOMAIN = 382,
-    VAR_IGNORE_CD_FLAG = 383,
-    VAR_LOG_QUERIES = 384,
-    VAR_LOG_REPLIES = 385,
-    VAR_LOG_LOCAL_ACTIONS = 386,
-    VAR_TCP_UPSTREAM = 387,
-    VAR_SSL_UPSTREAM = 388,
-    VAR_SSL_SERVICE_KEY = 389,
-    VAR_SSL_SERVICE_PEM = 390,
-    VAR_SSL_PORT = 391,
-    VAR_FORWARD_FIRST = 392,
-    VAR_STUB_SSL_UPSTREAM = 393,
-    VAR_FORWARD_SSL_UPSTREAM = 394,
-    VAR_TLS_CERT_BUNDLE = 395,
-    VAR_STUB_FIRST = 396,
-    VAR_MINIMAL_RESPONSES = 397,
-    VAR_RRSET_ROUNDROBIN = 398,
-    VAR_MAX_UDP_SIZE = 399,
-    VAR_DELAY_CLOSE = 400,
-    VAR_UNBLOCK_LAN_ZONES = 401,
-    VAR_INSECURE_LAN_ZONES = 402,
-    VAR_INFRA_CACHE_MIN_RTT = 403,
-    VAR_DNS64_PREFIX = 404,
-    VAR_DNS64_SYNTHALL = 405,
-    VAR_DNS64_IGNORE_AAAA = 406,
-    VAR_DNSTAP = 407,
-    VAR_DNSTAP_ENABLE = 408,
-    VAR_DNSTAP_SOCKET_PATH = 409,
-    VAR_DNSTAP_IP = 410,
-    VAR_DNSTAP_TLS = 411,
-    VAR_DNSTAP_TLS_SERVER_NAME = 412,
-    VAR_DNSTAP_TLS_CERT_BUNDLE = 413,
-    VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414,
-    VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415,
-    VAR_DNSTAP_SEND_IDENTITY = 416,
-    VAR_DNSTAP_SEND_VERSION = 417,
-    VAR_DNSTAP_IDENTITY = 418,
-    VAR_DNSTAP_VERSION = 419,
-    VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420,
-    VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421,
-    VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422,
-    VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423,
-    VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424,
-    VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425,
-    VAR_RESPONSE_IP_TAG = 426,
-    VAR_RESPONSE_IP = 427,
-    VAR_RESPONSE_IP_DATA = 428,
-    VAR_HARDEN_ALGO_DOWNGRADE = 429,
-    VAR_IP_TRANSPARENT = 430,
-    VAR_IP_DSCP = 431,
-    VAR_DISABLE_DNSSEC_LAME_CHECK = 432,
-    VAR_IP_RATELIMIT = 433,
-    VAR_IP_RATELIMIT_SLABS = 434,
-    VAR_IP_RATELIMIT_SIZE = 435,
-    VAR_RATELIMIT = 436,
-    VAR_RATELIMIT_SLABS = 437,
-    VAR_RATELIMIT_SIZE = 438,
-    VAR_RATELIMIT_FOR_DOMAIN = 439,
-    VAR_RATELIMIT_BELOW_DOMAIN = 440,
-    VAR_IP_RATELIMIT_FACTOR = 441,
-    VAR_RATELIMIT_FACTOR = 442,
-    VAR_SEND_CLIENT_SUBNET = 443,
-    VAR_CLIENT_SUBNET_ZONE = 444,
-    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445,
-    VAR_CLIENT_SUBNET_OPCODE = 446,
-    VAR_MAX_CLIENT_SUBNET_IPV4 = 447,
-    VAR_MAX_CLIENT_SUBNET_IPV6 = 448,
-    VAR_MIN_CLIENT_SUBNET_IPV4 = 449,
-    VAR_MIN_CLIENT_SUBNET_IPV6 = 450,
-    VAR_MAX_ECS_TREE_SIZE_IPV4 = 451,
-    VAR_MAX_ECS_TREE_SIZE_IPV6 = 452,
-    VAR_CAPS_WHITELIST = 453,
-    VAR_CACHE_MAX_NEGATIVE_TTL = 454,
-    VAR_PERMIT_SMALL_HOLDDOWN = 455,
-    VAR_QNAME_MINIMISATION = 456,
-    VAR_QNAME_MINIMISATION_STRICT = 457,
-    VAR_IP_FREEBIND = 458,
-    VAR_DEFINE_TAG = 459,
-    VAR_LOCAL_ZONE_TAG = 460,
-    VAR_ACCESS_CONTROL_TAG = 461,
-    VAR_LOCAL_ZONE_OVERRIDE = 462,
-    VAR_ACCESS_CONTROL_TAG_ACTION = 463,
-    VAR_ACCESS_CONTROL_TAG_DATA = 464,
-    VAR_VIEW = 465,
-    VAR_ACCESS_CONTROL_VIEW = 466,
-    VAR_VIEW_FIRST = 467,
-    VAR_SERVE_EXPIRED = 468,
-    VAR_SERVE_EXPIRED_TTL = 469,
-    VAR_SERVE_EXPIRED_TTL_RESET = 470,
-    VAR_SERVE_EXPIRED_REPLY_TTL = 471,
-    VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472,
-    VAR_FAKE_DSA = 473,
-    VAR_FAKE_SHA1 = 474,
-    VAR_LOG_IDENTITY = 475,
-    VAR_HIDE_TRUSTANCHOR = 476,
-    VAR_TRUST_ANCHOR_SIGNALING = 477,
-    VAR_AGGRESSIVE_NSEC = 478,
-    VAR_USE_SYSTEMD = 479,
-    VAR_SHM_ENABLE = 480,
-    VAR_SHM_KEY = 481,
-    VAR_ROOT_KEY_SENTINEL = 482,
-    VAR_DNSCRYPT = 483,
-    VAR_DNSCRYPT_ENABLE = 484,
-    VAR_DNSCRYPT_PORT = 485,
-    VAR_DNSCRYPT_PROVIDER = 486,
-    VAR_DNSCRYPT_SECRET_KEY = 487,
-    VAR_DNSCRYPT_PROVIDER_CERT = 488,
-    VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489,
-    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490,
-    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491,
-    VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492,
-    VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493,
-    VAR_IPSECMOD_ENABLED = 494,
-    VAR_IPSECMOD_HOOK = 495,
-    VAR_IPSECMOD_IGNORE_BOGUS = 496,
-    VAR_IPSECMOD_MAX_TTL = 497,
-    VAR_IPSECMOD_WHITELIST = 498,
-    VAR_IPSECMOD_STRICT = 499,
-    VAR_CACHEDB = 500,
-    VAR_CACHEDB_BACKEND = 501,
-    VAR_CACHEDB_SECRETSEED = 502,
-    VAR_CACHEDB_REDISHOST = 503,
-    VAR_CACHEDB_REDISPORT = 504,
-    VAR_CACHEDB_REDISTIMEOUT = 505,
-    VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 506,
-    VAR_FOR_UPSTREAM = 507,
-    VAR_AUTH_ZONE = 508,
-    VAR_ZONEFILE = 509,
-    VAR_MASTER = 510,
-    VAR_URL = 511,
-    VAR_FOR_DOWNSTREAM = 512,
-    VAR_FALLBACK_ENABLED = 513,
-    VAR_TLS_ADDITIONAL_PORT = 514,
-    VAR_LOW_RTT = 515,
-    VAR_LOW_RTT_PERMIL = 516,
-    VAR_FAST_SERVER_PERMIL = 517,
-    VAR_FAST_SERVER_NUM = 518,
-    VAR_ALLOW_NOTIFY = 519,
-    VAR_TLS_WIN_CERT = 520,
-    VAR_TCP_CONNECTION_LIMIT = 521,
-    VAR_FORWARD_NO_CACHE = 522,
-    VAR_STUB_NO_CACHE = 523,
-    VAR_LOG_SERVFAIL = 524,
-    VAR_DENY_ANY = 525,
-    VAR_UNKNOWN_SERVER_TIME_LIMIT = 526,
-    VAR_LOG_TAG_QUERYREPLY = 527,
-    VAR_STREAM_WAIT_SIZE = 528,
-    VAR_TLS_CIPHERS = 529,
-    VAR_TLS_CIPHERSUITES = 530,
-    VAR_IPSET = 531,
-    VAR_IPSET_NAME_V4 = 532,
-    VAR_IPSET_NAME_V6 = 533,
-    VAR_TLS_SESSION_TICKET_KEYS = 534,
-    VAR_RPZ = 535,
-    VAR_TAGS = 536,
-    VAR_RPZ_ACTION_OVERRIDE = 537,
-    VAR_RPZ_CNAME_OVERRIDE = 538,
-    VAR_RPZ_LOG = 539,
-    VAR_RPZ_LOG_NAME = 540
-  };
-#endif
-/* Tokens.  */
-#define SPACE 258
-#define LETTER 259
-#define NEWLINE 260
-#define COMMENT 261
-#define COLON 262
-#define ANY 263
-#define ZONESTR 264
-#define STRING_ARG 265
-#define VAR_SERVER 266
-#define VAR_VERBOSITY 267
-#define VAR_NUM_THREADS 268
-#define VAR_PORT 269
-#define VAR_OUTGOING_RANGE 270
-#define VAR_INTERFACE 271
-#define VAR_PREFER_IP4 272
-#define VAR_DO_IP4 273
-#define VAR_DO_IP6 274
-#define VAR_PREFER_IP6 275
-#define VAR_DO_UDP 276
-#define VAR_DO_TCP 277
-#define VAR_TCP_MSS 278
-#define VAR_OUTGOING_TCP_MSS 279
-#define VAR_TCP_IDLE_TIMEOUT 280
-#define VAR_EDNS_TCP_KEEPALIVE 281
-#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 282
-#define VAR_CHROOT 283
-#define VAR_USERNAME 284
-#define VAR_DIRECTORY 285
-#define VAR_LOGFILE 286
-#define VAR_PIDFILE 287
-#define VAR_MSG_CACHE_SIZE 288
-#define VAR_MSG_CACHE_SLABS 289
-#define VAR_NUM_QUERIES_PER_THREAD 290
-#define VAR_RRSET_CACHE_SIZE 291
-#define VAR_RRSET_CACHE_SLABS 292
-#define VAR_OUTGOING_NUM_TCP 293
-#define VAR_INFRA_HOST_TTL 294
-#define VAR_INFRA_LAME_TTL 295
-#define VAR_INFRA_CACHE_SLABS 296
-#define VAR_INFRA_CACHE_NUMHOSTS 297
-#define VAR_INFRA_CACHE_LAME_SIZE 298
-#define VAR_NAME 299
-#define VAR_STUB_ZONE 300
-#define VAR_STUB_HOST 301
-#define VAR_STUB_ADDR 302
-#define VAR_TARGET_FETCH_POLICY 303
-#define VAR_HARDEN_SHORT_BUFSIZE 304
-#define VAR_HARDEN_LARGE_QUERIES 305
-#define VAR_FORWARD_ZONE 306
-#define VAR_FORWARD_HOST 307
-#define VAR_FORWARD_ADDR 308
-#define VAR_DO_NOT_QUERY_ADDRESS 309
-#define VAR_HIDE_IDENTITY 310
-#define VAR_HIDE_VERSION 311
-#define VAR_IDENTITY 312
-#define VAR_VERSION 313
-#define VAR_HARDEN_GLUE 314
-#define VAR_MODULE_CONF 315
-#define VAR_TRUST_ANCHOR_FILE 316
-#define VAR_TRUST_ANCHOR 317
-#define VAR_VAL_OVERRIDE_DATE 318
-#define VAR_BOGUS_TTL 319
-#define VAR_VAL_CLEAN_ADDITIONAL 320
-#define VAR_VAL_PERMISSIVE_MODE 321
-#define VAR_INCOMING_NUM_TCP 322
-#define VAR_MSG_BUFFER_SIZE 323
-#define VAR_KEY_CACHE_SIZE 324
-#define VAR_KEY_CACHE_SLABS 325
-#define VAR_TRUSTED_KEYS_FILE 326
-#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 327
-#define VAR_USE_SYSLOG 328
-#define VAR_OUTGOING_INTERFACE 329
-#define VAR_ROOT_HINTS 330
-#define VAR_DO_NOT_QUERY_LOCALHOST 331
-#define VAR_CACHE_MAX_TTL 332
-#define VAR_HARDEN_DNSSEC_STRIPPED 333
-#define VAR_ACCESS_CONTROL 334
-#define VAR_LOCAL_ZONE 335
-#define VAR_LOCAL_DATA 336
-#define VAR_INTERFACE_AUTOMATIC 337
-#define VAR_STATISTICS_INTERVAL 338
-#define VAR_DO_DAEMONIZE 339
-#define VAR_USE_CAPS_FOR_ID 340
-#define VAR_STATISTICS_CUMULATIVE 341
-#define VAR_OUTGOING_PORT_PERMIT 342
-#define VAR_OUTGOING_PORT_AVOID 343
-#define VAR_DLV_ANCHOR_FILE 344
-#define VAR_DLV_ANCHOR 345
-#define VAR_NEG_CACHE_SIZE 346
-#define VAR_HARDEN_REFERRAL_PATH 347
-#define VAR_PRIVATE_ADDRESS 348
-#define VAR_PRIVATE_DOMAIN 349
-#define VAR_REMOTE_CONTROL 350
-#define VAR_CONTROL_ENABLE 351
-#define VAR_CONTROL_INTERFACE 352
-#define VAR_CONTROL_PORT 353
-#define VAR_SERVER_KEY_FILE 354
-#define VAR_SERVER_CERT_FILE 355
-#define VAR_CONTROL_KEY_FILE 356
-#define VAR_CONTROL_CERT_FILE 357
-#define VAR_CONTROL_USE_CERT 358
-#define VAR_EXTENDED_STATISTICS 359
-#define VAR_LOCAL_DATA_PTR 360
-#define VAR_JOSTLE_TIMEOUT 361
-#define VAR_STUB_PRIME 362
-#define VAR_UNWANTED_REPLY_THRESHOLD 363
-#define VAR_LOG_TIME_ASCII 364
-#define VAR_DOMAIN_INSECURE 365
-#define VAR_PYTHON 366
-#define VAR_PYTHON_SCRIPT 367
-#define VAR_VAL_SIG_SKEW_MIN 368
-#define VAR_VAL_SIG_SKEW_MAX 369
-#define VAR_CACHE_MIN_TTL 370
-#define VAR_VAL_LOG_LEVEL 371
-#define VAR_AUTO_TRUST_ANCHOR_FILE 372
-#define VAR_KEEP_MISSING 373
-#define VAR_ADD_HOLDDOWN 374
-#define VAR_DEL_HOLDDOWN 375
-#define VAR_SO_RCVBUF 376
-#define VAR_EDNS_BUFFER_SIZE 377
-#define VAR_PREFETCH 378
-#define VAR_PREFETCH_KEY 379
-#define VAR_SO_SNDBUF 380
-#define VAR_SO_REUSEPORT 381
-#define VAR_HARDEN_BELOW_NXDOMAIN 382
-#define VAR_IGNORE_CD_FLAG 383
-#define VAR_LOG_QUERIES 384
-#define VAR_LOG_REPLIES 385
-#define VAR_LOG_LOCAL_ACTIONS 386
-#define VAR_TCP_UPSTREAM 387
-#define VAR_SSL_UPSTREAM 388
-#define VAR_SSL_SERVICE_KEY 389
-#define VAR_SSL_SERVICE_PEM 390
-#define VAR_SSL_PORT 391
-#define VAR_FORWARD_FIRST 392
-#define VAR_STUB_SSL_UPSTREAM 393
-#define VAR_FORWARD_SSL_UPSTREAM 394
-#define VAR_TLS_CERT_BUNDLE 395
-#define VAR_STUB_FIRST 396
-#define VAR_MINIMAL_RESPONSES 397
-#define VAR_RRSET_ROUNDROBIN 398
-#define VAR_MAX_UDP_SIZE 399
-#define VAR_DELAY_CLOSE 400
-#define VAR_UNBLOCK_LAN_ZONES 401
-#define VAR_INSECURE_LAN_ZONES 402
-#define VAR_INFRA_CACHE_MIN_RTT 403
-#define VAR_DNS64_PREFIX 404
-#define VAR_DNS64_SYNTHALL 405
-#define VAR_DNS64_IGNORE_AAAA 406
-#define VAR_DNSTAP 407
-#define VAR_DNSTAP_ENABLE 408
-#define VAR_DNSTAP_SOCKET_PATH 409
-#define VAR_DNSTAP_IP 410
-#define VAR_DNSTAP_TLS 411
-#define VAR_DNSTAP_TLS_SERVER_NAME 412
-#define VAR_DNSTAP_TLS_CERT_BUNDLE 413
-#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414
-#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415
-#define VAR_DNSTAP_SEND_IDENTITY 416
-#define VAR_DNSTAP_SEND_VERSION 417
-#define VAR_DNSTAP_IDENTITY 418
-#define VAR_DNSTAP_VERSION 419
-#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420
-#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421
-#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422
-#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423
-#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424
-#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425
-#define VAR_RESPONSE_IP_TAG 426
-#define VAR_RESPONSE_IP 427
-#define VAR_RESPONSE_IP_DATA 428
-#define VAR_HARDEN_ALGO_DOWNGRADE 429
-#define VAR_IP_TRANSPARENT 430
-#define VAR_IP_DSCP 431
-#define VAR_DISABLE_DNSSEC_LAME_CHECK 432
-#define VAR_IP_RATELIMIT 433
-#define VAR_IP_RATELIMIT_SLABS 434
-#define VAR_IP_RATELIMIT_SIZE 435
-#define VAR_RATELIMIT 436
-#define VAR_RATELIMIT_SLABS 437
-#define VAR_RATELIMIT_SIZE 438
-#define VAR_RATELIMIT_FOR_DOMAIN 439
-#define VAR_RATELIMIT_BELOW_DOMAIN 440
-#define VAR_IP_RATELIMIT_FACTOR 441
-#define VAR_RATELIMIT_FACTOR 442
-#define VAR_SEND_CLIENT_SUBNET 443
-#define VAR_CLIENT_SUBNET_ZONE 444
-#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445
-#define VAR_CLIENT_SUBNET_OPCODE 446
-#define VAR_MAX_CLIENT_SUBNET_IPV4 447
-#define VAR_MAX_CLIENT_SUBNET_IPV6 448
-#define VAR_MIN_CLIENT_SUBNET_IPV4 449
-#define VAR_MIN_CLIENT_SUBNET_IPV6 450
-#define VAR_MAX_ECS_TREE_SIZE_IPV4 451
-#define VAR_MAX_ECS_TREE_SIZE_IPV6 452
-#define VAR_CAPS_WHITELIST 453
-#define VAR_CACHE_MAX_NEGATIVE_TTL 454
-#define VAR_PERMIT_SMALL_HOLDDOWN 455
-#define VAR_QNAME_MINIMISATION 456
-#define VAR_QNAME_MINIMISATION_STRICT 457
-#define VAR_IP_FREEBIND 458
-#define VAR_DEFINE_TAG 459
-#define VAR_LOCAL_ZONE_TAG 460
-#define VAR_ACCESS_CONTROL_TAG 461
-#define VAR_LOCAL_ZONE_OVERRIDE 462
-#define VAR_ACCESS_CONTROL_TAG_ACTION 463
-#define VAR_ACCESS_CONTROL_TAG_DATA 464
-#define VAR_VIEW 465
-#define VAR_ACCESS_CONTROL_VIEW 466
-#define VAR_VIEW_FIRST 467
-#define VAR_SERVE_EXPIRED 468
-#define VAR_SERVE_EXPIRED_TTL 469
-#define VAR_SERVE_EXPIRED_TTL_RESET 470
-#define VAR_SERVE_EXPIRED_REPLY_TTL 471
-#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472
-#define VAR_FAKE_DSA 473
-#define VAR_FAKE_SHA1 474
-#define VAR_LOG_IDENTITY 475
-#define VAR_HIDE_TRUSTANCHOR 476
-#define VAR_TRUST_ANCHOR_SIGNALING 477
-#define VAR_AGGRESSIVE_NSEC 478
-#define VAR_USE_SYSTEMD 479
-#define VAR_SHM_ENABLE 480
-#define VAR_SHM_KEY 481
-#define VAR_ROOT_KEY_SENTINEL 482
-#define VAR_DNSCRYPT 483
-#define VAR_DNSCRYPT_ENABLE 484
-#define VAR_DNSCRYPT_PORT 485
-#define VAR_DNSCRYPT_PROVIDER 486
-#define VAR_DNSCRYPT_SECRET_KEY 487
-#define VAR_DNSCRYPT_PROVIDER_CERT 488
-#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491
-#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492
-#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493
-#define VAR_IPSECMOD_ENABLED 494
-#define VAR_IPSECMOD_HOOK 495
-#define VAR_IPSECMOD_IGNORE_BOGUS 496
-#define VAR_IPSECMOD_MAX_TTL 497
-#define VAR_IPSECMOD_WHITELIST 498
-#define VAR_IPSECMOD_STRICT 499
-#define VAR_CACHEDB 500
-#define VAR_CACHEDB_BACKEND 501
-#define VAR_CACHEDB_SECRETSEED 502
-#define VAR_CACHEDB_REDISHOST 503
-#define VAR_CACHEDB_REDISPORT 504
-#define VAR_CACHEDB_REDISTIMEOUT 505
-#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 506
-#define VAR_FOR_UPSTREAM 507
-#define VAR_AUTH_ZONE 508
-#define VAR_ZONEFILE 509
-#define VAR_MASTER 510
-#define VAR_URL 511
-#define VAR_FOR_DOWNSTREAM 512
-#define VAR_FALLBACK_ENABLED 513
-#define VAR_TLS_ADDITIONAL_PORT 514
-#define VAR_LOW_RTT 515
-#define VAR_LOW_RTT_PERMIL 516
-#define VAR_FAST_SERVER_PERMIL 517
-#define VAR_FAST_SERVER_NUM 518
-#define VAR_ALLOW_NOTIFY 519
-#define VAR_TLS_WIN_CERT 520
-#define VAR_TCP_CONNECTION_LIMIT 521
-#define VAR_FORWARD_NO_CACHE 522
-#define VAR_STUB_NO_CACHE 523
-#define VAR_LOG_SERVFAIL 524
-#define VAR_DENY_ANY 525
-#define VAR_UNKNOWN_SERVER_TIME_LIMIT 526
-#define VAR_LOG_TAG_QUERYREPLY 527
-#define VAR_STREAM_WAIT_SIZE 528
-#define VAR_TLS_CIPHERS 529
-#define VAR_TLS_CIPHERSUITES 530
-#define VAR_IPSET 531
-#define VAR_IPSET_NAME_V4 532
-#define VAR_IPSET_NAME_V6 533
-#define VAR_TLS_SESSION_TICKET_KEYS 534
-#define VAR_RPZ 535
-#define VAR_TAGS 536
-#define VAR_RPZ_ACTION_OVERRIDE 537
-#define VAR_RPZ_CNAME_OVERRIDE 538
-#define VAR_RPZ_LOG 539
-#define VAR_RPZ_LOG_NAME 540
-
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-union YYSTYPE
-{
 #line 66 "./util/configparser.y"
-
-       char*   str;
-
-#line 716 "util/configparser.c"
-
-};
-typedef union YYSTYPE YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-
-extern YYSTYPE yylval;
-
-int yyparse (void);
-
-#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED  */
-
-
-
-#ifdef short
-# undef short
-#endif
-
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
-#endif
-
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#else
-typedef signed char yytype_int8;
-#endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short yytype_int16;
-#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-#  define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-#  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYSIZE_T size_t
-# else
-#  define YYSIZE_T unsigned
-# endif
-#endif
-
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-
-#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
-#  if ENABLE_NLS
-#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
-#  endif
-# endif
-# ifndef YY_
-#  define YY_(Msgid) Msgid
-# endif
+#ifdef YYSTYPE
+#undef  YYSTYPE_IS_DECLARED
+#define YYSTYPE_IS_DECLARED 1
 #endif
-
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__                                               \
-      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
-     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+#ifndef YYSTYPE_IS_DECLARED
+#define YYSTYPE_IS_DECLARED 1
+typedef union {
+       char*   str;
+} YYSTYPE;
+#endif /* !YYSTYPE_IS_DECLARED */
+#line 59 "util/configparser.c"
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
 # else
-#  define YY_ATTRIBUTE(Spec) /* empty */
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
 # endif
-#endif
-
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
-#endif
-
-#ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
-
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(E) /* empty */
+# define YYPARSE_DECL() yyparse(void)
 #endif
 
-#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
-/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
-    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
-    _Pragma ("GCC diagnostic pop")
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
 #else
-# define YY_INITIAL_VALUE(Value) Value
-#endif
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
 #endif
 
-
-#define YY_ASSERT(E) ((void) (0 && (E)))
-
-#if ! defined yyoverflow || YYERROR_VERBOSE
-
-/* The parser invokes alloca or malloc; define the necessary symbols.  */
-
-# ifdef YYSTACK_USE_ALLOCA
-#  if YYSTACK_USE_ALLOCA
-#   ifdef __GNUC__
-#    define YYSTACK_ALLOC __builtin_alloca
-#   elif defined __BUILTIN_VA_ARG_INCR
-#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-#   elif defined _AIX
-#    define YYSTACK_ALLOC __alloca
-#   elif defined _MSC_VER
-#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-#    define alloca _alloca
-#   else
-#    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
-#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
-#     ifndef EXIT_SUCCESS
-#      define EXIT_SUCCESS 0
-#     endif
-#    endif
-#   endif
-#  endif
-# endif
-
-# ifdef YYSTACK_ALLOC
-   /* Pacify GCC's 'empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-    /* The OS might guarantee only one guard page at the bottom of the stack,
-       and a page size can be as small as 4096 bytes.  So we cannot safely
-       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-       to allow for a few compiler-allocated temporary stack slots.  */
-#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
-#  endif
-# else
-#  define YYSTACK_ALLOC YYMALLOC
-#  define YYSTACK_FREE YYFREE
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-#  endif
-#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
-       && ! ((defined YYMALLOC || defined malloc) \
-             && (defined YYFREE || defined free)))
-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef EXIT_SUCCESS
-#    define EXIT_SUCCESS 0
-#   endif
-#  endif
-#  ifndef YYMALLOC
-#   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-#  ifndef YYFREE
-#   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS
-void free (void *); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-# endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
-
-#if (! defined yyoverflow \
-     && (! defined __cplusplus \
-         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member.  */
-union yyalloc
-{
-  yytype_int16 yyss_alloc;
-  YYSTYPE yyvs_alloc;
-};
-
-/* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
-   N elements.  */
-# define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-      + YYSTACK_GAP_MAXIMUM)
-
-# define YYCOPY_NEEDED 1
-
-/* Relocate STACK from its old location to the new one.  The
-   local variables YYSIZE and YYSTACKSIZE give the old and new number of
-   elements in the stack, and YYPTR gives the new location of the
-   stack.  Advance YYPTR to a properly aligned location for the next
-   stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
-    do                                                                  \
-      {                                                                 \
-        YYSIZE_T yynewbytes;                                            \
-        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
-        Stack = &yyptr->Stack_alloc;                                    \
-        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / sizeof (*yyptr);                          \
-      }                                                                 \
-    while (0)
-
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
 #endif
-
-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from SRC to DST.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(Dst, Src, Count) \
-      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
-#  else
-#   define YYCOPY(Dst, Src, Count)              \
-      do                                        \
-        {                                       \
-          YYSIZE_T yyi;                         \
-          for (yyi = 0; yyi < (Count); yyi++)   \
-            (Dst)[yyi] = (Src)[yyi];            \
-        }                                       \
-      while (0)
-#  endif
-# endif
-#endif /* !YYCOPY_NEEDED */
-
-/* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  2
-/* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   606
-
-/* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  286
-/* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  309
-/* YYNRULES -- Number of rules.  */
-#define YYNRULES  596
-/* YYNSTATES -- Number of states.  */
-#define YYNSTATES  887
-
-#define YYUNDEFTOK  2
-#define YYMAXUTOK   540
-
-/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, with out-of-bounds checking.  */
-#define YYTRANSLATE(YYX)                                                \
-  ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex.  */
-static const yytype_uint16 yytranslate[] =
-{
-       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,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   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
-};
-
-#if YYDEBUG
-  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
-{
-       0,   178,   178,   178,   179,   179,   180,   180,   181,   181,
-     181,   182,   182,   183,   183,   184,   188,   193,   194,   195,
-     195,   195,   196,   196,   197,   197,   197,   198,   198,   199,
-     199,   199,   200,   200,   201,   201,   201,   202,   202,   202,
-     203,   203,   204,   204,   205,   205,   206,   206,   207,   207,
-     208,   208,   209,   209,   210,   210,   211,   211,   211,   212,
-     212,   212,   213,   213,   213,   214,   214,   215,   215,   216,
-     216,   217,   217,   218,   218,   218,   219,   219,   220,   220,
-     221,   221,   221,   222,   222,   223,   223,   224,   224,   225,
-     225,   225,   226,   226,   227,   227,   228,   228,   229,   229,
-     230,   230,   231,   231,   231,   232,   232,   233,   233,   233,
-     234,   234,   234,   235,   235,   235,   236,   236,   236,   236,
-     237,   238,   238,   238,   239,   239,   239,   240,   240,   241,
-     241,   242,   242,   242,   243,   243,   244,   244,   244,   245,
-     246,   246,   247,   247,   248,   249,   249,   250,   250,   251,
-     251,   252,   253,   253,   254,   254,   255,   255,   256,   256,
-     257,   257,   258,   258,   258,   259,   259,   260,   260,   261,
-     261,   262,   262,   263,   263,   264,   264,   265,   265,   265,
-     266,   266,   266,   267,   267,   267,   268,   268,   269,   270,
-     270,   271,   271,   272,   272,   273,   273,   274,   274,   274,
-     275,   275,   275,   276,   276,   276,   277,   277,   278,   278,
-     279,   279,   281,   293,   294,   295,   295,   295,   295,   295,
-     296,   296,   298,   310,   311,   312,   312,   312,   312,   313,
-     313,   315,   329,   330,   331,   331,   331,   331,   332,   332,
-     332,   334,   351,   352,   353,   353,   353,   353,   354,   354,
-     354,   355,   358,   377,   394,   402,   412,   420,   437,   438,
-     439,   439,   439,   439,   439,   440,   440,   440,   441,   441,
-     443,   452,   461,   472,   481,   490,   499,   510,   519,   531,
-     545,   560,   571,   588,   605,   622,   639,   654,   669,   682,
-     697,   706,   715,   724,   733,   742,   751,   760,   769,   778,
-     787,   796,   805,   814,   823,   836,   845,   858,   867,   876,
-     885,   892,   899,   908,   915,   924,   932,   939,   946,   954,
-     963,   972,   986,   995,  1004,  1013,  1022,  1031,  1040,  1047,
-    1054,  1080,  1088,  1095,  1102,  1109,  1116,  1124,  1132,  1140,
-    1147,  1158,  1169,  1176,  1185,  1194,  1203,  1210,  1217,  1225,
-    1233,  1243,  1253,  1263,  1277,  1285,  1298,  1309,  1317,  1330,
-    1339,  1348,  1357,  1367,  1377,  1385,  1398,  1407,  1415,  1424,
-    1432,  1445,  1454,  1461,  1471,  1481,  1491,  1501,  1511,  1521,
-    1531,  1541,  1548,  1555,  1562,  1571,  1580,  1589,  1598,  1605,
-    1615,  1635,  1642,  1660,  1673,  1686,  1695,  1704,  1713,  1722,
-    1732,  1742,  1753,  1762,  1771,  1780,  1789,  1798,  1807,  1820,
-    1833,  1842,  1849,  1858,  1867,  1876,  1885,  1893,  1906,  1914,
-    1955,  1962,  1977,  1987,  1997,  2004,  2011,  2018,  2027,  2035,
-    2049,  2070,  2091,  2103,  2115,  2127,  2136,  2157,  2167,  2176,
-    2184,  2192,  2205,  2218,  2233,  2248,  2257,  2266,  2272,  2281,
-    2290,  2300,  2310,  2323,  2336,  2348,  2362,  2374,  2388,  2398,
-    2405,  2412,  2421,  2430,  2440,  2450,  2460,  2467,  2474,  2483,
-    2492,  2502,  2512,  2519,  2526,  2533,  2541,  2551,  2561,  2571,
-    2581,  2620,  2630,  2638,  2646,  2661,  2670,  2675,  2676,  2677,
-    2677,  2677,  2678,  2678,  2678,  2679,  2679,  2681,  2691,  2700,
-    2707,  2714,  2721,  2728,  2735,  2742,  2747,  2748,  2749,  2749,
-    2750,  2750,  2750,  2751,  2752,  2752,  2753,  2753,  2754,  2754,
-    2755,  2756,  2757,  2758,  2759,  2760,  2762,  2771,  2778,  2785,
-    2794,  2801,  2808,  2815,  2822,  2831,  2840,  2847,  2854,  2864,
-    2874,  2884,  2894,  2904,  2914,  2919,  2920,  2921,  2923,  2929,
-    2939,  2946,  2955,  2963,  2968,  2969,  2971,  2971,  2971,  2972,
-    2972,  2973,  2974,  2975,  2976,  2977,  2979,  2989,  2998,  3005,
-    3014,  3021,  3030,  3038,  3051,  3059,  3072,  3077,  3078,  3079,
-    3079,  3080,  3080,  3080,  3082,  3094,  3106,  3118,  3133,  3146,
-    3157,  3162,  3163,  3164,  3164,  3166,  3181
-};
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || 0
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
-static const char *const yytname[] =
-{
-  "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT",
-  "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_SERVER", "VAR_VERBOSITY",
-  "VAR_NUM_THREADS", "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE",
-  "VAR_PREFER_IP4", "VAR_DO_IP4", "VAR_DO_IP6", "VAR_PREFER_IP6",
-  "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS",
-  "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE",
-  "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT", "VAR_USERNAME",
-  "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", "VAR_MSG_CACHE_SIZE",
-  "VAR_MSG_CACHE_SLABS", "VAR_NUM_QUERIES_PER_THREAD",
-  "VAR_RRSET_CACHE_SIZE", "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP",
-  "VAR_INFRA_HOST_TTL", "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS",
-  "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME",
-  "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR",
-  "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE",
-  "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST",
-  "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY",
-  "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE",
-  "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR",
-  "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL",
-  "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE",
-  "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE",
-  "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG",
-  "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST",
-  "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL",
-  "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC",
-  "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID",
-  "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT",
-  "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR",
-  "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS",
-  "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE",
-  "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE",
-  "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
-  "VAR_CONTROL_USE_CERT", "VAR_EXTENDED_STATISTICS", "VAR_LOCAL_DATA_PTR",
-  "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME", "VAR_UNWANTED_REPLY_THRESHOLD",
-  "VAR_LOG_TIME_ASCII", "VAR_DOMAIN_INSECURE", "VAR_PYTHON",
-  "VAR_PYTHON_SCRIPT", "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX",
-  "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE",
-  "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN",
-  "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH",
-  "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT",
-  "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES",
-  "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM",
-  "VAR_SSL_UPSTREAM", "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM",
-  "VAR_SSL_PORT", "VAR_FORWARD_FIRST", "VAR_STUB_SSL_UPSTREAM",
-  "VAR_FORWARD_SSL_UPSTREAM", "VAR_TLS_CERT_BUNDLE", "VAR_STUB_FIRST",
-  "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE",
-  "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES",
-  "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL",
-  "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE",
-  "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", "VAR_DNSTAP_TLS",
-  "VAR_DNSTAP_TLS_SERVER_NAME", "VAR_DNSTAP_TLS_CERT_BUNDLE",
-  "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", "VAR_DNSTAP_TLS_CLIENT_CERT_FILE",
-  "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION",
-  "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
-  "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
-  "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES",
-  "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES",
-  "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES",
-  "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES",
-  "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "VAR_RESPONSE_IP_TAG",
-  "VAR_RESPONSE_IP", "VAR_RESPONSE_IP_DATA", "VAR_HARDEN_ALGO_DOWNGRADE",
-  "VAR_IP_TRANSPARENT", "VAR_IP_DSCP", "VAR_DISABLE_DNSSEC_LAME_CHECK",
-  "VAR_IP_RATELIMIT", "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE",
-  "VAR_RATELIMIT", "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE",
-  "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN",
-  "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR",
-  "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE",
-  "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE",
-  "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6",
-  "VAR_MIN_CLIENT_SUBNET_IPV4", "VAR_MIN_CLIENT_SUBNET_IPV6",
-  "VAR_MAX_ECS_TREE_SIZE_IPV4", "VAR_MAX_ECS_TREE_SIZE_IPV6",
-  "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL",
-  "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION",
-  "VAR_QNAME_MINIMISATION_STRICT", "VAR_IP_FREEBIND", "VAR_DEFINE_TAG",
-  "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG",
-  "VAR_LOCAL_ZONE_OVERRIDE", "VAR_ACCESS_CONTROL_TAG_ACTION",
-  "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW",
-  "VAR_VIEW_FIRST", "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL",
-  "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL",
-  "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_FAKE_DSA", "VAR_FAKE_SHA1",
-  "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING",
-  "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE",
-  "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT",
-  "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER",
-  "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT",
-  "VAR_DNSCRYPT_PROVIDER_CERT_ROTATED",
-  "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE",
-  "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS",
-  "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS",
-  "VAR_IPSECMOD_ENABLED", "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS",
-  "VAR_IPSECMOD_MAX_TTL", "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT",
-  "VAR_CACHEDB", "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED",
-  "VAR_CACHEDB_REDISHOST", "VAR_CACHEDB_REDISPORT",
-  "VAR_CACHEDB_REDISTIMEOUT", "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM",
-  "VAR_FOR_UPSTREAM", "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER",
-  "VAR_URL", "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED",
-  "VAR_TLS_ADDITIONAL_PORT", "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL",
-  "VAR_FAST_SERVER_PERMIL", "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY",
-  "VAR_TLS_WIN_CERT", "VAR_TCP_CONNECTION_LIMIT", "VAR_FORWARD_NO_CACHE",
-  "VAR_STUB_NO_CACHE", "VAR_LOG_SERVFAIL", "VAR_DENY_ANY",
-  "VAR_UNKNOWN_SERVER_TIME_LIMIT", "VAR_LOG_TAG_QUERYREPLY",
-  "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES",
-  "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6",
-  "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS",
-  "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG",
-  "VAR_RPZ_LOG_NAME", "$accept", "toplevelvars", "toplevelvar",
-  "serverstart", "contents_server", "content_server", "stubstart",
-  "contents_stub", "content_stub", "forwardstart", "contents_forward",
-  "content_forward", "viewstart", "contents_view", "content_view",
-  "authstart", "contents_auth", "content_auth", "rpz_tag",
-  "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name",
-  "rpzstart", "contents_rpz", "content_rpz", "server_num_threads",
-  "server_verbosity", "server_statistics_interval",
-  "server_statistics_cumulative", "server_extended_statistics",
-  "server_shm_enable", "server_shm_key", "server_port",
-  "server_send_client_subnet", "server_client_subnet_zone",
-  "server_client_subnet_always_forward", "server_client_subnet_opcode",
-  "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6",
-  "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6",
-  "server_max_ecs_tree_size_ipv4", "server_max_ecs_tree_size_ipv6",
-  "server_interface", "server_outgoing_interface", "server_outgoing_range",
-  "server_outgoing_port_permit", "server_outgoing_port_avoid",
-  "server_outgoing_num_tcp", "server_incoming_num_tcp",
-  "server_interface_automatic", "server_do_ip4", "server_do_ip6",
-  "server_do_udp", "server_do_tcp", "server_prefer_ip4",
-  "server_prefer_ip6", "server_tcp_mss", "server_outgoing_tcp_mss",
-  "server_tcp_idle_timeout", "server_tcp_keepalive",
-  "server_tcp_keepalive_timeout", "server_tcp_upstream",
-  "server_udp_upstream_without_downstream", "server_ssl_upstream",
-  "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port",
-  "server_tls_cert_bundle", "server_tls_win_cert",
-  "server_tls_additional_port", "server_tls_ciphers",
-  "server_tls_ciphersuites", "server_tls_session_ticket_keys",
-  "server_use_systemd", "server_do_daemonize", "server_use_syslog",
-  "server_log_time_ascii", "server_log_queries", "server_log_replies",
-  "server_log_tag_queryreply", "server_log_servfail",
-  "server_log_local_actions", "server_chroot", "server_username",
-  "server_directory", "server_logfile", "server_pidfile",
-  "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor",
-  "server_auto_trust_anchor_file", "server_trust_anchor_file",
-  "server_trusted_keys_file", "server_trust_anchor",
-  "server_trust_anchor_signaling", "server_root_key_sentinel",
-  "server_domain_insecure", "server_hide_identity", "server_hide_version",
-  "server_hide_trustanchor", "server_identity", "server_version",
-  "server_so_rcvbuf", "server_so_sndbuf", "server_so_reuseport",
-  "server_ip_transparent", "server_ip_freebind", "server_ip_dscp",
-  "server_stream_wait_size", "server_edns_buffer_size",
-  "server_msg_buffer_size", "server_msg_cache_size",
-  "server_msg_cache_slabs", "server_num_queries_per_thread",
-  "server_jostle_timeout", "server_delay_close",
-  "server_unblock_lan_zones", "server_insecure_lan_zones",
-  "server_rrset_cache_size", "server_rrset_cache_slabs",
-  "server_infra_host_ttl", "server_infra_lame_ttl",
-  "server_infra_cache_numhosts", "server_infra_cache_lame_size",
-  "server_infra_cache_slabs", "server_infra_cache_min_rtt",
-  "server_target_fetch_policy", "server_harden_short_bufsize",
-  "server_harden_large_queries", "server_harden_glue",
-  "server_harden_dnssec_stripped", "server_harden_below_nxdomain",
-  "server_harden_referral_path", "server_harden_algo_downgrade",
-  "server_use_caps_for_id", "server_caps_whitelist",
-  "server_private_address", "server_private_domain", "server_prefetch",
-  "server_prefetch_key", "server_deny_any",
-  "server_unwanted_reply_threshold", "server_do_not_query_address",
-  "server_do_not_query_localhost", "server_access_control",
-  "server_module_conf", "server_val_override_date",
-  "server_val_sig_skew_min", "server_val_sig_skew_max",
-  "server_cache_max_ttl", "server_cache_max_negative_ttl",
-  "server_cache_min_ttl", "server_bogus_ttl",
-  "server_val_clean_additional", "server_val_permissive_mode",
-  "server_aggressive_nsec", "server_ignore_cd_flag",
-  "server_serve_expired", "server_serve_expired_ttl",
-  "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl",
-  "server_serve_expired_client_timeout", "server_fake_dsa",
-  "server_fake_sha1", "server_val_log_level",
-  "server_val_nsec3_keysize_iterations", "server_add_holddown",
-  "server_del_holddown", "server_keep_missing",
-  "server_permit_small_holddown", "server_key_cache_size",
-  "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
-  "server_local_data", "server_local_data_ptr", "server_minimal_responses",
-  "server_rrset_roundrobin", "server_unknown_server_time_limit",
-  "server_max_udp_size", "server_dns64_prefix", "server_dns64_synthall",
-  "server_dns64_ignore_aaaa", "server_define_tag", "server_local_zone_tag",
-  "server_access_control_tag", "server_access_control_tag_action",
-  "server_access_control_tag_data", "server_local_zone_override",
-  "server_access_control_view", "server_response_ip_tag",
-  "server_ip_ratelimit", "server_ratelimit", "server_ip_ratelimit_size",
-  "server_ratelimit_size", "server_ip_ratelimit_slabs",
-  "server_ratelimit_slabs", "server_ratelimit_for_domain",
-  "server_ratelimit_below_domain", "server_ip_ratelimit_factor",
-  "server_ratelimit_factor", "server_low_rtt", "server_fast_server_num",
-  "server_fast_server_permil", "server_qname_minimisation",
-  "server_qname_minimisation_strict", "server_ipsecmod_enabled",
-  "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook",
-  "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist",
-  "server_ipsecmod_strict", "stub_name", "stub_host", "stub_addr",
-  "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_prime",
-  "forward_name", "forward_host", "forward_addr", "forward_first",
-  "forward_no_cache", "forward_ssl_upstream", "auth_name", "auth_zonefile",
-  "auth_master", "auth_url", "auth_allow_notify", "auth_for_downstream",
-  "auth_for_upstream", "auth_fallback_enabled", "view_name",
-  "view_local_zone", "view_response_ip", "view_response_ip_data",
-  "view_local_data", "view_local_data_ptr", "view_first", "rcstart",
-  "contents_rc", "content_rc", "rc_control_enable", "rc_control_port",
-  "rc_control_interface", "rc_control_use_cert", "rc_server_key_file",
-  "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file",
-  "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable",
-  "dt_dnstap_socket_path", "dt_dnstap_ip", "dt_dnstap_tls",
-  "dt_dnstap_tls_server_name", "dt_dnstap_tls_cert_bundle",
-  "dt_dnstap_tls_client_key_file", "dt_dnstap_tls_client_cert_file",
-  "dt_dnstap_send_identity", "dt_dnstap_send_version",
-  "dt_dnstap_identity", "dt_dnstap_version",
-  "dt_dnstap_log_resolver_query_messages",
-  "dt_dnstap_log_resolver_response_messages",
-  "dt_dnstap_log_client_query_messages",
-  "dt_dnstap_log_client_response_messages",
-  "dt_dnstap_log_forwarder_query_messages",
-  "dt_dnstap_log_forwarder_response_messages", "pythonstart",
-  "contents_py", "content_py", "py_script",
-  "server_disable_dnssec_lame_check", "server_log_identity",
-  "server_response_ip", "server_response_ip_data", "dnscstart",
-  "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable",
-  "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider",
-  "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated",
-  "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size",
-  "dnsc_dnscrypt_shared_secret_cache_slabs",
-  "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs",
-  "cachedbstart", "contents_cachedb", "content_cachedb",
-  "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host",
-  "redis_server_port", "redis_timeout", "server_tcp_connection_limit",
-  "ipsetstart", "contents_ipset", "content_ipset", "ipset_name_v4",
-  "ipset_name_v6", YY_NULLPTR
+extern int YYPARSE_DECL();
+
+#define SPACE 257
+#define LETTER 258
+#define NEWLINE 259
+#define COMMENT 260
+#define COLON 261
+#define ANY 262
+#define ZONESTR 263
+#define STRING_ARG 264
+#define VAR_SERVER 265
+#define VAR_VERBOSITY 266
+#define VAR_NUM_THREADS 267
+#define VAR_PORT 268
+#define VAR_OUTGOING_RANGE 269
+#define VAR_INTERFACE 270
+#define VAR_PREFER_IP4 271
+#define VAR_DO_IP4 272
+#define VAR_DO_IP6 273
+#define VAR_PREFER_IP6 274
+#define VAR_DO_UDP 275
+#define VAR_DO_TCP 276
+#define VAR_TCP_MSS 277
+#define VAR_OUTGOING_TCP_MSS 278
+#define VAR_TCP_IDLE_TIMEOUT 279
+#define VAR_EDNS_TCP_KEEPALIVE 280
+#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 281
+#define VAR_CHROOT 282
+#define VAR_USERNAME 283
+#define VAR_DIRECTORY 284
+#define VAR_LOGFILE 285
+#define VAR_PIDFILE 286
+#define VAR_MSG_CACHE_SIZE 287
+#define VAR_MSG_CACHE_SLABS 288
+#define VAR_NUM_QUERIES_PER_THREAD 289
+#define VAR_RRSET_CACHE_SIZE 290
+#define VAR_RRSET_CACHE_SLABS 291
+#define VAR_OUTGOING_NUM_TCP 292
+#define VAR_INFRA_HOST_TTL 293
+#define VAR_INFRA_LAME_TTL 294
+#define VAR_INFRA_CACHE_SLABS 295
+#define VAR_INFRA_CACHE_NUMHOSTS 296
+#define VAR_INFRA_CACHE_LAME_SIZE 297
+#define VAR_NAME 298
+#define VAR_STUB_ZONE 299
+#define VAR_STUB_HOST 300
+#define VAR_STUB_ADDR 301
+#define VAR_TARGET_FETCH_POLICY 302
+#define VAR_HARDEN_SHORT_BUFSIZE 303
+#define VAR_HARDEN_LARGE_QUERIES 304
+#define VAR_FORWARD_ZONE 305
+#define VAR_FORWARD_HOST 306
+#define VAR_FORWARD_ADDR 307
+#define VAR_DO_NOT_QUERY_ADDRESS 308
+#define VAR_HIDE_IDENTITY 309
+#define VAR_HIDE_VERSION 310
+#define VAR_IDENTITY 311
+#define VAR_VERSION 312
+#define VAR_HARDEN_GLUE 313
+#define VAR_MODULE_CONF 314
+#define VAR_TRUST_ANCHOR_FILE 315
+#define VAR_TRUST_ANCHOR 316
+#define VAR_VAL_OVERRIDE_DATE 317
+#define VAR_BOGUS_TTL 318
+#define VAR_VAL_CLEAN_ADDITIONAL 319
+#define VAR_VAL_PERMISSIVE_MODE 320
+#define VAR_INCOMING_NUM_TCP 321
+#define VAR_MSG_BUFFER_SIZE 322
+#define VAR_KEY_CACHE_SIZE 323
+#define VAR_KEY_CACHE_SLABS 324
+#define VAR_TRUSTED_KEYS_FILE 325
+#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 326
+#define VAR_USE_SYSLOG 327
+#define VAR_OUTGOING_INTERFACE 328
+#define VAR_ROOT_HINTS 329
+#define VAR_DO_NOT_QUERY_LOCALHOST 330
+#define VAR_CACHE_MAX_TTL 331
+#define VAR_HARDEN_DNSSEC_STRIPPED 332
+#define VAR_ACCESS_CONTROL 333
+#define VAR_LOCAL_ZONE 334
+#define VAR_LOCAL_DATA 335
+#define VAR_INTERFACE_AUTOMATIC 336
+#define VAR_STATISTICS_INTERVAL 337
+#define VAR_DO_DAEMONIZE 338
+#define VAR_USE_CAPS_FOR_ID 339
+#define VAR_STATISTICS_CUMULATIVE 340
+#define VAR_OUTGOING_PORT_PERMIT 341
+#define VAR_OUTGOING_PORT_AVOID 342
+#define VAR_DLV_ANCHOR_FILE 343
+#define VAR_DLV_ANCHOR 344
+#define VAR_NEG_CACHE_SIZE 345
+#define VAR_HARDEN_REFERRAL_PATH 346
+#define VAR_PRIVATE_ADDRESS 347
+#define VAR_PRIVATE_DOMAIN 348
+#define VAR_REMOTE_CONTROL 349
+#define VAR_CONTROL_ENABLE 350
+#define VAR_CONTROL_INTERFACE 351
+#define VAR_CONTROL_PORT 352
+#define VAR_SERVER_KEY_FILE 353
+#define VAR_SERVER_CERT_FILE 354
+#define VAR_CONTROL_KEY_FILE 355
+#define VAR_CONTROL_CERT_FILE 356
+#define VAR_CONTROL_USE_CERT 357
+#define VAR_EXTENDED_STATISTICS 358
+#define VAR_LOCAL_DATA_PTR 359
+#define VAR_JOSTLE_TIMEOUT 360
+#define VAR_STUB_PRIME 361
+#define VAR_UNWANTED_REPLY_THRESHOLD 362
+#define VAR_LOG_TIME_ASCII 363
+#define VAR_DOMAIN_INSECURE 364
+#define VAR_PYTHON 365
+#define VAR_PYTHON_SCRIPT 366
+#define VAR_VAL_SIG_SKEW_MIN 367
+#define VAR_VAL_SIG_SKEW_MAX 368
+#define VAR_CACHE_MIN_TTL 369
+#define VAR_VAL_LOG_LEVEL 370
+#define VAR_AUTO_TRUST_ANCHOR_FILE 371
+#define VAR_KEEP_MISSING 372
+#define VAR_ADD_HOLDDOWN 373
+#define VAR_DEL_HOLDDOWN 374
+#define VAR_SO_RCVBUF 375
+#define VAR_EDNS_BUFFER_SIZE 376
+#define VAR_PREFETCH 377
+#define VAR_PREFETCH_KEY 378
+#define VAR_SO_SNDBUF 379
+#define VAR_SO_REUSEPORT 380
+#define VAR_HARDEN_BELOW_NXDOMAIN 381
+#define VAR_IGNORE_CD_FLAG 382
+#define VAR_LOG_QUERIES 383
+#define VAR_LOG_REPLIES 384
+#define VAR_LOG_LOCAL_ACTIONS 385
+#define VAR_TCP_UPSTREAM 386
+#define VAR_SSL_UPSTREAM 387
+#define VAR_SSL_SERVICE_KEY 388
+#define VAR_SSL_SERVICE_PEM 389
+#define VAR_SSL_PORT 390
+#define VAR_FORWARD_FIRST 391
+#define VAR_STUB_SSL_UPSTREAM 392
+#define VAR_FORWARD_SSL_UPSTREAM 393
+#define VAR_TLS_CERT_BUNDLE 394
+#define VAR_STUB_FIRST 395
+#define VAR_MINIMAL_RESPONSES 396
+#define VAR_RRSET_ROUNDROBIN 397
+#define VAR_MAX_UDP_SIZE 398
+#define VAR_DELAY_CLOSE 399
+#define VAR_UNBLOCK_LAN_ZONES 400
+#define VAR_INSECURE_LAN_ZONES 401
+#define VAR_INFRA_CACHE_MIN_RTT 402
+#define VAR_DNS64_PREFIX 403
+#define VAR_DNS64_SYNTHALL 404
+#define VAR_DNS64_IGNORE_AAAA 405
+#define VAR_DNSTAP 406
+#define VAR_DNSTAP_ENABLE 407
+#define VAR_DNSTAP_SOCKET_PATH 408
+#define VAR_DNSTAP_IP 409
+#define VAR_DNSTAP_TLS 410
+#define VAR_DNSTAP_TLS_SERVER_NAME 411
+#define VAR_DNSTAP_TLS_CERT_BUNDLE 412
+#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 413
+#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 414
+#define VAR_DNSTAP_SEND_IDENTITY 415
+#define VAR_DNSTAP_SEND_VERSION 416
+#define VAR_DNSTAP_IDENTITY 417
+#define VAR_DNSTAP_VERSION 418
+#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 419
+#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 420
+#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 421
+#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 422
+#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 423
+#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 424
+#define VAR_RESPONSE_IP_TAG 425
+#define VAR_RESPONSE_IP 426
+#define VAR_RESPONSE_IP_DATA 427
+#define VAR_HARDEN_ALGO_DOWNGRADE 428
+#define VAR_IP_TRANSPARENT 429
+#define VAR_IP_DSCP 430
+#define VAR_DISABLE_DNSSEC_LAME_CHECK 431
+#define VAR_IP_RATELIMIT 432
+#define VAR_IP_RATELIMIT_SLABS 433
+#define VAR_IP_RATELIMIT_SIZE 434
+#define VAR_RATELIMIT 435
+#define VAR_RATELIMIT_SLABS 436
+#define VAR_RATELIMIT_SIZE 437
+#define VAR_RATELIMIT_FOR_DOMAIN 438
+#define VAR_RATELIMIT_BELOW_DOMAIN 439
+#define VAR_IP_RATELIMIT_FACTOR 440
+#define VAR_RATELIMIT_FACTOR 441
+#define VAR_SEND_CLIENT_SUBNET 442
+#define VAR_CLIENT_SUBNET_ZONE 443
+#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 444
+#define VAR_CLIENT_SUBNET_OPCODE 445
+#define VAR_MAX_CLIENT_SUBNET_IPV4 446
+#define VAR_MAX_CLIENT_SUBNET_IPV6 447
+#define VAR_MIN_CLIENT_SUBNET_IPV4 448
+#define VAR_MIN_CLIENT_SUBNET_IPV6 449
+#define VAR_MAX_ECS_TREE_SIZE_IPV4 450
+#define VAR_MAX_ECS_TREE_SIZE_IPV6 451
+#define VAR_CAPS_WHITELIST 452
+#define VAR_CACHE_MAX_NEGATIVE_TTL 453
+#define VAR_PERMIT_SMALL_HOLDDOWN 454
+#define VAR_QNAME_MINIMISATION 455
+#define VAR_QNAME_MINIMISATION_STRICT 456
+#define VAR_IP_FREEBIND 457
+#define VAR_DEFINE_TAG 458
+#define VAR_LOCAL_ZONE_TAG 459
+#define VAR_ACCESS_CONTROL_TAG 460
+#define VAR_LOCAL_ZONE_OVERRIDE 461
+#define VAR_ACCESS_CONTROL_TAG_ACTION 462
+#define VAR_ACCESS_CONTROL_TAG_DATA 463
+#define VAR_VIEW 464
+#define VAR_ACCESS_CONTROL_VIEW 465
+#define VAR_VIEW_FIRST 466
+#define VAR_SERVE_EXPIRED 467
+#define VAR_SERVE_EXPIRED_TTL 468
+#define VAR_SERVE_EXPIRED_TTL_RESET 469
+#define VAR_SERVE_EXPIRED_REPLY_TTL 470
+#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 471
+#define VAR_FAKE_DSA 472
+#define VAR_FAKE_SHA1 473
+#define VAR_LOG_IDENTITY 474
+#define VAR_HIDE_TRUSTANCHOR 475
+#define VAR_TRUST_ANCHOR_SIGNALING 476
+#define VAR_AGGRESSIVE_NSEC 477
+#define VAR_USE_SYSTEMD 478
+#define VAR_SHM_ENABLE 479
+#define VAR_SHM_KEY 480
+#define VAR_ROOT_KEY_SENTINEL 481
+#define VAR_DNSCRYPT 482
+#define VAR_DNSCRYPT_ENABLE 483
+#define VAR_DNSCRYPT_PORT 484
+#define VAR_DNSCRYPT_PROVIDER 485
+#define VAR_DNSCRYPT_SECRET_KEY 486
+#define VAR_DNSCRYPT_PROVIDER_CERT 487
+#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 488
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 489
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 490
+#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 491
+#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 492
+#define VAR_PAD_RESPONSES 493
+#define VAR_PAD_RESPONSES_BLOCK_SIZE 494
+#define VAR_PAD_QUERIES 495
+#define VAR_PAD_QUERIES_BLOCK_SIZE 496
+#define VAR_IPSECMOD_ENABLED 497
+#define VAR_IPSECMOD_HOOK 498
+#define VAR_IPSECMOD_IGNORE_BOGUS 499
+#define VAR_IPSECMOD_MAX_TTL 500
+#define VAR_IPSECMOD_WHITELIST 501
+#define VAR_IPSECMOD_STRICT 502
+#define VAR_CACHEDB 503
+#define VAR_CACHEDB_BACKEND 504
+#define VAR_CACHEDB_SECRETSEED 505
+#define VAR_CACHEDB_REDISHOST 506
+#define VAR_CACHEDB_REDISPORT 507
+#define VAR_CACHEDB_REDISTIMEOUT 508
+#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 509
+#define VAR_FOR_UPSTREAM 510
+#define VAR_AUTH_ZONE 511
+#define VAR_ZONEFILE 512
+#define VAR_MASTER 513
+#define VAR_URL 514
+#define VAR_FOR_DOWNSTREAM 515
+#define VAR_FALLBACK_ENABLED 516
+#define VAR_TLS_ADDITIONAL_PORT 517
+#define VAR_LOW_RTT 518
+#define VAR_LOW_RTT_PERMIL 519
+#define VAR_FAST_SERVER_PERMIL 520
+#define VAR_FAST_SERVER_NUM 521
+#define VAR_ALLOW_NOTIFY 522
+#define VAR_TLS_WIN_CERT 523
+#define VAR_TCP_CONNECTION_LIMIT 524
+#define VAR_FORWARD_NO_CACHE 525
+#define VAR_STUB_NO_CACHE 526
+#define VAR_LOG_SERVFAIL 527
+#define VAR_DENY_ANY 528
+#define VAR_UNKNOWN_SERVER_TIME_LIMIT 529
+#define VAR_LOG_TAG_QUERYREPLY 530
+#define VAR_STREAM_WAIT_SIZE 531
+#define VAR_TLS_CIPHERS 532
+#define VAR_TLS_CIPHERSUITES 533
+#define VAR_IPSET 534
+#define VAR_IPSET_NAME_V4 535
+#define VAR_IPSET_NAME_V6 536
+#define VAR_TLS_SESSION_TICKET_KEYS 537
+#define VAR_RPZ 538
+#define VAR_TAGS 539
+#define VAR_RPZ_ACTION_OVERRIDE 540
+#define VAR_RPZ_CNAME_OVERRIDE 541
+#define VAR_RPZ_LOG 542
+#define VAR_RPZ_LOG_NAME 543
+#define YYERRCODE 256
+typedef short YYINT;
+static const YYINT yylhs[] = {                           -1,
+    0,    0,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    2,    3,    3,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+    4,    5,    5,  220,  220,  220,  220,  220,  220,  220,
+    6,    7,    7,  228,  228,  228,  228,  228,  228,   14,
+   15,   15,  235,  235,  235,  235,  235,  235,  235,   22,
+   23,   23,  243,  243,  243,  243,  243,  243,  243,  243,
+  252,  253,  254,  255,  256,   24,   25,   25,  257,  257,
+  257,  257,  257,  257,  257,  257,  257,  257,   27,   28,
+   91,   94,  103,  191,  192,   29,  156,  157,  158,  159,
+  160,  161,  162,  163,  164,  165,   42,   82,   30,   95,
+   96,   53,   75,   90,   31,   32,   35,   36,   33,   34,
+   37,   38,   39,   40,   41,  126,  203,  127,  129,  130,
+  131,  205,  210,  206,  217,  218,  219,  187,   92,   81,
+  107,  124,  125,  215,  212,  128,   43,   44,   45,   46,
+   47,   83,   97,   98,  113,   69,   79,   70,  195,  196,
+  108,   63,   64,  194,   65,   66,  117,  121,  135,  144,
+  170,  147,  216,  118,   76,   48,   49,   50,  105,  136,
+  137,  138,   51,   52,   54,   55,   57,   58,   56,  142,
+   59,   60,   61,   67,   86,  122,  100,  143,   93,  166,
+  101,  102,  119,  120,  213,  106,   62,   84,   87,   68,
+   71,  109,  110,   85,  167,  111,   72,   73,   74,  204,
+  123,  180,  181,  182,  183,  184,  185,  193,  112,   80,
+  114,  115,  116,  168,   77,   78,   99,   88,   89,  104,
+  132,  133,  214,  134,  139,  140,  141,  171,  172,  174,
+  176,  177,  175,  178,  188,  145,  146,  150,  151,  148,
+  149,  152,  153,  155,  154,  207,  209,  208,  169,  179,
+  258,  259,  260,  261,  197,  199,  198,  200,  201,  202,
+  221,  222,  223,  225,  226,  227,  224,  229,  230,  231,
+  232,  233,  234,  244,  245,  246,  247,  251,  248,  249,
+  250,  236,  237,  240,  241,  238,  242,  239,   10,   11,
+   11,  262,  262,  262,  262,  262,  262,  262,  262,  263,
+  265,  264,  270,  266,  267,  268,  269,   12,   13,   13,
+  271,  271,  271,  271,  271,  271,  271,  271,  271,  271,
+  271,  271,  271,  271,  271,  271,  271,  271,  272,  273,
+  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
+  284,  285,  286,  287,  288,  289,    8,    9,    9,  290,
+  291,  173,  186,  189,  190,   16,   17,   17,  292,  292,
+  292,  292,  292,  292,  292,  292,  292,  292,  293,  294,
+  295,  297,  298,  296,  299,  300,  301,  302,   18,   19,
+   19,  303,  303,  303,  303,  303,  304,  305,  306,  307,
+  308,  211,   20,   21,   21,  309,  309,  310,  311,
 };
-#endif
-
-# ifdef YYPRINT
-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
-   (internal) symbol number NUM (which must be that of a token).  */
-static const yytype_uint16 yytoknum[] =
-{
-       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,   441,   442,   443,   444,
-     445,   446,   447,   448,   449,   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,   493,   494,
-     495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
-     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
-     515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
-     525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
-     535,   536,   537,   538,   539,   540
+static const YYINT yylen[] = {                            2,
+    0,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    1,    2,    0,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    2,    0,    1,    1,    1,    1,    1,    1,    1,
+    1,    2,    0,    1,    1,    1,    1,    1,    1,    1,
+    2,    0,    1,    1,    1,    1,    1,    1,    1,    1,
+    2,    0,    1,    1,    1,    1,    1,    1,    1,    1,
+    2,    2,    2,    2,    2,    1,    2,    0,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    3,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    3,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    3,    3,
+    4,    4,    4,    3,    3,    2,    2,    2,    2,    2,
+    2,    3,    3,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    3,    3,    3,    2,    2,    2,    1,    2,
+    0,    1,    1,    1,    1,    1,    1,    1,    1,    2,
+    2,    2,    2,    2,    2,    2,    2,    1,    2,    0,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    1,    2,    0,    1,
+    2,    2,    2,    3,    3,    1,    2,    0,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,    1,    2,
+    0,    1,    1,    1,    1,    1,    2,    2,    2,    2,
+    2,    3,    1,    2,    0,    1,    1,    2,    2,
 };
-# endif
-
-#define YYPACT_NINF -270
-
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-270)))
-
-#define YYTABLE_NINF -1
-
-#define yytable_value_is_error(Yytable_value) \
-  0
-
-  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-     STATE-NUM.  */
-static const yytype_int16 yypact[] =
-{
-    -270,     0,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,   269,   -42,
-     -37,   -41,   -21,   -43,   -44,   -87,  -106,  -205,  -229,  -269,
-       2,     3,     4,    12,    24,    25,    26,    27,    28,    31,
-      32,    33,    34,    36,    37,    38,    39,    40,    50,    51,
-      52,    53,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    84,    87,    88,    91,    93,    94,    95,    96,
-      97,    98,    99,   100,   102,   103,   104,   105,   106,   107,
-     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,   120,   123,   124,   125,   126,   127,   128,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-     140,   141,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-     192,   193,   194,   195,   196,   197,   198,   199,   204,   205,
-     206,   207,   208,   209,   210,   212,   213,   214,   215,   217,
-     219,   222,   234,   236,   237,   238,   239,   240,   241,   242,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-     264,   265,   267,   268,   303,   304,   305,   306,   310,   311,
-     312,   354,   355,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,   356,   357,   358,
-     359,   360,   361,   362,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,   366,   370,   371,   396,   397,   398,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,   400,   411,   412,   413,   414,
-     415,   416,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-     417,   418,   419,   420,   421,   422,   423,   424,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,   425,   426,   427,
-     428,   429,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,   469,   471,   487,   488,   489,   490,   491,
-     492,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-     493,   494,   495,   496,   497,   504,   505,   506,   507,   508,
-     509,   511,   512,   513,   514,   515,   516,   517,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,   520,  -270,  -270,
-     523,   526,   527,   535,   536,   537,   539,   540,   541,   542,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,   543,   544,   545,   546,   547,  -270,  -270,  -270,  -270,
-    -270,  -270,   548,   549,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,   550,   551,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,   552,   553,   554,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,   555,   556,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,   557,   558,
-     559,   560,   561,   562,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,   563,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,   564,  -270,  -270,   565,   566,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,   567,   568,   569,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270
+static const YYINT yydefred[] = {                         1,
+    0,   15,  211,  221,  489,  547,  508,  230,  556,  579,
+  240,  593,  256,    2,   17,  213,  223,  549,  491,  510,
+  232,  558,  581,  595,  242,  258,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,   16,   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,
+  186,  187,  188,  189,  190,  191,  192,  193,  194,  195,
+  196,  197,  198,  199,  200,  201,  202,  203,  204,  205,
+  206,  207,  208,  209,  210,    0,    0,    0,    0,    0,
+    0,    0,  212,  214,  215,  216,  217,  218,  219,  220,
+    0,    0,    0,    0,    0,    0,  222,  224,  225,  226,
+  227,  228,  229,    0,  548,  550,    0,    0,    0,    0,
+    0,    0,    0,    0,  490,  492,  493,  494,  495,  496,
+  497,  498,  499,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,  509,  511,  512,  513,  514,  515,  516,  517,  518,
+  519,  520,  521,  522,  523,  524,  525,  526,  527,  528,
+    0,    0,    0,    0,    0,    0,    0,  231,  233,  234,
+  235,  236,  237,  238,  239,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,  557,  559,  560,  561,  562,
+  563,  564,  565,  566,  567,  568,    0,    0,    0,    0,
+    0,  580,  582,  583,  584,  585,  586,    0,    0,  594,
+  596,  597,    0,    0,    0,    0,    0,    0,    0,    0,
+  241,  243,  244,  245,  246,  247,  248,  249,  250,    0,
+    0,    0,    0,    0,  259,  260,  262,  263,  264,  261,
+  265,  266,  267,  268,  257,  270,  269,  276,  289,  287,
+  299,  295,  296,  300,  297,  298,  301,  302,  303,  304,
+  305,  327,  328,  329,  330,  331,  356,  357,  358,  363,
+  364,  292,  365,  366,  369,  367,  368,  371,  372,  373,
+  387,  342,  343,  345,  346,  374,  390,  336,  338,  391,
+  397,  398,  399,  293,  355,  415,  416,  337,  410,  320,
+  288,  332,  388,  394,  375,    0,    0,  419,  294,  271,
+  319,  379,  272,  290,  291,  333,  334,  417,  377,  381,
+  382,  273,  420,  359,  386,  321,  341,  392,  393,  396,
+  409,  335,  413,  411,  412,  347,  354,  383,  384,  348,
+  349,  376,  401,  322,  323,  326,  306,  308,  309,  310,
+  311,  312,  421,  422,  424,  360,  361,  362,  370,  425,
+  426,  427,    0,    0,    0,  378,  350,  352,  552,  436,
+  440,  438,  437,  441,  439,    0,    0,  444,  445,  277,
+  278,  279,  280,  281,  282,  283,  284,  285,  286,  380,
+  395,  414,  449,  450,  351,  428,    0,    0,    0,    0,
+    0,    0,  402,  403,  404,  405,  406,  407,  408,  553,
+  344,  339,  400,  318,  274,  275,  340,  455,  457,  456,
+  458,  459,  460,  307,  314,  446,  448,  447,  313,    0,
+  325,  385,  423,  324,  353,  315,  316,  317,  461,  462,
+  463,  467,  466,  464,  465,  468,  469,  470,  471,  473,
+  472,  551,  500,  502,  501,  504,  505,  506,  507,  503,
+  529,  530,  531,  532,  533,  534,  535,  536,  537,  538,
+  539,  540,  541,  542,  543,  544,  545,  546,  482,    0,
+  486,  487,    0,    0,  488,  569,  570,  571,  574,  572,
+  573,  575,  576,  577,  578,  587,  588,  589,  590,  591,
+  598,  599,  474,  480,  475,  476,  477,  479,  481,  478,
+  251,  252,  253,  254,  255,  389,  418,  435,  554,  555,
+  442,  443,  429,  430,    0,    0,    0,  434,  592,  483,
+  484,  485,  433,  431,  432,
 };
-
-  /* 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 yytype_uint16 yydefact[] =
-{
-       2,     0,     1,    16,   212,   222,   486,   544,   505,   231,
-     553,   576,   241,   590,   257,     3,    18,   214,   224,   233,
-     243,   259,   488,   507,   546,   555,   578,   592,     4,     5,
-       6,    10,    14,    15,     8,     9,     7,    11,    12,    13,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    17,    19,    20,    83,    86,    95,   183,
-     184,    21,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,    34,    74,    22,    87,    88,    45,    67,    82,
-      23,    24,    27,    28,    25,    26,    29,    30,    31,    32,
-      33,   118,   195,   119,   121,   122,   123,   197,   202,   198,
-     209,   210,   211,   179,    84,    73,    99,   116,   117,   207,
-     204,   120,    35,    36,    37,    38,    39,    75,    89,    90,
-     105,    61,    71,    62,   187,   188,   100,    55,    56,   186,
-      57,    58,   109,   113,   127,   136,   162,   139,   208,   110,
-      68,    40,    41,    42,    97,   128,   129,   130,    43,    44,
-      46,    47,    49,    50,    48,   134,    51,    52,    53,    59,
-      78,   114,    92,   135,    85,   158,    93,    94,   111,   112,
-     205,    98,    54,    76,    79,    60,    63,   101,   102,    77,
-     159,   103,    64,    65,    66,   196,   115,   172,   173,   174,
-     175,   176,   177,   185,   104,    72,   106,   107,   108,   160,
-      69,    70,    91,    80,    81,    96,   124,   125,   206,   126,
-     131,   132,   133,   163,   164,   166,   168,   169,   167,   170,
-     180,   137,   138,   142,   143,   140,   141,   144,   145,   147,
-     146,   199,   201,   200,   161,   171,   189,   191,   190,   192,
-     193,   194,   165,   178,   181,   182,   203,     0,     0,     0,
-       0,     0,     0,     0,   213,   215,   216,   217,   219,   220,
-     221,   218,     0,     0,     0,     0,     0,     0,   223,   225,
-     226,   227,   228,   229,   230,     0,     0,     0,     0,     0,
-       0,     0,   232,   234,   235,   238,   239,   236,   240,   237,
-       0,     0,     0,     0,     0,     0,     0,     0,   242,   244,
-     245,   246,   247,   251,   248,   249,   250,     0,     0,     0,
-       0,     0,   262,   266,   267,   268,   269,   258,   260,   261,
-     263,   264,   265,     0,     0,     0,     0,     0,     0,     0,
-       0,   487,   489,   491,   490,   496,   492,   493,   494,   495,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   506,   508,
-     509,   510,   511,   512,   513,   514,   515,   516,   517,   518,
-     519,   520,   521,   522,   523,   524,   525,     0,   545,   547,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     554,   556,   557,   558,   560,   561,   559,   562,   563,   564,
-     565,     0,     0,     0,     0,     0,   577,   579,   580,   581,
-     582,   583,     0,     0,   591,   593,   594,   271,   270,   277,
-     290,   288,   300,   296,   297,   301,   298,   299,   302,   303,
-     304,   305,   306,   328,   329,   330,   331,   332,   357,   358,
-     359,   364,   365,   293,   366,   367,   370,   368,   369,   372,
-     373,   374,   388,   343,   344,   346,   347,   375,   391,   337,
-     339,   392,   398,   399,   400,   294,   356,   416,   417,   338,
-     411,   321,   289,   333,   389,   395,   376,     0,     0,   420,
-     295,   272,   320,   380,   273,   291,   292,   334,   335,   418,
-     378,   382,   383,   274,   421,   360,   387,   322,   342,   393,
-     394,   397,   410,   336,   414,   412,   413,   348,   355,   384,
-     385,   349,   350,   377,   402,   323,   324,   327,   307,   309,
-     310,   311,   312,   313,   422,   423,   425,   361,   362,   363,
-     371,   426,   427,   428,     0,     0,     0,   379,   351,   353,
-     549,   437,   441,   439,   438,   442,   440,     0,     0,   445,
-     446,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     287,   381,   396,   415,   450,   451,   352,   429,     0,     0,
-       0,     0,     0,     0,   403,   404,   405,   406,   407,   408,
-     409,   550,   345,   340,   401,   319,   275,   276,   341,   452,
-     454,   453,   455,   456,   457,   308,   315,   447,   449,   448,
-     314,     0,   326,   386,   424,   325,   354,   316,   317,   318,
-     458,   459,   460,   464,   463,   461,   462,   465,   466,   467,
-     468,   470,   469,   479,     0,   483,   484,     0,     0,   485,
-     471,   477,   472,   473,   474,   476,   478,   475,   252,   253,
-     254,   255,   256,   497,   499,   498,   501,   502,   503,   504,
-     500,   526,   527,   528,   529,   530,   531,   532,   533,   534,
-     535,   536,   537,   538,   539,   540,   541,   542,   543,   548,
-     566,   567,   568,   571,   569,   570,   572,   573,   574,   575,
-     584,   585,   586,   587,   588,   595,   596,   390,   419,   436,
-     551,   552,   443,   444,   430,   431,     0,     0,     0,   435,
-     589,   480,   481,   482,   434,   432,   433
+static const YYINT yydgoto[] = {                          1,
+   14,   15,   27,   16,   28,   17,   29,   18,   30,   19,
+   31,   20,   32,   21,   33,   22,   34,   23,   35,   24,
+   36,   25,   37,   26,   38,  232,  233,  234,  235,  236,
+  237,  238,  239,  240,  241,  242,  243,  244,  245,  246,
+  247,  248,  249,  250,  251,  252,  253,  254,  255,  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,  433,
+  434,  435,  436,  437,  438,  439,  440,  447,  448,  449,
+  450,  451,  452,  453,  518,  519,  520,  521,  522,  523,
+  524,  525,  571,  572,  573,  574,  575,  576,  577,  578,
+  579,  590,  591,  592,  593,  594,  595,    0,    0,    0,
+    0,  465,  466,  467,  468,  469,  470,  471,  472,  473,
+  492,  493,  494,  495,  496,  497,  498,  499,  500,  501,
+  502,  503,  504,  505,  506,  507,  508,  509,  510,  455,
+  456,  536,  537,  538,  539,  540,  541,  542,  543,  544,
+  545,  546,  552,  553,  554,  555,  556,  557,  560,  561,
+  562,
 };
-
-  /* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
-{
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,   -23,   570,   571,
-     572,   573,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,
-    -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270,  -270
+static const YYINT yysindex[] = {                         0,
+ -248,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,  369, -290, -280, -357,
+ -322, -335, -298, -445, -485, -529, -240, -293, -252, -239,
+ -216, -215, -214, -212, -211, -210, -209, -208, -205, -204,
+ -202, -201, -200, -199, -198, -197, -196, -195, -194, -174,
+ -173, -172, -167, -166, -165, -164, -161, -160, -158, -157,
+ -156, -155, -154, -152, -150, -149, -148, -146, -145, -144,
+ -143, -142, -141, -140, -139, -138, -137, -134, -133, -132,
+ -131, -130, -129, -128, -127, -126, -125, -124, -123, -122,
+ -121, -120, -119, -118, -117, -116, -115, -114, -113, -112,
+ -111, -110, -109, -108, -107, -105, -104, -103, -102, -101,
+ -100,  -99,  -98,  -97,  -95,  -94,  -93,  -92,  -91,  -90,
+  -89,  -88,  -87,  -86,  -85,  -84,  -83,  -82,  -81,  -80,
+  -79,  -78,  -77,  -76,  -75,  -74,  -73,  -72,  -71,  -70,
+  -69,  -68,  -67,  -66,  -65,  -64,  -63,  -62,  -61,  -60,
+  -59,  -58,  -57,  -56,  -55,  -54,  -53,  -52,  -51,  -50,
+  -49,  -47,  -46,  -42,  -41,  -40,  -39,  -38,  -37,  -36,
+  -34,  -33,  -32,  -31,  -29,  -27,  -26,  -25,  -24,  -23,
+  -22,  -21,  -20,  -13,  -12,  -11,  -10,   -8,   -7,   -6,
+   -5,   -4,   -3,   -2,    7,   19,   20,   21,   23,   24,
+   25,   27,   28,   29,   30,   31,   32,   33,   34,   35,
+   40,   41,   46,   47,   52,   53,   58,   59,   60,   61,
+   62,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,   63,   64,   65,   66,   67,
+   68,   69,    0,    0,    0,    0,    0,    0,    0,    0,
+   70,   71,   72,   73,   74,   75,    0,    0,    0,    0,
+    0,    0,    0,   76,    0,    0,   77,   78,   79,   80,
+   81,   82,   83,   84,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   85,   90,   91,   92,  106,  107,  108,
+  109,  110,  111,  112,  113,  118,  119,  120,  121,  122,
+  123,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+  124,  125,  126,  127,  132,  133,  138,    0,    0,    0,
+    0,    0,    0,    0,    0,  139,  140,  141,  142,  147,
+  148,  149,  150,  151,  152,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,  153,  154,  159,  160,
+  161,    0,    0,    0,    0,    0,    0,  162,  163,    0,
+    0,    0,  164,  165,  166,  167,  168,  169,  170,  171,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,  172,
+  173,  174,  175,  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,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,  177,  182,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,  183,  184,  185,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,  186,  187,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,  188,  189,  190,  191,
+  192,  193,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,  198,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,  199,
+    0,    0,  200,  205,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,  206,  207,  208,    0,    0,    0,
+    0,    0,    0,    0,    0,
 };
-
-  /* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,     1,    15,    16,    28,   233,    17,    29,   434,    18,
-      30,   448,    19,    31,   462,    20,    32,   478,   492,   493,
-     494,   495,   496,    21,    33,   497,   234,   235,   236,   237,
-     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
-     248,   249,   250,   251,   252,   253,   254,   255,   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,   435,   436,   437,   438,   439,   440,
-     441,   449,   450,   451,   452,   453,   454,   479,   480,   481,
-     482,   483,   484,   485,   486,   463,   464,   465,   466,   467,
-     468,   469,    22,    34,   511,   512,   513,   514,   515,   516,
-     517,   518,   519,    23,    35,   538,   539,   540,   541,   542,
-     543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
-     553,   554,   555,   556,    24,    36,   558,   559,   422,   423,
-     424,   425,    25,    37,   570,   571,   572,   573,   574,   575,
-     576,   577,   578,   579,   580,    26,    38,   586,   587,   588,
-     589,   590,   591,   426,    27,    39,   594,   595,   596
+static const YYINT yyrindex[] = {                         0,
+    0,    0,    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,    2,    3,    4,
+   13,   14,   15,   16,   93,   94,   95,   96,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,
 };
-
-  /* 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 yytype_uint16 yytable[] =
-{
-       2,   470,   427,   455,   428,   429,   557,   442,   592,   593,
-     498,     3,   597,   598,   599,   443,   444,   581,   582,   583,
-     584,   585,   600,   470,   560,   561,   562,   563,   564,   565,
-     566,   567,   568,   569,   601,   602,   603,   604,   605,   456,
-     457,   606,   607,   608,   609,     4,   610,   611,   612,   613,
-     614,     5,   503,   504,   505,   506,   507,   508,   509,   510,
-     615,   616,   617,   618,   458,   430,   520,   521,   522,   523,
-     524,   525,   526,   527,   528,   529,   530,   531,   532,   533,
-     534,   535,   536,   537,   619,   620,   621,   622,   623,   624,
-     625,   626,   627,   628,   629,     6,   431,   630,   631,   432,
-     445,   632,   446,   633,   634,   635,   636,   637,   638,   639,
-     640,     7,   641,   642,   643,   644,   645,   646,   647,   648,
-     649,   650,   651,   652,   653,   654,   655,   656,   657,   658,
-     659,   459,   460,   660,   661,   662,   663,   664,   665,   666,
-     667,   668,   669,   670,   671,   672,   673,   674,   675,   676,
-     677,   678,     8,   679,   680,   681,   682,   683,   684,   685,
-     686,   687,   688,   689,   690,   691,   692,   693,   694,   695,
-     696,   461,   697,   698,   699,   700,   701,   702,   703,   704,
-     705,   706,   707,   708,   709,   710,   711,   712,   713,   714,
-     715,   716,   717,   718,   719,   720,   721,   722,   723,   724,
-     725,   726,   727,   728,   729,   730,   731,   732,   733,   734,
-       9,   472,   473,   474,   735,   736,   737,   738,   739,   740,
-     741,   477,   742,   743,   744,   745,   433,   746,    10,   747,
-     447,   471,   748,   472,   473,   474,   475,   476,   487,   488,
-     489,   490,   491,   477,   749,    11,   750,   751,   752,   753,
-     754,   755,   756,    12,   757,   758,   759,   760,   761,   762,
-     763,   764,   765,   766,   767,   768,   769,   770,   771,   772,
-     773,   774,   775,   776,   777,   778,    13,   779,   780,     0,
-      14,    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,   781,   782,   783,   784,    72,    73,    74,
-     785,   786,   787,    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,   788,   789,   790,   791,   792,   793,
-     794,   795,   796,   116,   117,   118,   797,   119,   120,   121,
-     798,   799,   122,   123,   124,   125,   126,   127,   128,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-     140,   141,   142,   143,   144,   145,   800,   801,   802,   146,
-     803,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   804,   805,   806,   807,   808,   809,   810,   811,   812,
-     813,   814,   815,   816,   817,   818,   819,   820,   821,   822,
-     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,   186,
-     187,   188,   189,   190,   191,   192,   193,   194,   195,   823,
-     196,   824,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   825,   826,   827,
-     828,   829,   830,   831,   832,   833,   834,   835,   212,   213,
-     214,   215,   216,   217,   836,   837,   838,   839,   840,   841,
-     218,   842,   843,   844,   845,   846,   847,   848,   219,   220,
-     849,   221,   222,   850,   223,   224,   851,   852,   225,   226,
-     227,   228,   229,   230,   231,   853,   854,   855,   232,   856,
-     857,   858,   859,   860,   861,   862,   863,   864,   865,   866,
-     867,   868,   869,   870,   871,   872,   873,   874,   875,   876,
-     877,   878,   879,   880,   881,   882,   883,   884,   885,   886,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   499,   500,   501,   502
+static const YYINT yygindex[] = {                         0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,  -14,  226,  227,  239,    0,    0,    0,
+  319,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,
 };
-
-static const yytype_int16 yycheck[] =
-{
-       0,    44,    44,    44,    46,    47,   112,    44,   277,   278,
-      33,    11,    10,    10,    10,    52,    53,   246,   247,   248,
-     249,   250,    10,    44,   229,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,    10,    10,    10,    10,    10,    80,
-      81,    10,    10,    10,    10,    45,    10,    10,    10,    10,
-      10,    51,    96,    97,    98,    99,   100,   101,   102,   103,
-      10,    10,    10,    10,   105,   107,   153,   154,   155,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-     167,   168,   169,   170,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    95,   138,    10,    10,   141,
-     137,    10,   139,    10,    10,    10,    10,    10,    10,    10,
-      10,   111,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,   172,   173,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,   152,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,   212,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-     210,   254,   255,   256,    10,    10,    10,    10,    10,    10,
-      10,   264,    10,    10,    10,    10,   268,    10,   228,    10,
-     267,   252,    10,   254,   255,   256,   257,   258,   281,   282,
-     283,   284,   285,   264,    10,   245,    10,    10,    10,    10,
-      10,    10,    10,   253,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,   276,    10,    10,    -1,
-     280,    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,    10,    10,    10,    10,    48,    49,    50,
-      10,    10,    10,    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,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,   104,   105,   106,    10,   108,   109,   110,
-      10,    10,   113,   114,   115,   116,   117,   118,   119,   120,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-     131,   132,   133,   134,   135,   136,    10,    10,    10,   140,
-      10,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,    10,
-     211,    10,   213,   214,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,   239,   240,
-     241,   242,   243,   244,    10,    10,    10,    10,    10,    10,
-     251,    10,    10,    10,    10,    10,    10,    10,   259,   260,
-      10,   262,   263,    10,   265,   266,    10,    10,   269,   270,
-     271,   272,   273,   274,   275,    10,    10,    10,   279,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    33,    33,    33,    33
+#define YYTABLESIZE 906
+static const YYINT yytable[] = {                        511,
+    3,    4,    5,    6,  563,  558,  559,  426,  454,  427,
+  428,  596,    7,    8,    9,   10,    2,  441,  547,  548,
+  549,  550,  551,  585,  597,  442,  443,  457,  458,  459,
+  460,  461,  462,  463,  464,  512,  513,  526,  527,  528,
+  529,  530,  531,  532,  533,  534,  535,  598,  599,  600,
+    3,  601,  602,  603,  604,  605,    4,  563,  606,  607,
+  514,  608,  609,  610,  611,  612,  613,  614,  615,  616,
+  429,  474,  475,  476,  477,  478,  479,  480,  481,  482,
+  483,  484,  485,  486,  487,  488,  489,  490,  491,  617,
+  618,  619,   11,   12,   13,   14,  620,  621,  622,  623,
+    5,  430,  624,  625,  431,  626,  627,  628,  629,  630,
+  444,  631,  445,  632,  633,  634,    6,  635,  636,  637,
+  638,  639,  640,  641,  642,  643,  644,  515,  516,  645,
+  646,  647,  648,  649,  650,  651,  652,  653,  654,  655,
+  656,  657,  658,  659,  660,  661,  662,  663,  664,  665,
+  666,  667,  668,  669,  670,  671,  672,    7,  673,  674,
+  675,  676,  677,  678,  679,  680,  681,  517,  682,  683,
+  684,  685,  686,  687,  688,  689,  690,  691,  692,  693,
+  694,  695,  696,  697,  698,  699,  700,  701,  702,  703,
+  704,  705,  706,  707,  708,  709,  710,  711,  712,  713,
+  714,  715,  716,  717,  718,  719,  720,  721,  722,  723,
+  724,  725,  726,  727,  728,    8,  729,  730,  565,  566,
+  567,  731,  732,  733,  734,  735,  736,  737,  570,  738,
+  739,  740,  741,    9,  742,  432,  743,  744,  745,  746,
+  747,  748,  749,  750,  446,  580,  581,  582,  583,  584,
+  751,  752,  753,  754,   10,  755,  756,  757,  758,  759,
+  760,  761,   11,  586,  587,    3,    4,    5,    6,  564,
+  762,  565,  566,  567,  568,  569,  588,    7,    8,    9,
+   10,  570,  763,  764,  765,   12,  766,  767,  768,   13,
+  769,  770,  771,  772,  773,  774,  775,  776,  777,    3,
+    4,    5,    6,  778,  779,    3,    4,    5,    6,  780,
+  781,    7,    8,    9,   10,  782,  783,    7,    8,    9,
+   10,  784,  785,  786,  787,  788,  789,  790,  791,  792,
+  793,  794,  795,  796,  797,  798,  799,  800,  801,  802,
+  803,  804,  805,  806,  807,  808,  809,  810,  811,    3,
+    4,    5,    6,  812,  813,  814,  589,   11,   12,   13,
+   14,    7,    8,    9,   10,    3,    4,    5,    6,  815,
+  816,  817,  818,  819,  820,  821,  822,    7,    8,    9,
+   10,  823,  824,  825,  826,  827,  828,  829,  830,  831,
+  832,   11,   12,   13,   14,  833,  834,   11,   12,   13,
+   14,  835,  836,  837,  838,  839,    3,    4,    5,    6,
+  840,  841,  842,  843,  844,  845,  846,  847,    7,    8,
+    9,   10,  848,  849,  850,  851,  852,  853,  854,  855,
+  856,  857,  858,  859,  860,  861,  862,  863,  864,  865,
+  866,   11,   12,   13,   14,  867,  868,  869,  870,  871,
+  872,  873,  874,  875,  876,  877,  878,   11,   12,   13,
+   14,  879,  880,  881,    3,    4,    5,    6,  882,  883,
+  884,  885,    0,    0,    0,    0,    7,    8,    9,   10,
+    0,    0,    3,    4,    5,    6,    0,    0,    0,    0,
+    0,    0,    0,    0,    7,    8,    9,   10,   11,   12,
+   13,   14,    0,    3,    4,    5,    6,    0,    0,    0,
+    0,    3,    4,    5,    6,    7,    8,    9,   10,    0,
+    0,    0,    0,    7,    8,    9,   10,    0,    0,    0,
+    0,    0,    0,    0,    3,    4,    5,    6,    3,    4,
+    5,    6,    0,    0,    0,    0,    7,    8,    9,   10,
+    7,    8,    9,   10,    0,    0,   11,   12,   13,   14,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,   11,   12,   13,   14,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,   11,   12,   13,   14,    0,
+    0,    0,    0,   11,   12,   13,   14,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,   11,   12,   13,   14,
+   11,   12,   13,   14,   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,    0,    0,    0,    0,
+   71,   72,   73,    0,    0,    0,   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,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,  115,  116,  117,    0,
+  118,  119,  120,    0,    0,  121,  122,  123,  124,  125,
+  126,  127,  128,  129,  130,  131,  132,  133,  134,  135,
+  136,  137,  138,  139,  140,  141,  142,  143,  144,    0,
+    0,    0,  145,    0,  146,  147,  148,  149,  150,  151,
+  152,  153,  154,  155,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,  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,  186,  187,  188,  189,  190,  191,  192,
+  193,  194,    0,  195,    0,  196,  197,  198,  199,  200,
+  201,  202,  203,  204,  205,  206,  207,  208,  209,  210,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,  211,  212,  213,  214,  215,
+  216,    0,    0,    0,    0,    0,    0,  217,    0,    0,
+    0,    0,    0,    0,    0,  218,  219,    0,  220,  221,
+    0,  222,  223,    0,    0,  224,  225,  226,  227,  228,
+  229,  230,    0,    0,    0,  231,
 };
-
-  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-     symbol of state STATE-NUM.  */
-static const yytype_uint16 yystos[] =
-{
-       0,   287,     0,    11,    45,    51,    95,   111,   152,   210,
-     228,   245,   253,   276,   280,   288,   289,   292,   295,   298,
-     301,   309,   528,   539,   560,   568,   581,   590,   290,   293,
-     296,   299,   302,   310,   529,   540,   561,   569,   582,   591,
-      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,    48,    49,    50,    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,   104,   105,   106,   108,
-     109,   110,   113,   114,   115,   116,   117,   118,   119,   120,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-     131,   132,   133,   134,   135,   136,   140,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   211,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   239,   240,   241,   242,   243,   244,   251,   259,
-     260,   262,   263,   265,   266,   269,   270,   271,   272,   273,
-     274,   275,   279,   291,   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,   441,   442,   443,   444,   445,   446,   447,
-     448,   449,   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,   493,   494,   495,   496,   497,
-     498,   499,   564,   565,   566,   567,   589,    44,    46,    47,
-     107,   138,   141,   268,   294,   500,   501,   502,   503,   504,
-     505,   506,    44,    52,    53,   137,   139,   267,   297,   507,
-     508,   509,   510,   511,   512,    44,    80,    81,   105,   172,
-     173,   212,   300,   521,   522,   523,   524,   525,   526,   527,
-      44,   252,   254,   255,   256,   257,   258,   264,   303,   513,
-     514,   515,   516,   517,   518,   519,   520,   281,   282,   283,
-     284,   285,   304,   305,   306,   307,   308,   311,   513,   514,
-     515,   516,   517,    96,    97,    98,    99,   100,   101,   102,
-     103,   530,   531,   532,   533,   534,   535,   536,   537,   538,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   541,   542,
-     543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
-     553,   554,   555,   556,   557,   558,   559,   112,   562,   563,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     570,   571,   572,   573,   574,   575,   576,   577,   578,   579,
-     580,   246,   247,   248,   249,   250,   583,   584,   585,   586,
-     587,   588,   277,   278,   592,   593,   594,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10
+static const YYINT yycheck[] = {                        298,
+    0,    0,    0,    0,  298,  535,  536,  298,  366,  300,
+  301,  264,    0,    0,    0,    0,  265,  298,  504,  505,
+  506,  507,  508,   38,  264,  306,  307,  350,  351,  352,
+  353,  354,  355,  356,  357,  334,  335,  483,  484,  485,
+  486,  487,  488,  489,  490,  491,  492,  264,  264,  264,
+  299,  264,  264,  264,  264,  264,  305,  298,  264,  264,
+  359,  264,  264,  264,  264,  264,  264,  264,  264,  264,
+  361,  407,  408,  409,  410,  411,  412,  413,  414,  415,
+  416,  417,  418,  419,  420,  421,  422,  423,  424,  264,
+  264,  264,    0,    0,    0,    0,  264,  264,  264,  264,
+  349,  392,  264,  264,  395,  264,  264,  264,  264,  264,
+  391,  264,  393,  264,  264,  264,  365,  264,  264,  264,
+  264,  264,  264,  264,  264,  264,  264,  426,  427,  264,
+  264,  264,  264,  264,  264,  264,  264,  264,  264,  264,
+  264,  264,  264,  264,  264,  264,  264,  264,  264,  264,
+  264,  264,  264,  264,  264,  264,  264,  406,  264,  264,
+  264,  264,  264,  264,  264,  264,  264,  466,  264,  264,
+  264,  264,  264,  264,  264,  264,  264,  264,  264,  264,
+  264,  264,  264,  264,  264,  264,  264,  264,  264,  264,
+  264,  264,  264,  264,  264,  264,  264,  264,  264,  264,
+  264,  264,  264,  264,  264,  264,  264,  264,  264,  264,
+  264,  264,  264,  264,  264,  464,  264,  264,  512,  513,
+  514,  264,  264,  264,  264,  264,  264,  264,  522,  264,
+  264,  264,  264,  482,  264,  526,  264,  264,  264,  264,
+  264,  264,  264,  264,  525,  539,  540,  541,  542,  543,
+  264,  264,  264,  264,  503,  264,  264,  264,  264,  264,
+  264,  264,  511,   38,   38,  265,  265,  265,  265,  510,
+  264,  512,  513,  514,  515,  516,   38,  265,  265,  265,
+  265,  522,  264,  264,  264,  534,  264,  264,  264,  538,
+  264,  264,  264,  264,  264,  264,  264,  264,  264,  299,
+  299,  299,  299,  264,  264,  305,  305,  305,  305,  264,
+  264,  299,  299,  299,  299,  264,  264,  305,  305,  305,
+  305,  264,  264,  264,  264,  264,  264,  264,  264,  264,
+  264,  264,  264,  264,  264,  264,  264,  264,  264,  264,
+  264,  264,  264,  264,  264,  264,  264,  264,  264,  349,
+  349,  349,  349,  264,  264,  264,   38,  265,  265,  265,
+  265,  349,  349,  349,  349,  365,  365,  365,  365,  264,
+  264,  264,  264,  264,  264,  264,  264,  365,  365,  365,
+  365,  264,  264,  264,  264,  264,  264,  264,  264,  264,
+  264,  299,  299,  299,  299,  264,  264,  305,  305,  305,
+  305,  264,  264,  264,  264,  264,  406,  406,  406,  406,
+  264,  264,  264,  264,  264,  264,  264,  264,  406,  406,
+  406,  406,  264,  264,  264,  264,  264,  264,  264,  264,
+  264,  264,  264,  264,  264,  264,  264,  264,  264,  264,
+  264,  349,  349,  349,  349,  264,  264,  264,  264,  264,
+  264,  264,  264,  264,  264,  264,  264,  365,  365,  365,
+  365,  264,  264,  264,  464,  464,  464,  464,  264,  264,
+  264,  264,   -1,   -1,   -1,   -1,  464,  464,  464,  464,
+   -1,   -1,  482,  482,  482,  482,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,  482,  482,  482,  482,  406,  406,
+  406,  406,   -1,  503,  503,  503,  503,   -1,   -1,   -1,
+   -1,  511,  511,  511,  511,  503,  503,  503,  503,   -1,
+   -1,   -1,   -1,  511,  511,  511,  511,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,  534,  534,  534,  534,  538,  538,
+  538,  538,   -1,   -1,   -1,   -1,  534,  534,  534,  534,
+  538,  538,  538,  538,   -1,   -1,  464,  464,  464,  464,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,  482,  482,  482,  482,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  503,  503,  503,  503,   -1,
+   -1,   -1,   -1,  511,  511,  511,  511,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,  534,  534,  534,  534,
+  538,  538,  538,  538,  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,   -1,   -1,   -1,   -1,
+  302,  303,  304,   -1,   -1,   -1,  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,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,  358,  359,  360,   -1,
+  362,  363,  364,   -1,   -1,  367,  368,  369,  370,  371,
+  372,  373,  374,  375,  376,  377,  378,  379,  380,  381,
+  382,  383,  384,  385,  386,  387,  388,  389,  390,   -1,
+   -1,   -1,  394,   -1,  396,  397,  398,  399,  400,  401,
+  402,  403,  404,  405,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,  425,  426,  427,  428,  429,  430,  431,
+  432,  433,  434,  435,  436,  437,  438,  439,  440,  441,
+  442,  443,  444,  445,  446,  447,  448,  449,  450,  451,
+  452,  453,  454,  455,  456,  457,  458,  459,  460,  461,
+  462,  463,   -1,  465,   -1,  467,  468,  469,  470,  471,
+  472,  473,  474,  475,  476,  477,  478,  479,  480,  481,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  497,  498,  499,  500,  501,
+  502,   -1,   -1,   -1,   -1,   -1,   -1,  509,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  517,  518,   -1,  520,  521,
+   -1,  523,  524,   -1,   -1,  527,  528,  529,  530,  531,
+  532,  533,   -1,   -1,   -1,  537,
 };
-
-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint16 yyr1[] =
-{
-       0,   286,   287,   287,   288,   288,   288,   288,   288,   288,
-     288,   288,   288,   288,   288,   288,   289,   290,   290,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   292,   293,   293,   294,   294,   294,   294,   294,
-     294,   294,   295,   296,   296,   297,   297,   297,   297,   297,
-     297,   298,   299,   299,   300,   300,   300,   300,   300,   300,
-     300,   301,   302,   302,   303,   303,   303,   303,   303,   303,
-     303,   303,   304,   305,   306,   307,   308,   309,   310,   310,
-     311,   311,   311,   311,   311,   311,   311,   311,   311,   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,   441,
-     442,   443,   444,   445,   446,   447,   448,   449,   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,   493,   494,   495,   496,   497,   498,   499,   500,   501,
-     502,   503,   504,   505,   506,   507,   508,   509,   510,   511,
-     512,   513,   514,   515,   516,   517,   518,   519,   520,   521,
-     522,   523,   524,   525,   526,   527,   528,   529,   529,   530,
-     530,   530,   530,   530,   530,   530,   530,   531,   532,   533,
-     534,   535,   536,   537,   538,   539,   540,   540,   541,   541,
-     541,   541,   541,   541,   541,   541,   541,   541,   541,   541,
-     541,   541,   541,   541,   541,   541,   542,   543,   544,   545,
-     546,   547,   548,   549,   550,   551,   552,   553,   554,   555,
-     556,   557,   558,   559,   560,   561,   561,   562,   563,   564,
-     565,   566,   567,   568,   569,   569,   570,   570,   570,   570,
-     570,   570,   570,   570,   570,   570,   571,   572,   573,   574,
-     575,   576,   577,   578,   579,   580,   581,   582,   582,   583,
-     583,   583,   583,   583,   584,   585,   586,   587,   588,   589,
-     590,   591,   591,   592,   592,   593,   594
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 543
+#define YYUNDFTOKEN 857
+#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
+#if YYDEBUG
+static const char *const yyname[] = {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"SPACE","LETTER","NEWLINE",
+"COMMENT","COLON","ANY","ZONESTR","STRING_ARG","VAR_SERVER","VAR_VERBOSITY",
+"VAR_NUM_THREADS","VAR_PORT","VAR_OUTGOING_RANGE","VAR_INTERFACE",
+"VAR_PREFER_IP4","VAR_DO_IP4","VAR_DO_IP6","VAR_PREFER_IP6","VAR_DO_UDP",
+"VAR_DO_TCP","VAR_TCP_MSS","VAR_OUTGOING_TCP_MSS","VAR_TCP_IDLE_TIMEOUT",
+"VAR_EDNS_TCP_KEEPALIVE","VAR_EDNS_TCP_KEEPALIVE_TIMEOUT","VAR_CHROOT",
+"VAR_USERNAME","VAR_DIRECTORY","VAR_LOGFILE","VAR_PIDFILE","VAR_MSG_CACHE_SIZE",
+"VAR_MSG_CACHE_SLABS","VAR_NUM_QUERIES_PER_THREAD","VAR_RRSET_CACHE_SIZE",
+"VAR_RRSET_CACHE_SLABS","VAR_OUTGOING_NUM_TCP","VAR_INFRA_HOST_TTL",
+"VAR_INFRA_LAME_TTL","VAR_INFRA_CACHE_SLABS","VAR_INFRA_CACHE_NUMHOSTS",
+"VAR_INFRA_CACHE_LAME_SIZE","VAR_NAME","VAR_STUB_ZONE","VAR_STUB_HOST",
+"VAR_STUB_ADDR","VAR_TARGET_FETCH_POLICY","VAR_HARDEN_SHORT_BUFSIZE",
+"VAR_HARDEN_LARGE_QUERIES","VAR_FORWARD_ZONE","VAR_FORWARD_HOST",
+"VAR_FORWARD_ADDR","VAR_DO_NOT_QUERY_ADDRESS","VAR_HIDE_IDENTITY",
+"VAR_HIDE_VERSION","VAR_IDENTITY","VAR_VERSION","VAR_HARDEN_GLUE",
+"VAR_MODULE_CONF","VAR_TRUST_ANCHOR_FILE","VAR_TRUST_ANCHOR",
+"VAR_VAL_OVERRIDE_DATE","VAR_BOGUS_TTL","VAR_VAL_CLEAN_ADDITIONAL",
+"VAR_VAL_PERMISSIVE_MODE","VAR_INCOMING_NUM_TCP","VAR_MSG_BUFFER_SIZE",
+"VAR_KEY_CACHE_SIZE","VAR_KEY_CACHE_SLABS","VAR_TRUSTED_KEYS_FILE",
+"VAR_VAL_NSEC3_KEYSIZE_ITERATIONS","VAR_USE_SYSLOG","VAR_OUTGOING_INTERFACE",
+"VAR_ROOT_HINTS","VAR_DO_NOT_QUERY_LOCALHOST","VAR_CACHE_MAX_TTL",
+"VAR_HARDEN_DNSSEC_STRIPPED","VAR_ACCESS_CONTROL","VAR_LOCAL_ZONE",
+"VAR_LOCAL_DATA","VAR_INTERFACE_AUTOMATIC","VAR_STATISTICS_INTERVAL",
+"VAR_DO_DAEMONIZE","VAR_USE_CAPS_FOR_ID","VAR_STATISTICS_CUMULATIVE",
+"VAR_OUTGOING_PORT_PERMIT","VAR_OUTGOING_PORT_AVOID","VAR_DLV_ANCHOR_FILE",
+"VAR_DLV_ANCHOR","VAR_NEG_CACHE_SIZE","VAR_HARDEN_REFERRAL_PATH",
+"VAR_PRIVATE_ADDRESS","VAR_PRIVATE_DOMAIN","VAR_REMOTE_CONTROL",
+"VAR_CONTROL_ENABLE","VAR_CONTROL_INTERFACE","VAR_CONTROL_PORT",
+"VAR_SERVER_KEY_FILE","VAR_SERVER_CERT_FILE","VAR_CONTROL_KEY_FILE",
+"VAR_CONTROL_CERT_FILE","VAR_CONTROL_USE_CERT","VAR_EXTENDED_STATISTICS",
+"VAR_LOCAL_DATA_PTR","VAR_JOSTLE_TIMEOUT","VAR_STUB_PRIME",
+"VAR_UNWANTED_REPLY_THRESHOLD","VAR_LOG_TIME_ASCII","VAR_DOMAIN_INSECURE",
+"VAR_PYTHON","VAR_PYTHON_SCRIPT","VAR_VAL_SIG_SKEW_MIN","VAR_VAL_SIG_SKEW_MAX",
+"VAR_CACHE_MIN_TTL","VAR_VAL_LOG_LEVEL","VAR_AUTO_TRUST_ANCHOR_FILE",
+"VAR_KEEP_MISSING","VAR_ADD_HOLDDOWN","VAR_DEL_HOLDDOWN","VAR_SO_RCVBUF",
+"VAR_EDNS_BUFFER_SIZE","VAR_PREFETCH","VAR_PREFETCH_KEY","VAR_SO_SNDBUF",
+"VAR_SO_REUSEPORT","VAR_HARDEN_BELOW_NXDOMAIN","VAR_IGNORE_CD_FLAG",
+"VAR_LOG_QUERIES","VAR_LOG_REPLIES","VAR_LOG_LOCAL_ACTIONS","VAR_TCP_UPSTREAM",
+"VAR_SSL_UPSTREAM","VAR_SSL_SERVICE_KEY","VAR_SSL_SERVICE_PEM","VAR_SSL_PORT",
+"VAR_FORWARD_FIRST","VAR_STUB_SSL_UPSTREAM","VAR_FORWARD_SSL_UPSTREAM",
+"VAR_TLS_CERT_BUNDLE","VAR_STUB_FIRST","VAR_MINIMAL_RESPONSES",
+"VAR_RRSET_ROUNDROBIN","VAR_MAX_UDP_SIZE","VAR_DELAY_CLOSE",
+"VAR_UNBLOCK_LAN_ZONES","VAR_INSECURE_LAN_ZONES","VAR_INFRA_CACHE_MIN_RTT",
+"VAR_DNS64_PREFIX","VAR_DNS64_SYNTHALL","VAR_DNS64_IGNORE_AAAA","VAR_DNSTAP",
+"VAR_DNSTAP_ENABLE","VAR_DNSTAP_SOCKET_PATH","VAR_DNSTAP_IP","VAR_DNSTAP_TLS",
+"VAR_DNSTAP_TLS_SERVER_NAME","VAR_DNSTAP_TLS_CERT_BUNDLE",
+"VAR_DNSTAP_TLS_CLIENT_KEY_FILE","VAR_DNSTAP_TLS_CLIENT_CERT_FILE",
+"VAR_DNSTAP_SEND_IDENTITY","VAR_DNSTAP_SEND_VERSION","VAR_DNSTAP_IDENTITY",
+"VAR_DNSTAP_VERSION","VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
+"VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES",
+"VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES",
+"VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES",
+"VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES",
+"VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES","VAR_RESPONSE_IP_TAG",
+"VAR_RESPONSE_IP","VAR_RESPONSE_IP_DATA","VAR_HARDEN_ALGO_DOWNGRADE",
+"VAR_IP_TRANSPARENT","VAR_IP_DSCP","VAR_DISABLE_DNSSEC_LAME_CHECK",
+"VAR_IP_RATELIMIT","VAR_IP_RATELIMIT_SLABS","VAR_IP_RATELIMIT_SIZE",
+"VAR_RATELIMIT","VAR_RATELIMIT_SLABS","VAR_RATELIMIT_SIZE",
+"VAR_RATELIMIT_FOR_DOMAIN","VAR_RATELIMIT_BELOW_DOMAIN",
+"VAR_IP_RATELIMIT_FACTOR","VAR_RATELIMIT_FACTOR","VAR_SEND_CLIENT_SUBNET",
+"VAR_CLIENT_SUBNET_ZONE","VAR_CLIENT_SUBNET_ALWAYS_FORWARD",
+"VAR_CLIENT_SUBNET_OPCODE","VAR_MAX_CLIENT_SUBNET_IPV4",
+"VAR_MAX_CLIENT_SUBNET_IPV6","VAR_MIN_CLIENT_SUBNET_IPV4",
+"VAR_MIN_CLIENT_SUBNET_IPV6","VAR_MAX_ECS_TREE_SIZE_IPV4",
+"VAR_MAX_ECS_TREE_SIZE_IPV6","VAR_CAPS_WHITELIST","VAR_CACHE_MAX_NEGATIVE_TTL",
+"VAR_PERMIT_SMALL_HOLDDOWN","VAR_QNAME_MINIMISATION",
+"VAR_QNAME_MINIMISATION_STRICT","VAR_IP_FREEBIND","VAR_DEFINE_TAG",
+"VAR_LOCAL_ZONE_TAG","VAR_ACCESS_CONTROL_TAG","VAR_LOCAL_ZONE_OVERRIDE",
+"VAR_ACCESS_CONTROL_TAG_ACTION","VAR_ACCESS_CONTROL_TAG_DATA","VAR_VIEW",
+"VAR_ACCESS_CONTROL_VIEW","VAR_VIEW_FIRST","VAR_SERVE_EXPIRED",
+"VAR_SERVE_EXPIRED_TTL","VAR_SERVE_EXPIRED_TTL_RESET",
+"VAR_SERVE_EXPIRED_REPLY_TTL","VAR_SERVE_EXPIRED_CLIENT_TIMEOUT","VAR_FAKE_DSA",
+"VAR_FAKE_SHA1","VAR_LOG_IDENTITY","VAR_HIDE_TRUSTANCHOR",
+"VAR_TRUST_ANCHOR_SIGNALING","VAR_AGGRESSIVE_NSEC","VAR_USE_SYSTEMD",
+"VAR_SHM_ENABLE","VAR_SHM_KEY","VAR_ROOT_KEY_SENTINEL","VAR_DNSCRYPT",
+"VAR_DNSCRYPT_ENABLE","VAR_DNSCRYPT_PORT","VAR_DNSCRYPT_PROVIDER",
+"VAR_DNSCRYPT_SECRET_KEY","VAR_DNSCRYPT_PROVIDER_CERT",
+"VAR_DNSCRYPT_PROVIDER_CERT_ROTATED","VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE",
+"VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS","VAR_DNSCRYPT_NONCE_CACHE_SIZE",
+"VAR_DNSCRYPT_NONCE_CACHE_SLABS","VAR_PAD_RESPONSES",
+"VAR_PAD_RESPONSES_BLOCK_SIZE","VAR_PAD_QUERIES","VAR_PAD_QUERIES_BLOCK_SIZE",
+"VAR_IPSECMOD_ENABLED","VAR_IPSECMOD_HOOK","VAR_IPSECMOD_IGNORE_BOGUS",
+"VAR_IPSECMOD_MAX_TTL","VAR_IPSECMOD_WHITELIST","VAR_IPSECMOD_STRICT",
+"VAR_CACHEDB","VAR_CACHEDB_BACKEND","VAR_CACHEDB_SECRETSEED",
+"VAR_CACHEDB_REDISHOST","VAR_CACHEDB_REDISPORT","VAR_CACHEDB_REDISTIMEOUT",
+"VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM","VAR_FOR_UPSTREAM","VAR_AUTH_ZONE",
+"VAR_ZONEFILE","VAR_MASTER","VAR_URL","VAR_FOR_DOWNSTREAM",
+"VAR_FALLBACK_ENABLED","VAR_TLS_ADDITIONAL_PORT","VAR_LOW_RTT",
+"VAR_LOW_RTT_PERMIL","VAR_FAST_SERVER_PERMIL","VAR_FAST_SERVER_NUM",
+"VAR_ALLOW_NOTIFY","VAR_TLS_WIN_CERT","VAR_TCP_CONNECTION_LIMIT",
+"VAR_FORWARD_NO_CACHE","VAR_STUB_NO_CACHE","VAR_LOG_SERVFAIL","VAR_DENY_ANY",
+"VAR_UNKNOWN_SERVER_TIME_LIMIT","VAR_LOG_TAG_QUERYREPLY","VAR_STREAM_WAIT_SIZE",
+"VAR_TLS_CIPHERS","VAR_TLS_CIPHERSUITES","VAR_IPSET","VAR_IPSET_NAME_V4",
+"VAR_IPSET_NAME_V6","VAR_TLS_SESSION_TICKET_KEYS","VAR_RPZ","VAR_TAGS",
+"VAR_RPZ_ACTION_OVERRIDE","VAR_RPZ_CNAME_OVERRIDE","VAR_RPZ_LOG",
+"VAR_RPZ_LOG_NAME",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,"illegal-symbol",
 };
+static const char *const yyrule[] = {
+"$accept : toplevelvars",
+"toplevelvars :",
+"toplevelvars : toplevelvars toplevelvar",
+"toplevelvar : serverstart contents_server",
+"toplevelvar : stubstart contents_stub",
+"toplevelvar : forwardstart contents_forward",
+"toplevelvar : pythonstart contents_py",
+"toplevelvar : rcstart contents_rc",
+"toplevelvar : dtstart contents_dt",
+"toplevelvar : viewstart contents_view",
+"toplevelvar : dnscstart contents_dnsc",
+"toplevelvar : cachedbstart contents_cachedb",
+"toplevelvar : ipsetstart contents_ipset",
+"toplevelvar : authstart contents_auth",
+"toplevelvar : rpzstart contents_rpz",
+"serverstart : VAR_SERVER",
+"contents_server : contents_server content_server",
+"contents_server :",
+"content_server : server_num_threads",
+"content_server : server_verbosity",
+"content_server : server_port",
+"content_server : server_outgoing_range",
+"content_server : server_do_ip4",
+"content_server : server_do_ip6",
+"content_server : server_prefer_ip4",
+"content_server : server_prefer_ip6",
+"content_server : server_do_udp",
+"content_server : server_do_tcp",
+"content_server : server_tcp_mss",
+"content_server : server_outgoing_tcp_mss",
+"content_server : server_tcp_idle_timeout",
+"content_server : server_tcp_keepalive",
+"content_server : server_tcp_keepalive_timeout",
+"content_server : server_interface",
+"content_server : server_chroot",
+"content_server : server_username",
+"content_server : server_directory",
+"content_server : server_logfile",
+"content_server : server_pidfile",
+"content_server : server_msg_cache_size",
+"content_server : server_msg_cache_slabs",
+"content_server : server_num_queries_per_thread",
+"content_server : server_rrset_cache_size",
+"content_server : server_rrset_cache_slabs",
+"content_server : server_outgoing_num_tcp",
+"content_server : server_infra_host_ttl",
+"content_server : server_infra_lame_ttl",
+"content_server : server_infra_cache_slabs",
+"content_server : server_infra_cache_numhosts",
+"content_server : server_infra_cache_lame_size",
+"content_server : server_target_fetch_policy",
+"content_server : server_harden_short_bufsize",
+"content_server : server_harden_large_queries",
+"content_server : server_do_not_query_address",
+"content_server : server_hide_identity",
+"content_server : server_hide_version",
+"content_server : server_identity",
+"content_server : server_version",
+"content_server : server_harden_glue",
+"content_server : server_module_conf",
+"content_server : server_trust_anchor_file",
+"content_server : server_trust_anchor",
+"content_server : server_val_override_date",
+"content_server : server_bogus_ttl",
+"content_server : server_val_clean_additional",
+"content_server : server_val_permissive_mode",
+"content_server : server_incoming_num_tcp",
+"content_server : server_msg_buffer_size",
+"content_server : server_key_cache_size",
+"content_server : server_key_cache_slabs",
+"content_server : server_trusted_keys_file",
+"content_server : server_val_nsec3_keysize_iterations",
+"content_server : server_use_syslog",
+"content_server : server_outgoing_interface",
+"content_server : server_root_hints",
+"content_server : server_do_not_query_localhost",
+"content_server : server_cache_max_ttl",
+"content_server : server_harden_dnssec_stripped",
+"content_server : server_access_control",
+"content_server : server_local_zone",
+"content_server : server_local_data",
+"content_server : server_interface_automatic",
+"content_server : server_statistics_interval",
+"content_server : server_do_daemonize",
+"content_server : server_use_caps_for_id",
+"content_server : server_statistics_cumulative",
+"content_server : server_outgoing_port_permit",
+"content_server : server_outgoing_port_avoid",
+"content_server : server_dlv_anchor_file",
+"content_server : server_dlv_anchor",
+"content_server : server_neg_cache_size",
+"content_server : server_harden_referral_path",
+"content_server : server_private_address",
+"content_server : server_private_domain",
+"content_server : server_extended_statistics",
+"content_server : server_local_data_ptr",
+"content_server : server_jostle_timeout",
+"content_server : server_unwanted_reply_threshold",
+"content_server : server_log_time_ascii",
+"content_server : server_domain_insecure",
+"content_server : server_val_sig_skew_min",
+"content_server : server_val_sig_skew_max",
+"content_server : server_cache_min_ttl",
+"content_server : server_val_log_level",
+"content_server : server_auto_trust_anchor_file",
+"content_server : server_add_holddown",
+"content_server : server_del_holddown",
+"content_server : server_keep_missing",
+"content_server : server_so_rcvbuf",
+"content_server : server_edns_buffer_size",
+"content_server : server_prefetch",
+"content_server : server_prefetch_key",
+"content_server : server_so_sndbuf",
+"content_server : server_harden_below_nxdomain",
+"content_server : server_ignore_cd_flag",
+"content_server : server_log_queries",
+"content_server : server_log_replies",
+"content_server : server_tcp_upstream",
+"content_server : server_ssl_upstream",
+"content_server : server_log_local_actions",
+"content_server : server_ssl_service_key",
+"content_server : server_ssl_service_pem",
+"content_server : server_ssl_port",
+"content_server : server_minimal_responses",
+"content_server : server_rrset_roundrobin",
+"content_server : server_max_udp_size",
+"content_server : server_so_reuseport",
+"content_server : server_delay_close",
+"content_server : server_unblock_lan_zones",
+"content_server : server_insecure_lan_zones",
+"content_server : server_dns64_prefix",
+"content_server : server_dns64_synthall",
+"content_server : server_dns64_ignore_aaaa",
+"content_server : server_infra_cache_min_rtt",
+"content_server : server_harden_algo_downgrade",
+"content_server : server_ip_transparent",
+"content_server : server_ip_ratelimit",
+"content_server : server_ratelimit",
+"content_server : server_ip_dscp",
+"content_server : server_ip_ratelimit_slabs",
+"content_server : server_ratelimit_slabs",
+"content_server : server_ip_ratelimit_size",
+"content_server : server_ratelimit_size",
+"content_server : server_ratelimit_for_domain",
+"content_server : server_ratelimit_below_domain",
+"content_server : server_ratelimit_factor",
+"content_server : server_ip_ratelimit_factor",
+"content_server : server_send_client_subnet",
+"content_server : server_client_subnet_zone",
+"content_server : server_client_subnet_always_forward",
+"content_server : server_client_subnet_opcode",
+"content_server : server_max_client_subnet_ipv4",
+"content_server : server_max_client_subnet_ipv6",
+"content_server : server_min_client_subnet_ipv4",
+"content_server : server_min_client_subnet_ipv6",
+"content_server : server_max_ecs_tree_size_ipv4",
+"content_server : server_max_ecs_tree_size_ipv6",
+"content_server : server_caps_whitelist",
+"content_server : server_cache_max_negative_ttl",
+"content_server : server_permit_small_holddown",
+"content_server : server_qname_minimisation",
+"content_server : server_ip_freebind",
+"content_server : server_define_tag",
+"content_server : server_local_zone_tag",
+"content_server : server_disable_dnssec_lame_check",
+"content_server : server_access_control_tag",
+"content_server : server_local_zone_override",
+"content_server : server_access_control_tag_action",
+"content_server : server_access_control_tag_data",
+"content_server : server_access_control_view",
+"content_server : server_qname_minimisation_strict",
+"content_server : server_serve_expired",
+"content_server : server_serve_expired_ttl",
+"content_server : server_serve_expired_ttl_reset",
+"content_server : server_serve_expired_reply_ttl",
+"content_server : server_serve_expired_client_timeout",
+"content_server : server_fake_dsa",
+"content_server : server_log_identity",
+"content_server : server_use_systemd",
+"content_server : server_response_ip_tag",
+"content_server : server_response_ip",
+"content_server : server_response_ip_data",
+"content_server : server_shm_enable",
+"content_server : server_shm_key",
+"content_server : server_fake_sha1",
+"content_server : server_hide_trustanchor",
+"content_server : server_trust_anchor_signaling",
+"content_server : server_root_key_sentinel",
+"content_server : server_ipsecmod_enabled",
+"content_server : server_ipsecmod_hook",
+"content_server : server_ipsecmod_ignore_bogus",
+"content_server : server_ipsecmod_max_ttl",
+"content_server : server_ipsecmod_whitelist",
+"content_server : server_ipsecmod_strict",
+"content_server : server_udp_upstream_without_downstream",
+"content_server : server_aggressive_nsec",
+"content_server : server_tls_cert_bundle",
+"content_server : server_tls_additional_port",
+"content_server : server_low_rtt",
+"content_server : server_fast_server_permil",
+"content_server : server_fast_server_num",
+"content_server : server_tls_win_cert",
+"content_server : server_tcp_connection_limit",
+"content_server : server_log_servfail",
+"content_server : server_deny_any",
+"content_server : server_unknown_server_time_limit",
+"content_server : server_log_tag_queryreply",
+"content_server : server_stream_wait_size",
+"content_server : server_tls_ciphers",
+"content_server : server_tls_ciphersuites",
+"content_server : server_tls_session_ticket_keys",
+"stubstart : VAR_STUB_ZONE",
+"contents_stub : contents_stub content_stub",
+"contents_stub :",
+"content_stub : stub_name",
+"content_stub : stub_host",
+"content_stub : stub_addr",
+"content_stub : stub_prime",
+"content_stub : stub_first",
+"content_stub : stub_no_cache",
+"content_stub : stub_ssl_upstream",
+"forwardstart : VAR_FORWARD_ZONE",
+"contents_forward : contents_forward content_forward",
+"contents_forward :",
+"content_forward : forward_name",
+"content_forward : forward_host",
+"content_forward : forward_addr",
+"content_forward : forward_first",
+"content_forward : forward_no_cache",
+"content_forward : forward_ssl_upstream",
+"viewstart : VAR_VIEW",
+"contents_view : contents_view content_view",
+"contents_view :",
+"content_view : view_name",
+"content_view : view_local_zone",
+"content_view : view_local_data",
+"content_view : view_first",
+"content_view : view_response_ip",
+"content_view : view_response_ip_data",
+"content_view : view_local_data_ptr",
+"authstart : VAR_AUTH_ZONE",
+"contents_auth : contents_auth content_auth",
+"contents_auth :",
+"content_auth : auth_name",
+"content_auth : auth_zonefile",
+"content_auth : auth_master",
+"content_auth : auth_url",
+"content_auth : auth_for_downstream",
+"content_auth : auth_for_upstream",
+"content_auth : auth_fallback_enabled",
+"content_auth : auth_allow_notify",
+"rpz_tag : VAR_TAGS STRING_ARG",
+"rpz_action_override : VAR_RPZ_ACTION_OVERRIDE STRING_ARG",
+"rpz_cname_override : VAR_RPZ_CNAME_OVERRIDE STRING_ARG",
+"rpz_log : VAR_RPZ_LOG STRING_ARG",
+"rpz_log_name : VAR_RPZ_LOG_NAME STRING_ARG",
+"rpzstart : VAR_RPZ",
+"contents_rpz : contents_rpz content_rpz",
+"contents_rpz :",
+"content_rpz : auth_name",
+"content_rpz : auth_zonefile",
+"content_rpz : rpz_tag",
+"content_rpz : auth_master",
+"content_rpz : auth_url",
+"content_rpz : auth_allow_notify",
+"content_rpz : rpz_action_override",
+"content_rpz : rpz_cname_override",
+"content_rpz : rpz_log",
+"content_rpz : rpz_log_name",
+"server_num_threads : VAR_NUM_THREADS STRING_ARG",
+"server_verbosity : VAR_VERBOSITY STRING_ARG",
+"server_statistics_interval : VAR_STATISTICS_INTERVAL STRING_ARG",
+"server_statistics_cumulative : VAR_STATISTICS_CUMULATIVE STRING_ARG",
+"server_extended_statistics : VAR_EXTENDED_STATISTICS STRING_ARG",
+"server_shm_enable : VAR_SHM_ENABLE STRING_ARG",
+"server_shm_key : VAR_SHM_KEY STRING_ARG",
+"server_port : VAR_PORT STRING_ARG",
+"server_send_client_subnet : VAR_SEND_CLIENT_SUBNET STRING_ARG",
+"server_client_subnet_zone : VAR_CLIENT_SUBNET_ZONE STRING_ARG",
+"server_client_subnet_always_forward : VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG",
+"server_client_subnet_opcode : VAR_CLIENT_SUBNET_OPCODE STRING_ARG",
+"server_max_client_subnet_ipv4 : VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG",
+"server_max_client_subnet_ipv6 : VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG",
+"server_min_client_subnet_ipv4 : VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG",
+"server_min_client_subnet_ipv6 : VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG",
+"server_max_ecs_tree_size_ipv4 : VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG",
+"server_max_ecs_tree_size_ipv6 : VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG",
+"server_interface : VAR_INTERFACE STRING_ARG",
+"server_outgoing_interface : VAR_OUTGOING_INTERFACE STRING_ARG",
+"server_outgoing_range : VAR_OUTGOING_RANGE STRING_ARG",
+"server_outgoing_port_permit : VAR_OUTGOING_PORT_PERMIT STRING_ARG",
+"server_outgoing_port_avoid : VAR_OUTGOING_PORT_AVOID STRING_ARG",
+"server_outgoing_num_tcp : VAR_OUTGOING_NUM_TCP STRING_ARG",
+"server_incoming_num_tcp : VAR_INCOMING_NUM_TCP STRING_ARG",
+"server_interface_automatic : VAR_INTERFACE_AUTOMATIC STRING_ARG",
+"server_do_ip4 : VAR_DO_IP4 STRING_ARG",
+"server_do_ip6 : VAR_DO_IP6 STRING_ARG",
+"server_do_udp : VAR_DO_UDP STRING_ARG",
+"server_do_tcp : VAR_DO_TCP STRING_ARG",
+"server_prefer_ip4 : VAR_PREFER_IP4 STRING_ARG",
+"server_prefer_ip6 : VAR_PREFER_IP6 STRING_ARG",
+"server_tcp_mss : VAR_TCP_MSS STRING_ARG",
+"server_outgoing_tcp_mss : VAR_OUTGOING_TCP_MSS STRING_ARG",
+"server_tcp_idle_timeout : VAR_TCP_IDLE_TIMEOUT STRING_ARG",
+"server_tcp_keepalive : VAR_EDNS_TCP_KEEPALIVE STRING_ARG",
+"server_tcp_keepalive_timeout : VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG",
+"server_tcp_upstream : VAR_TCP_UPSTREAM STRING_ARG",
+"server_udp_upstream_without_downstream : VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG",
+"server_ssl_upstream : VAR_SSL_UPSTREAM STRING_ARG",
+"server_ssl_service_key : VAR_SSL_SERVICE_KEY STRING_ARG",
+"server_ssl_service_pem : VAR_SSL_SERVICE_PEM STRING_ARG",
+"server_ssl_port : VAR_SSL_PORT STRING_ARG",
+"server_tls_cert_bundle : VAR_TLS_CERT_BUNDLE STRING_ARG",
+"server_tls_win_cert : VAR_TLS_WIN_CERT STRING_ARG",
+"server_tls_additional_port : VAR_TLS_ADDITIONAL_PORT STRING_ARG",
+"server_tls_ciphers : VAR_TLS_CIPHERS STRING_ARG",
+"server_tls_ciphersuites : VAR_TLS_CIPHERSUITES STRING_ARG",
+"server_tls_session_ticket_keys : VAR_TLS_SESSION_TICKET_KEYS STRING_ARG",
+"server_use_systemd : VAR_USE_SYSTEMD STRING_ARG",
+"server_do_daemonize : VAR_DO_DAEMONIZE STRING_ARG",
+"server_use_syslog : VAR_USE_SYSLOG STRING_ARG",
+"server_log_time_ascii : VAR_LOG_TIME_ASCII STRING_ARG",
+"server_log_queries : VAR_LOG_QUERIES STRING_ARG",
+"server_log_replies : VAR_LOG_REPLIES STRING_ARG",
+"server_log_tag_queryreply : VAR_LOG_TAG_QUERYREPLY STRING_ARG",
+"server_log_servfail : VAR_LOG_SERVFAIL STRING_ARG",
+"server_log_local_actions : VAR_LOG_LOCAL_ACTIONS STRING_ARG",
+"server_chroot : VAR_CHROOT STRING_ARG",
+"server_username : VAR_USERNAME STRING_ARG",
+"server_directory : VAR_DIRECTORY STRING_ARG",
+"server_logfile : VAR_LOGFILE STRING_ARG",
+"server_pidfile : VAR_PIDFILE STRING_ARG",
+"server_root_hints : VAR_ROOT_HINTS STRING_ARG",
+"server_dlv_anchor_file : VAR_DLV_ANCHOR_FILE STRING_ARG",
+"server_dlv_anchor : VAR_DLV_ANCHOR STRING_ARG",
+"server_auto_trust_anchor_file : VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG",
+"server_trust_anchor_file : VAR_TRUST_ANCHOR_FILE STRING_ARG",
+"server_trusted_keys_file : VAR_TRUSTED_KEYS_FILE STRING_ARG",
+"server_trust_anchor : VAR_TRUST_ANCHOR STRING_ARG",
+"server_trust_anchor_signaling : VAR_TRUST_ANCHOR_SIGNALING STRING_ARG",
+"server_root_key_sentinel : VAR_ROOT_KEY_SENTINEL STRING_ARG",
+"server_domain_insecure : VAR_DOMAIN_INSECURE STRING_ARG",
+"server_hide_identity : VAR_HIDE_IDENTITY STRING_ARG",
+"server_hide_version : VAR_HIDE_VERSION STRING_ARG",
+"server_hide_trustanchor : VAR_HIDE_TRUSTANCHOR STRING_ARG",
+"server_identity : VAR_IDENTITY STRING_ARG",
+"server_version : VAR_VERSION STRING_ARG",
+"server_so_rcvbuf : VAR_SO_RCVBUF STRING_ARG",
+"server_so_sndbuf : VAR_SO_SNDBUF STRING_ARG",
+"server_so_reuseport : VAR_SO_REUSEPORT STRING_ARG",
+"server_ip_transparent : VAR_IP_TRANSPARENT STRING_ARG",
+"server_ip_freebind : VAR_IP_FREEBIND STRING_ARG",
+"server_ip_dscp : VAR_IP_DSCP STRING_ARG",
+"server_stream_wait_size : VAR_STREAM_WAIT_SIZE STRING_ARG",
+"server_edns_buffer_size : VAR_EDNS_BUFFER_SIZE STRING_ARG",
+"server_msg_buffer_size : VAR_MSG_BUFFER_SIZE STRING_ARG",
+"server_msg_cache_size : VAR_MSG_CACHE_SIZE STRING_ARG",
+"server_msg_cache_slabs : VAR_MSG_CACHE_SLABS STRING_ARG",
+"server_num_queries_per_thread : VAR_NUM_QUERIES_PER_THREAD STRING_ARG",
+"server_jostle_timeout : VAR_JOSTLE_TIMEOUT STRING_ARG",
+"server_delay_close : VAR_DELAY_CLOSE STRING_ARG",
+"server_unblock_lan_zones : VAR_UNBLOCK_LAN_ZONES STRING_ARG",
+"server_insecure_lan_zones : VAR_INSECURE_LAN_ZONES STRING_ARG",
+"server_rrset_cache_size : VAR_RRSET_CACHE_SIZE STRING_ARG",
+"server_rrset_cache_slabs : VAR_RRSET_CACHE_SLABS STRING_ARG",
+"server_infra_host_ttl : VAR_INFRA_HOST_TTL STRING_ARG",
+"server_infra_lame_ttl : VAR_INFRA_LAME_TTL STRING_ARG",
+"server_infra_cache_numhosts : VAR_INFRA_CACHE_NUMHOSTS STRING_ARG",
+"server_infra_cache_lame_size : VAR_INFRA_CACHE_LAME_SIZE STRING_ARG",
+"server_infra_cache_slabs : VAR_INFRA_CACHE_SLABS STRING_ARG",
+"server_infra_cache_min_rtt : VAR_INFRA_CACHE_MIN_RTT STRING_ARG",
+"server_target_fetch_policy : VAR_TARGET_FETCH_POLICY STRING_ARG",
+"server_harden_short_bufsize : VAR_HARDEN_SHORT_BUFSIZE STRING_ARG",
+"server_harden_large_queries : VAR_HARDEN_LARGE_QUERIES STRING_ARG",
+"server_harden_glue : VAR_HARDEN_GLUE STRING_ARG",
+"server_harden_dnssec_stripped : VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG",
+"server_harden_below_nxdomain : VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG",
+"server_harden_referral_path : VAR_HARDEN_REFERRAL_PATH STRING_ARG",
+"server_harden_algo_downgrade : VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG",
+"server_use_caps_for_id : VAR_USE_CAPS_FOR_ID STRING_ARG",
+"server_caps_whitelist : VAR_CAPS_WHITELIST STRING_ARG",
+"server_private_address : VAR_PRIVATE_ADDRESS STRING_ARG",
+"server_private_domain : VAR_PRIVATE_DOMAIN STRING_ARG",
+"server_prefetch : VAR_PREFETCH STRING_ARG",
+"server_prefetch_key : VAR_PREFETCH_KEY STRING_ARG",
+"server_deny_any : VAR_DENY_ANY STRING_ARG",
+"server_unwanted_reply_threshold : VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG",
+"server_do_not_query_address : VAR_DO_NOT_QUERY_ADDRESS STRING_ARG",
+"server_do_not_query_localhost : VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG",
+"server_access_control : VAR_ACCESS_CONTROL STRING_ARG STRING_ARG",
+"server_module_conf : VAR_MODULE_CONF STRING_ARG",
+"server_val_override_date : VAR_VAL_OVERRIDE_DATE STRING_ARG",
+"server_val_sig_skew_min : VAR_VAL_SIG_SKEW_MIN STRING_ARG",
+"server_val_sig_skew_max : VAR_VAL_SIG_SKEW_MAX STRING_ARG",
+"server_cache_max_ttl : VAR_CACHE_MAX_TTL STRING_ARG",
+"server_cache_max_negative_ttl : VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG",
+"server_cache_min_ttl : VAR_CACHE_MIN_TTL STRING_ARG",
+"server_bogus_ttl : VAR_BOGUS_TTL STRING_ARG",
+"server_val_clean_additional : VAR_VAL_CLEAN_ADDITIONAL STRING_ARG",
+"server_val_permissive_mode : VAR_VAL_PERMISSIVE_MODE STRING_ARG",
+"server_aggressive_nsec : VAR_AGGRESSIVE_NSEC STRING_ARG",
+"server_ignore_cd_flag : VAR_IGNORE_CD_FLAG STRING_ARG",
+"server_serve_expired : VAR_SERVE_EXPIRED STRING_ARG",
+"server_serve_expired_ttl : VAR_SERVE_EXPIRED_TTL STRING_ARG",
+"server_serve_expired_ttl_reset : VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG",
+"server_serve_expired_reply_ttl : VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG",
+"server_serve_expired_client_timeout : VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG",
+"server_fake_dsa : VAR_FAKE_DSA STRING_ARG",
+"server_fake_sha1 : VAR_FAKE_SHA1 STRING_ARG",
+"server_val_log_level : VAR_VAL_LOG_LEVEL STRING_ARG",
+"server_val_nsec3_keysize_iterations : VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG",
+"server_add_holddown : VAR_ADD_HOLDDOWN STRING_ARG",
+"server_del_holddown : VAR_DEL_HOLDDOWN STRING_ARG",
+"server_keep_missing : VAR_KEEP_MISSING STRING_ARG",
+"server_permit_small_holddown : VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG",
+"server_key_cache_size : VAR_KEY_CACHE_SIZE STRING_ARG",
+"server_key_cache_slabs : VAR_KEY_CACHE_SLABS STRING_ARG",
+"server_neg_cache_size : VAR_NEG_CACHE_SIZE STRING_ARG",
+"server_local_zone : VAR_LOCAL_ZONE STRING_ARG STRING_ARG",
+"server_local_data : VAR_LOCAL_DATA STRING_ARG",
+"server_local_data_ptr : VAR_LOCAL_DATA_PTR STRING_ARG",
+"server_minimal_responses : VAR_MINIMAL_RESPONSES STRING_ARG",
+"server_rrset_roundrobin : VAR_RRSET_ROUNDROBIN STRING_ARG",
+"server_unknown_server_time_limit : VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG",
+"server_max_udp_size : VAR_MAX_UDP_SIZE STRING_ARG",
+"server_dns64_prefix : VAR_DNS64_PREFIX STRING_ARG",
+"server_dns64_synthall : VAR_DNS64_SYNTHALL STRING_ARG",
+"server_dns64_ignore_aaaa : VAR_DNS64_IGNORE_AAAA STRING_ARG",
+"server_define_tag : VAR_DEFINE_TAG STRING_ARG",
+"server_local_zone_tag : VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG",
+"server_access_control_tag : VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG",
+"server_access_control_tag_action : VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG",
+"server_access_control_tag_data : VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG",
+"server_local_zone_override : VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG",
+"server_access_control_view : VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG",
+"server_response_ip_tag : VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG",
+"server_ip_ratelimit : VAR_IP_RATELIMIT STRING_ARG",
+"server_ratelimit : VAR_RATELIMIT STRING_ARG",
+"server_ip_ratelimit_size : VAR_IP_RATELIMIT_SIZE STRING_ARG",
+"server_ratelimit_size : VAR_RATELIMIT_SIZE STRING_ARG",
+"server_ip_ratelimit_slabs : VAR_IP_RATELIMIT_SLABS STRING_ARG",
+"server_ratelimit_slabs : VAR_RATELIMIT_SLABS STRING_ARG",
+"server_ratelimit_for_domain : VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG",
+"server_ratelimit_below_domain : VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG",
+"server_ip_ratelimit_factor : VAR_IP_RATELIMIT_FACTOR STRING_ARG",
+"server_ratelimit_factor : VAR_RATELIMIT_FACTOR STRING_ARG",
+"server_low_rtt : VAR_LOW_RTT STRING_ARG",
+"server_fast_server_num : VAR_FAST_SERVER_NUM STRING_ARG",
+"server_fast_server_permil : VAR_FAST_SERVER_PERMIL STRING_ARG",
+"server_qname_minimisation : VAR_QNAME_MINIMISATION STRING_ARG",
+"server_qname_minimisation_strict : VAR_QNAME_MINIMISATION_STRICT STRING_ARG",
+"server_pad_responses : VAR_PAD_RESPONSES STRING_ARG",
+"server_pad_responses_block_size : VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG",
+"server_pad_queries : VAR_PAD_QUERIES STRING_ARG",
+"server_pad_queries_block_size : VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG",
+"server_ipsecmod_enabled : VAR_IPSECMOD_ENABLED STRING_ARG",
+"server_ipsecmod_ignore_bogus : VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG",
+"server_ipsecmod_hook : VAR_IPSECMOD_HOOK STRING_ARG",
+"server_ipsecmod_max_ttl : VAR_IPSECMOD_MAX_TTL STRING_ARG",
+"server_ipsecmod_whitelist : VAR_IPSECMOD_WHITELIST STRING_ARG",
+"server_ipsecmod_strict : VAR_IPSECMOD_STRICT STRING_ARG",
+"stub_name : VAR_NAME STRING_ARG",
+"stub_host : VAR_STUB_HOST STRING_ARG",
+"stub_addr : VAR_STUB_ADDR STRING_ARG",
+"stub_first : VAR_STUB_FIRST STRING_ARG",
+"stub_no_cache : VAR_STUB_NO_CACHE STRING_ARG",
+"stub_ssl_upstream : VAR_STUB_SSL_UPSTREAM STRING_ARG",
+"stub_prime : VAR_STUB_PRIME STRING_ARG",
+"forward_name : VAR_NAME STRING_ARG",
+"forward_host : VAR_FORWARD_HOST STRING_ARG",
+"forward_addr : VAR_FORWARD_ADDR STRING_ARG",
+"forward_first : VAR_FORWARD_FIRST STRING_ARG",
+"forward_no_cache : VAR_FORWARD_NO_CACHE STRING_ARG",
+"forward_ssl_upstream : VAR_FORWARD_SSL_UPSTREAM STRING_ARG",
+"auth_name : VAR_NAME STRING_ARG",
+"auth_zonefile : VAR_ZONEFILE STRING_ARG",
+"auth_master : VAR_MASTER STRING_ARG",
+"auth_url : VAR_URL STRING_ARG",
+"auth_allow_notify : VAR_ALLOW_NOTIFY STRING_ARG",
+"auth_for_downstream : VAR_FOR_DOWNSTREAM STRING_ARG",
+"auth_for_upstream : VAR_FOR_UPSTREAM STRING_ARG",
+"auth_fallback_enabled : VAR_FALLBACK_ENABLED STRING_ARG",
+"view_name : VAR_NAME STRING_ARG",
+"view_local_zone : VAR_LOCAL_ZONE STRING_ARG STRING_ARG",
+"view_response_ip : VAR_RESPONSE_IP STRING_ARG STRING_ARG",
+"view_response_ip_data : VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG",
+"view_local_data : VAR_LOCAL_DATA STRING_ARG",
+"view_local_data_ptr : VAR_LOCAL_DATA_PTR STRING_ARG",
+"view_first : VAR_VIEW_FIRST STRING_ARG",
+"rcstart : VAR_REMOTE_CONTROL",
+"contents_rc : contents_rc content_rc",
+"contents_rc :",
+"content_rc : rc_control_enable",
+"content_rc : rc_control_interface",
+"content_rc : rc_control_port",
+"content_rc : rc_server_key_file",
+"content_rc : rc_server_cert_file",
+"content_rc : rc_control_key_file",
+"content_rc : rc_control_cert_file",
+"content_rc : rc_control_use_cert",
+"rc_control_enable : VAR_CONTROL_ENABLE STRING_ARG",
+"rc_control_port : VAR_CONTROL_PORT STRING_ARG",
+"rc_control_interface : VAR_CONTROL_INTERFACE STRING_ARG",
+"rc_control_use_cert : VAR_CONTROL_USE_CERT STRING_ARG",
+"rc_server_key_file : VAR_SERVER_KEY_FILE STRING_ARG",
+"rc_server_cert_file : VAR_SERVER_CERT_FILE STRING_ARG",
+"rc_control_key_file : VAR_CONTROL_KEY_FILE STRING_ARG",
+"rc_control_cert_file : VAR_CONTROL_CERT_FILE STRING_ARG",
+"dtstart : VAR_DNSTAP",
+"contents_dt : contents_dt content_dt",
+"contents_dt :",
+"content_dt : dt_dnstap_enable",
+"content_dt : dt_dnstap_socket_path",
+"content_dt : dt_dnstap_ip",
+"content_dt : dt_dnstap_tls",
+"content_dt : dt_dnstap_tls_server_name",
+"content_dt : dt_dnstap_tls_cert_bundle",
+"content_dt : dt_dnstap_tls_client_key_file",
+"content_dt : dt_dnstap_tls_client_cert_file",
+"content_dt : dt_dnstap_send_identity",
+"content_dt : dt_dnstap_send_version",
+"content_dt : dt_dnstap_identity",
+"content_dt : dt_dnstap_version",
+"content_dt : dt_dnstap_log_resolver_query_messages",
+"content_dt : dt_dnstap_log_resolver_response_messages",
+"content_dt : dt_dnstap_log_client_query_messages",
+"content_dt : dt_dnstap_log_client_response_messages",
+"content_dt : dt_dnstap_log_forwarder_query_messages",
+"content_dt : dt_dnstap_log_forwarder_response_messages",
+"dt_dnstap_enable : VAR_DNSTAP_ENABLE STRING_ARG",
+"dt_dnstap_socket_path : VAR_DNSTAP_SOCKET_PATH STRING_ARG",
+"dt_dnstap_ip : VAR_DNSTAP_IP STRING_ARG",
+"dt_dnstap_tls : VAR_DNSTAP_TLS STRING_ARG",
+"dt_dnstap_tls_server_name : VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG",
+"dt_dnstap_tls_cert_bundle : VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG",
+"dt_dnstap_tls_client_key_file : VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG",
+"dt_dnstap_tls_client_cert_file : VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG",
+"dt_dnstap_send_identity : VAR_DNSTAP_SEND_IDENTITY STRING_ARG",
+"dt_dnstap_send_version : VAR_DNSTAP_SEND_VERSION STRING_ARG",
+"dt_dnstap_identity : VAR_DNSTAP_IDENTITY STRING_ARG",
+"dt_dnstap_version : VAR_DNSTAP_VERSION STRING_ARG",
+"dt_dnstap_log_resolver_query_messages : VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG",
+"dt_dnstap_log_resolver_response_messages : VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG",
+"dt_dnstap_log_client_query_messages : VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG",
+"dt_dnstap_log_client_response_messages : VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG",
+"dt_dnstap_log_forwarder_query_messages : VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG",
+"dt_dnstap_log_forwarder_response_messages : VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG",
+"pythonstart : VAR_PYTHON",
+"contents_py : contents_py content_py",
+"contents_py :",
+"content_py : py_script",
+"py_script : VAR_PYTHON_SCRIPT STRING_ARG",
+"server_disable_dnssec_lame_check : VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG",
+"server_log_identity : VAR_LOG_IDENTITY STRING_ARG",
+"server_response_ip : VAR_RESPONSE_IP STRING_ARG STRING_ARG",
+"server_response_ip_data : VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG",
+"dnscstart : VAR_DNSCRYPT",
+"contents_dnsc : contents_dnsc content_dnsc",
+"contents_dnsc :",
+"content_dnsc : dnsc_dnscrypt_enable",
+"content_dnsc : dnsc_dnscrypt_port",
+"content_dnsc : dnsc_dnscrypt_provider",
+"content_dnsc : dnsc_dnscrypt_secret_key",
+"content_dnsc : dnsc_dnscrypt_provider_cert",
+"content_dnsc : dnsc_dnscrypt_provider_cert_rotated",
+"content_dnsc : dnsc_dnscrypt_shared_secret_cache_size",
+"content_dnsc : dnsc_dnscrypt_shared_secret_cache_slabs",
+"content_dnsc : dnsc_dnscrypt_nonce_cache_size",
+"content_dnsc : dnsc_dnscrypt_nonce_cache_slabs",
+"dnsc_dnscrypt_enable : VAR_DNSCRYPT_ENABLE STRING_ARG",
+"dnsc_dnscrypt_port : VAR_DNSCRYPT_PORT STRING_ARG",
+"dnsc_dnscrypt_provider : VAR_DNSCRYPT_PROVIDER STRING_ARG",
+"dnsc_dnscrypt_provider_cert : VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG",
+"dnsc_dnscrypt_provider_cert_rotated : VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG",
+"dnsc_dnscrypt_secret_key : VAR_DNSCRYPT_SECRET_KEY STRING_ARG",
+"dnsc_dnscrypt_shared_secret_cache_size : VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG",
+"dnsc_dnscrypt_shared_secret_cache_slabs : VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG",
+"dnsc_dnscrypt_nonce_cache_size : VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG",
+"dnsc_dnscrypt_nonce_cache_slabs : VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG",
+"cachedbstart : VAR_CACHEDB",
+"contents_cachedb : contents_cachedb content_cachedb",
+"contents_cachedb :",
+"content_cachedb : cachedb_backend_name",
+"content_cachedb : cachedb_secret_seed",
+"content_cachedb : redis_server_host",
+"content_cachedb : redis_server_port",
+"content_cachedb : redis_timeout",
+"cachedb_backend_name : VAR_CACHEDB_BACKEND STRING_ARG",
+"cachedb_secret_seed : VAR_CACHEDB_SECRETSEED STRING_ARG",
+"redis_server_host : VAR_CACHEDB_REDISHOST STRING_ARG",
+"redis_server_port : VAR_CACHEDB_REDISPORT STRING_ARG",
+"redis_timeout : VAR_CACHEDB_REDISTIMEOUT STRING_ARG",
+"server_tcp_connection_limit : VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG",
+"ipsetstart : VAR_IPSET",
+"contents_ipset : contents_ipset content_ipset",
+"contents_ipset :",
+"content_ipset : ipset_name_v4",
+"content_ipset : ipset_name_v6",
+"ipset_name_v4 : VAR_IPSET_NAME_V4 STRING_ARG",
+"ipset_name_v6 : VAR_IPSET_NAME_V6 STRING_ARG",
 
-  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     0,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     0,     1,     1,     1,     1,     1,
-       1,     1,     2,     0,     1,     1,     1,     1,     1,     1,
-       1,     1,     2,     0,     1,     1,     1,     1,     1,     1,
-       1,     1,     2,     2,     2,     2,     2,     1,     2,     0,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       3,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       3,     3,     4,     4,     4,     3,     3,     2,     2,     2,
-       2,     2,     2,     3,     3,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       3,     3,     3,     2,     2,     2,     1,     2,     0,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
-       2,     2,     2,     2,     2,     1,     2,     0,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     1,     2,     0,     1,     2,     2,
-       2,     3,     3,     1,     2,     0,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
-       1,     1,     1,     1,     2,     2,     2,     2,     2,     3,
-       1,     2,     0,     1,     1,     2,     2
 };
+#endif
 
+int      yydebug;
+int      yynerrs;
 
-#define yyerrok         (yyerrstatus = 0)
-#define yyclearin       (yychar = YYEMPTY)
-#define YYEMPTY         (-2)
-#define YYEOF           0
-
-#define YYACCEPT        goto yyacceptlab
-#define YYABORT         goto yyabortlab
-#define YYERROR         goto yyerrorlab
-
-
-#define YYRECOVERING()  (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value)                                    \
-  do                                                              \
-    if (yychar == YYEMPTY)                                        \
-      {                                                           \
-        yychar = (Token);                                         \
-        yylval = (Value);                                         \
-        YYPOPSTACK (yylen);                                       \
-        yystate = *yyssp;                                         \
-        goto yybackup;                                            \
-      }                                                           \
-    else                                                          \
-      {                                                           \
-        yyerror (YY_("syntax error: cannot back up")); \
-        YYERROR;                                                  \
-      }                                                           \
-  while (0)
-
-/* Error token number */
-#define YYTERROR        1
-#define YYERRCODE       256
-
-
-
-/* Enable debugging if requested.  */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args)                        \
-do {                                            \
-  if (yydebug)                                  \
-    YYFPRINTF Args;                             \
-} while (0)
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
 
-/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 10000
+#define YYMAXDEPTH  10000
+#endif
 #endif
 
+#define YYINITSTACKSIZE 200
 
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
-do {                                                                      \
-  if (yydebug)                                                            \
-    {                                                                     \
-      YYFPRINTF (stderr, "%s ", Title);                                   \
-      yy_symbol_print (stderr,                                            \
-                  Type, Value); \
-      YYFPRINTF (stderr, "\n");                                           \
-    }                                                                     \
-} while (0)
-
-
-/*-----------------------------------.
-| Print this symbol's value on YYO.  |
-`-----------------------------------*/
+typedef struct {
+    unsigned stacksize;
+    YYINT    *s_base;
+    YYINT    *s_mark;
+    YYINT    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 3237 "./util/configparser.y"
 
+/* parse helper routines could be here */
 static void
-yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
+validate_respip_action(const char* action)
 {
-  FILE *yyoutput = yyo;
-  YYUSE (yyoutput);
-  if (!yyvaluep)
-    return;
-# ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
-# endif
-  YYUSE (yytype);
+       if(strcmp(action, "deny")!=0 &&
+               strcmp(action, "redirect")!=0 &&
+               strcmp(action, "inform")!=0 &&
+               strcmp(action, "inform_deny")!=0 &&
+               strcmp(action, "always_transparent")!=0 &&
+               strcmp(action, "always_refuse")!=0 &&
+               strcmp(action, "always_nxdomain")!=0)
+       {
+               yyerror("response-ip action: expected deny, redirect, "
+                       "inform, inform_deny, always_transparent, "
+                       "always_refuse or always_nxdomain");
+       }
 }
 
 
-/*---------------------------.
-| Print this symbol on YYO.  |
-`---------------------------*/
+#line 1813 "util/configparser.c"
 
-static void
-yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
-{
-  YYFPRINTF (yyo, "%s %s (",
-             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
-
-  yy_symbol_value_print (yyo, yytype, yyvaluep);
-  YYFPRINTF (yyo, ")");
-}
+#if YYDEBUG
+#include <stdio.h>             /* needed for printf */
+#endif
 
-/*------------------------------------------------------------------.
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (included).                                                   |
-`------------------------------------------------------------------*/
+#include <stdlib.h>    /* needed for malloc, etc */
+#include <string.h>    /* needed for memset */
 
-static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
 {
-  YYFPRINTF (stderr, "Stack now");
-  for (; yybottom <= yytop; yybottom++)
-    {
-      int yybot = *yybottom;
-      YYFPRINTF (stderr, " %d", yybot);
-    }
-  YYFPRINTF (stderr, "\n");
+    int i;
+    unsigned newsize;
+    YYINT *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize = data->stacksize) == 0)
+        newsize = YYINITSTACKSIZE;
+    else if (newsize >= YYMAXDEPTH)
+        return YYENOMEM;
+    else if ((newsize *= 2) > YYMAXDEPTH)
+        newsize = YYMAXDEPTH;
+
+    i = (int) (data->s_mark - data->s_base);
+    newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss == 0)
+        return YYENOMEM;
+
+    data->s_base = newss;
+    data->s_mark = newss + i;
+
+    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs == 0)
+        return YYENOMEM;
+
+    data->l_base = newvs;
+    data->l_mark = newvs + i;
+
+    data->stacksize = newsize;
+    data->s_last = data->s_base + newsize - 1;
+    return 0;
 }
 
-# define YY_STACK_PRINT(Bottom, Top)                            \
-do {                                                            \
-  if (yydebug)                                                  \
-    yy_stack_print ((Bottom), (Top));                           \
-} while (0)
-
-
-/*------------------------------------------------.
-| Report that the YYRULE is going to be reduced.  |
-`------------------------------------------------*/
-
-static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
 {
-  unsigned long yylno = yyrline[yyrule];
-  int yynrhs = yyr2[yyrule];
-  int yyi;
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-             yyrule - 1, yylno);
-  /* The symbols being reduced.  */
-  for (yyi = 0; yyi < yynrhs; yyi++)
-    {
-      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr,
-                       yystos[yyssp[yyi + 1 - yynrhs]],
-                       &yyvsp[(yyi + 1) - (yynrhs)]
-                                              );
-      YYFPRINTF (stderr, "\n");
-    }
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
 }
-
-# define YY_REDUCE_PRINT(Rule)          \
-do {                                    \
-  if (yydebug)                          \
-    yy_reduce_print (yyssp, yyvsp, Rule); \
-} while (0)
-
-/* Nonzero means print parse trace.  It is left uninitialized so that
-   multiple parsers can coexist.  */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-# define YY_STACK_PRINT(Bottom, Top)
-# define YY_REDUCE_PRINT(Rule)
-#endif /* !YYDEBUG */
-
-
-/* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef YYINITDEPTH
-# define YYINITDEPTH 200
-#endif
-
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
-   if the built-in stack extension method is used).
-
-   Do not make this value too large; the results are undefined if
-   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-   evaluated with infinite-precision integer arithmetic.  */
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
+#else
+#define yyfreestack(data) /* nothing */
 #endif
 
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
 
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-static YYSIZE_T
-yystrlen (const char *yystr)
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-static char *
-yystpcpy (char *yydest, const char *yysrc)
+int
+YYPARSE_DECL()
 {
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
 
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
+    if ((yys = getenv("YYDEBUG")) != 0)
     {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-        switch (*++yyp)
-          {
-          case '\'':
-          case ',':
-            goto do_not_strip_quotes;
-
-          case '\\':
-            if (*++yyp != '\\')
-              goto do_not_strip_quotes;
-            else
-              goto append;
-
-          append:
-          default:
-            if (yyres)
-              yyres[yyn] = *yyp;
-            yyn++;
-            break;
-
-          case '"':
-            if (yyres)
-              yyres[yyn] = '\0';
-            return yyn;
-          }
-    do_not_strip_quotes: ;
+        yyn = *yys;
+        if (yyn >= '0' && yyn <= '9')
+            yydebug = yyn - '0';
     }
+#endif
 
-  if (! yyres)
-    return yystrlen (yystr);
+    yynerrs = 0;
+    yyerrflag = 0;
+    yychar = YYEMPTY;
+    yystate = 0;
 
-  return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
-}
-# endif
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
 
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
-   about the unexpected token YYTOKEN for the state stack whose top is
-   YYSSP.
+    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
+    yystack.s_mark = yystack.s_base;
+    yystack.l_mark = yystack.l_base;
+    yystate = 0;
+    *yystack.s_mark = 0;
 
-   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
-   not large enough to hold the message.  In that case, also set
-   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
-   required number of bytes is too large to store.  */
-static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-                yytype_int16 *yyssp, int yytoken)
-{
-  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
-  YYSIZE_T yysize = yysize0;
-  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-  /* Internationalized format string. */
-  const char *yyformat = YY_NULLPTR;
-  /* Arguments of yyformat. */
-  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-  /* Number of reported tokens (one for the "unexpected", one per
-     "expected"). */
-  int yycount = 0;
-
-  /* There are many possibilities here to consider:
-     - If this state is a consistent state with a default action, then
-       the only way this function was invoked is if the default action
-       is an error action.  In that case, don't check for expected
-       tokens because there are none.
-     - The only way there can be no lookahead present (in yychar) is if
-       this state is a consistent state with a default action.  Thus,
-       detecting the absence of a lookahead is sufficient to determine
-       that there is no unexpected or expected token to report.  In that
-       case, just report a simple "syntax error".
-     - Don't assume there isn't a lookahead just because this state is a
-       consistent state with a default action.  There might have been a
-       previous inconsistent state, consistent state with a non-default
-       action, or user semantic action that manipulated yychar.
-     - Of course, the expected token list depends on states to have
-       correct lookahead information, and it depends on the parser not
-       to perform extra reductions after fetching a lookahead from the
-       scanner and before detecting a syntax error.  Thus, state merging
-       (from LALR or IELR) and default reductions corrupt the expected
-       token list.  However, the list is correct for canonical LR with
-       one exception: it will still contain any token that will not be
-       accepted due to an error action in a later state.
-  */
-  if (yytoken != YYEMPTY)
+yyloop:
+    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
+    if (yychar < 0)
     {
-      int yyn = yypact[*yyssp];
-      yyarg[yycount++] = yytname[yytoken];
-      if (!yypact_value_is_default (yyn))
+        if ((yychar = YYLEX) < 0) yychar = YYEOF;
+#if YYDEBUG
+        if (yydebug)
         {
-          /* Start YYX at -YYN if negative to avoid negative indexes in
-             YYCHECK.  In other words, skip the first -YYN actions for
-             this state because they are default actions.  */
-          int yyxbegin = yyn < 0 ? -yyn : 0;
-          /* Stay within bounds of both yycheck and yytname.  */
-          int yychecklim = YYLAST - yyn + 1;
-          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-          int yyx;
-
-          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
-                && !yytable_value_is_error (yytable[yyx + yyn]))
-              {
-                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-                  {
-                    yycount = 1;
-                    yysize = yysize0;
-                    break;
-                  }
-                yyarg[yycount++] = yytname[yyx];
-                {
-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
-                    yysize = yysize1;
-                  else
-                    return 2;
-                }
-              }
+            yys = yyname[YYTRANSLATE(yychar)];
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
         }
+#endif
     }
-
-  switch (yycount)
-    {
-# define YYCASE_(N, S)                      \
-      case N:                               \
-        yyformat = S;                       \
-      break
-    default: /* Avoid compiler warnings. */
-      YYCASE_(0, YY_("syntax error"));
-      YYCASE_(1, YY_("syntax error, unexpected %s"));
-      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
-      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
-      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
-      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-# undef YYCASE_
-    }
-
-  {
-    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
-      yysize = yysize1;
-    else
-      return 2;
-  }
-
-  if (*yymsg_alloc < yysize)
+    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
+            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
     {
-      *yymsg_alloc = 2 * yysize;
-      if (! (yysize <= *yymsg_alloc
-             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
-        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
-      return 1;
-    }
-
-  /* Avoid sprintf, as that infringes on the user's name space.
-     Don't have undefined behavior even if the translation
-     produced a string with the wrong number of "%s"s.  */
-  {
-    char *yyp = *yymsg;
-    int yyi = 0;
-    while ((*yyp = *yyformat) != '\0')
-      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
-        {
-          yyp += yytnamerr (yyp, yyarg[yyi++]);
-          yyformat += 2;
-        }
-      else
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
         {
-          yyp++;
-          yyformat++;
+            goto yyoverflow;
         }
-  }
-  return 0;
-}
-#endif /* YYERROR_VERBOSE */
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol.  |
-`-----------------------------------------------*/
-
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-{
-  YYUSE (yyvaluep);
-  if (!yymsg)
-    yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YYUSE (yytype);
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-}
-
-
-
-
-/* The lookahead symbol.  */
-int yychar;
-
-/* The semantic value of the lookahead symbol.  */
-YYSTYPE yylval;
-/* Number of syntax errors so far.  */
-int yynerrs;
-
-
-/*----------.
-| yyparse.  |
-`----------*/
-
-int
-yyparse (void)
-{
-    int yystate;
-    /* Number of tokens to shift before error messages enabled.  */
-    int yyerrstatus;
-
-    /* The stacks and their tools:
-       'yyss': related to states.
-       'yyvs': related to semantic values.
-
-       Refer to the stacks through separate pointers, to allow yyoverflow
-       to reallocate them elsewhere.  */
-
-    /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
-
-    /* The semantic value stack.  */
-    YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs;
-    YYSTYPE *yyvsp;
-
-    YYSIZE_T yystacksize;
-
-  int yyn;
-  int yyresult;
-  /* Lookahead token as an internal (translated) token number.  */
-  int yytoken = 0;
-  /* The variables used to return semantic value and location from the
-     action routines.  */
-  YYSTYPE yyval;
-
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
-
-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
-
-  /* The number of symbols on the RHS of the reduced rule.
-     Keep to zero when no symbol should be popped.  */
-  int yylen = 0;
-
-  yyssp = yyss = yyssa;
-  yyvsp = yyvs = yyvsa;
-  yystacksize = YYINITDEPTH;
-
-  YYDPRINTF ((stderr, "Starting parse\n"));
-
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
-  yychar = YYEMPTY; /* Cause a token to be read.  */
-  goto yysetstate;
-
-
-/*------------------------------------------------------------.
-| yynewstate -- push a new state, which is found in yystate.  |
-`------------------------------------------------------------*/
-yynewstate:
-  /* In all cases, when you get here, the value and location stacks
-     have just been pushed.  So pushing a state here evens the stacks.  */
-  yyssp++;
-
-
-/*--------------------------------------------------------------------.
-| yynewstate -- set current state (the top of the stack) to yystate.  |
-`--------------------------------------------------------------------*/
-yysetstate:
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
-  *yyssp = (yytype_int16) yystate;
-
-  if (yyss + yystacksize - 1 <= yyssp)
-#if !defined yyoverflow && !defined YYSTACK_RELOCATE
-    goto yyexhaustedlab;
-#else
+        yystate = yytable[yyn];
+        *++yystack.s_mark = yytable[yyn];
+        *++yystack.l_mark = yylval;
+        yychar = YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
+            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
     {
-      /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
-
-# if defined yyoverflow
-      {
-        /* Give user a chance to reallocate the stack.  Use copies of
-           these so that the &'s don't force the real ones into
-           memory.  */
-        YYSTYPE *yyvs1 = yyvs;
-        yytype_int16 *yyss1 = yyss;
-
-        /* Each stack pointer address is followed by the size of the
-           data in use in that stack, in bytes.  This used to be a
-           conditional around just the two extra args, but that might
-           be undefined if yyoverflow is a macro.  */
-        yyoverflow (YY_("memory exhausted"),
-                    &yyss1, yysize * sizeof (*yyssp),
-                    &yyvs1, yysize * sizeof (*yyvsp),
-                    &yystacksize);
-        yyss = yyss1;
-        yyvs = yyvs1;
-      }
-# else /* defined YYSTACK_RELOCATE */
-      /* Extend the stack our own way.  */
-      if (YYMAXDEPTH <= yystacksize)
-        goto yyexhaustedlab;
-      yystacksize *= 2;
-      if (YYMAXDEPTH < yystacksize)
-        yystacksize = YYMAXDEPTH;
-
-      {
-        yytype_int16 *yyss1 = yyss;
-        union yyalloc *yyptr =
-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-        if (! yyptr)
-          goto yyexhaustedlab;
-        YYSTACK_RELOCATE (yyss_alloc, yyss);
-        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-# undef YYSTACK_RELOCATE
-        if (yyss1 != yyssa)
-          YYSTACK_FREE (yyss1);
-      }
-# endif
-
-      yyssp = yyss + yysize - 1;
-      yyvsp = yyvs + yysize - 1;
-
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long) yystacksize));
-
-      if (yyss + yystacksize - 1 <= yyssp)
-        YYABORT;
+        yyn = yytable[yyn];
+        goto yyreduce;
     }
-#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
-
-  if (yystate == YYFINAL)
-    YYACCEPT;
+    if (yyerrflag) goto yyinrecovery;
 
-  goto yybackup;
+    YYERROR_CALL("syntax error");
 
+    goto yyerrlab;
 
-/*-----------.
-| yybackup.  |
-`-----------*/
-yybackup:
-  /* Do appropriate processing given the current state.  Read a
-     lookahead token if we need one and don't already have one.  */
-
-  /* First try to decide what to do without reference to lookahead token.  */
-  yyn = yypact[yystate];
-  if (yypact_value_is_default (yyn))
-    goto yydefault;
-
-  /* Not known => get a lookahead token if don't already have one.  */
-
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
-  if (yychar == YYEMPTY)
-    {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = yylex ();
-    }
+yyerrlab:
+    ++yynerrs;
 
-  if (yychar <= YYEOF)
-    {
-      yychar = yytoken = YYEOF;
-      YYDPRINTF ((stderr, "Now at end of input.\n"));
-    }
-  else
+yyinrecovery:
+    if (yyerrflag < 3)
     {
-      yytoken = YYTRANSLATE (yychar);
-      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+        yyerrflag = 3;
+        for (;;)
+        {
+            if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&
+                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
+                {
+                    goto yyoverflow;
+                }
+                yystate = yytable[yyn];
+                *++yystack.s_mark = yytable[yyn];
+                *++yystack.l_mark = yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <= yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
     }
-
-  /* If the proper action on seeing token YYTOKEN is to reduce or to
-     detect an error, take that action.  */
-  yyn += yytoken;
-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
-    goto yydefault;
-  yyn = yytable[yyn];
-  if (yyn <= 0)
+    else
     {
-      if (yytable_value_is_error (yyn))
-        goto yyerrlab;
-      yyn = -yyn;
-      goto yyreduce;
+        if (yychar == YYEOF) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys = yyname[YYTRANSLATE(yychar)];
+            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar = YYEMPTY;
+        goto yyloop;
     }
 
-  /* Count tokens shifted since error; after three, turn off error
-     status.  */
-  if (yyerrstatus)
-    yyerrstatus--;
-
-  /* Shift the lookahead token.  */
-  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
-  yystate = yyn;
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-  goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state.  |
-`-----------------------------------------------------------*/
-yydefault:
-  yyn = yydefact[yystate];
-  if (yyn == 0)
-    goto yyerrlab;
-  goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- do a reduction.  |
-`-----------------------------*/
 yyreduce:
-  /* yyn is the number of a rule to reduce with.  */
-  yylen = yyr2[yyn];
-
-  /* If YYLEN is nonzero, implement the default value of the action:
-     '$$ = $1'.
-
-     Otherwise, the following line sets YYVAL to garbage.
-     This behavior is undocumented and Bison
-     users should not rely upon it.  Assigning to YYVAL
-     unconditionally makes the parser a bit smaller, and it avoids a
-     GCC warning that YYVAL may be used uninitialized.  */
-  yyval = yyvsp[1-yylen];
-
-
-  YY_REDUCE_PRINT (yyn);
-  switch (yyn)
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym = yylen[yyn];
+    if (yym)
+        yyval = yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
     {
-  case 16:
-#line 189 "./util/configparser.y"
-    { 
+case 15:
+#line 191 "./util/configparser.y"
+       
                OUTYY(("\nP(server:)\n")); 
        }
-#line 2706 "util/configparser.c"
-    break;
-
-  case 212:
-#line 282 "./util/configparser.y"
-    {
+break;
+case 211:
+#line 284 "./util/configparser.y"
+       {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
                s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
@@ -2717,12 +2029,10 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2721 "util/configparser.c"
-    break;
-
-  case 222:
-#line 299 "./util/configparser.y"
-    {
+break;
+case 221:
+#line 301 "./util/configparser.y"
+       {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
                s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
@@ -2732,12 +2042,10 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2736 "util/configparser.c"
-    break;
-
-  case 231:
-#line 316 "./util/configparser.y"
-    {
+break;
+case 230:
+#line 318 "./util/configparser.y"
+       {
                struct config_view* s;
                OUTYY(("\nP(view:)\n")); 
                s = (struct config_view*)calloc(1, sizeof(struct config_view));
@@ -2749,12 +2057,10 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2753 "util/configparser.c"
-    break;
-
-  case 241:
-#line 335 "./util/configparser.y"
-    {
+break;
+case 240:
+#line 337 "./util/configparser.y"
+       {
                struct config_auth* s;
                OUTYY(("\nP(auth_zone:)\n")); 
                s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
@@ -2769,18 +2075,16 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2773 "util/configparser.c"
-    break;
-
-  case 252:
-#line 359 "./util/configparser.y"
-    {
+break;
+case 251:
+#line 361 "./util/configparser.y"
+       {
                uint8_t* bitlist;
                size_t len = 0;
-               OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str)));
-               bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
+               OUTYY(("P(server_local_zone_tag:%s)\n", yystack.l_mark[0].str));
+               bitlist = config_parse_taglist(cfg_parser->cfg, yystack.l_mark[0].str,
                        &len);
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
                if(!bitlist) {
                        yyerror("could not parse tags, (define-tag them first)");
                }
@@ -2790,63 +2094,53 @@ yyreduce:
 
                }
        }
-#line 2794 "util/configparser.c"
-    break;
-
-  case 253:
-#line 378 "./util/configparser.y"
-    {
-               OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
-                  strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 &&
-                  strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) {
+break;
+case 252:
+#line 380 "./util/configparser.y"
+       {
+               OUTYY(("P(rpz_action_override:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "nxdomain")!=0 && strcmp(yystack.l_mark[0].str, "nodata")!=0 &&
+                  strcmp(yystack.l_mark[0].str, "passthru")!=0 && strcmp(yystack.l_mark[0].str, "drop")!=0 &&
+                  strcmp(yystack.l_mark[0].str, "cname")!=0 && strcmp(yystack.l_mark[0].str, "disabled")!=0) {
                        yyerror("rpz-action-override action: expected nxdomain, "
                                "nodata, passthru, drop, cname or disabled");
-                       free((yyvsp[0].str));
+                       free(yystack.l_mark[0].str);
                        cfg_parser->cfg->auths->rpz_action_override = NULL;
                }
                else {
-                       cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
+                       cfg_parser->cfg->auths->rpz_action_override = yystack.l_mark[0].str;
                }
        }
-#line 2813 "util/configparser.c"
-    break;
-
-  case 254:
-#line 395 "./util/configparser.y"
-    {
-               OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
+break;
+case 253:
+#line 397 "./util/configparser.y"
+       {
+               OUTYY(("P(rpz_cname_override:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->auths->rpz_cname);
-               cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
+               cfg_parser->cfg->auths->rpz_cname = yystack.l_mark[0].str;
        }
-#line 2823 "util/configparser.c"
-    break;
-
-  case 255:
-#line 403 "./util/configparser.y"
-    {
-               OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 254:
+#line 405 "./util/configparser.y"
+       {
+               OUTYY(("P(rpz_log:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->auths->rpz_log = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 2835 "util/configparser.c"
-    break;
-
-  case 256:
-#line 413 "./util/configparser.y"
-    {
-               OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
+break;
+case 255:
+#line 415 "./util/configparser.y"
+       {
+               OUTYY(("P(rpz_log_name:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->auths->rpz_log_name);
-               cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
+               cfg_parser->cfg->auths->rpz_log_name = yystack.l_mark[0].str;
        }
-#line 2845 "util/configparser.c"
-    break;
-
-  case 257:
-#line 421 "./util/configparser.y"
-    {
+break;
+case 256:
+#line 423 "./util/configparser.y"
+       {
                struct config_auth* s;
                OUTYY(("\nP(rpz:)\n")); 
                s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
@@ -2861,292 +2155,254 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2865 "util/configparser.c"
-    break;
-
-  case 270:
-#line 444 "./util/configparser.y"
-    { 
-               OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); 
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 269:
+#line 446 "./util/configparser.y"
+       { 
+               OUTYY(("P(server_num_threads:%s)\n", yystack.l_mark[0].str)); 
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
-       }
-#line 2877 "util/configparser.c"
-    break;
-
-  case 271:
-#line 453 "./util/configparser.y"
-    { 
-               OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); 
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               else cfg_parser->cfg->num_threads = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
+       }
+break;
+case 270:
+#line 455 "./util/configparser.y"
+       { 
+               OUTYY(("P(server_verbosity:%s)\n", yystack.l_mark[0].str)); 
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
-       }
-#line 2889 "util/configparser.c"
-    break;
-
-  case 272:
-#line 462 "./util/configparser.y"
-    { 
-               OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); 
-               if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
+               else cfg_parser->cfg->verbosity = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
+       }
+break;
+case 271:
+#line 464 "./util/configparser.y"
+       { 
+               OUTYY(("P(server_statistics_interval:%s)\n", yystack.l_mark[0].str)); 
+               if(strcmp(yystack.l_mark[0].str, "") == 0 || strcmp(yystack.l_mark[0].str, "0") == 0)
                        cfg_parser->cfg->stat_interval = 0;
-               else if(atoi((yyvsp[0].str)) == 0)
+               else if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->stat_interval = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 2903 "util/configparser.c"
-    break;
-
-  case 273:
-#line 473 "./util/configparser.y"
-    {
-               OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 272:
+#line 475 "./util/configparser.y"
+       {
+               OUTYY(("P(server_statistics_cumulative:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->stat_cumulative = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 2915 "util/configparser.c"
-    break;
-
-  case 274:
-#line 482 "./util/configparser.y"
-    {
-               OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 273:
+#line 484 "./util/configparser.y"
+       {
+               OUTYY(("P(server_extended_statistics:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->stat_extended = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 2927 "util/configparser.c"
-    break;
-
-  case 275:
-#line 491 "./util/configparser.y"
-    {
-               OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 274:
+#line 493 "./util/configparser.y"
+       {
+               OUTYY(("P(server_shm_enable:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
-       }
-#line 2939 "util/configparser.c"
-    break;
-
-  case 276:
-#line 500 "./util/configparser.y"
-    { 
-               OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); 
-               if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
+               else cfg_parser->cfg->shm_enable = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
+       }
+break;
+case 275:
+#line 502 "./util/configparser.y"
+       { 
+               OUTYY(("P(server_shm_key:%s)\n", yystack.l_mark[0].str)); 
+               if(strcmp(yystack.l_mark[0].str, "") == 0 || strcmp(yystack.l_mark[0].str, "0") == 0)
                        cfg_parser->cfg->shm_key = 0;
-               else if(atoi((yyvsp[0].str)) == 0)
+               else if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->shm_key = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 2953 "util/configparser.c"
-    break;
-
-  case 277:
-#line 511 "./util/configparser.y"
-    {
-               OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 276:
+#line 513 "./util/configparser.y"
+       {
+               OUTYY(("P(server_port:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("port number expected");
-               else cfg_parser->cfg->port = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->port = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 2965 "util/configparser.c"
-    break;
-
-  case 278:
-#line 520 "./util/configparser.y"
-    {
+break;
+case 277:
+#line 522 "./util/configparser.y"
+       {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str)))
+               OUTYY(("P(server_send_client_subnet:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, yystack.l_mark[0].str))
                        fatal_exit("out of memory adding client-subnet");
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        #endif
        }
-#line 2980 "util/configparser.c"
-    break;
-
-  case 279:
-#line 532 "./util/configparser.y"
-    {
+break;
+case 278:
+#line 534 "./util/configparser.y"
+       {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
+               OUTYY(("P(server_client_subnet_zone:%s)\n", yystack.l_mark[0].str));
                if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
-                       (yyvsp[0].str)))
+                       yystack.l_mark[0].str))
                        fatal_exit("out of memory adding client-subnet-zone");
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        #endif
        }
-#line 2996 "util/configparser.c"
-    break;
-
-  case 280:
-#line 546 "./util/configparser.y"
-    {
+break;
+case 279:
+#line 548 "./util/configparser.y"
+       {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+               OUTYY(("P(server_client_subnet_always_forward:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else
                        cfg_parser->cfg->client_subnet_always_forward =
-                               (strcmp((yyvsp[0].str), "yes")==0);
+                               (strcmp(yystack.l_mark[0].str, "yes")==0);
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3014 "util/configparser.c"
-    break;
-
-  case 281:
-#line 561 "./util/configparser.y"
-    {
+break;
+case 280:
+#line 563 "./util/configparser.y"
+       {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
+               OUTYY(("P(client_subnet_opcode:%s)\n", yystack.l_mark[0].str));
                OUTYY(("P(Deprecated option, ignoring)\n"));
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3028 "util/configparser.c"
-    break;
-
-  case 282:
-#line 572 "./util/configparser.y"
-    {
+break;
+case 281:
+#line 574 "./util/configparser.y"
+       {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(max_client_subnet_ipv4:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("IPv4 subnet length expected");
-               else if (atoi((yyvsp[0].str)) > 32)
+               else if (atoi(yystack.l_mark[0].str) > 32)
                        cfg_parser->cfg->max_client_subnet_ipv4 = 32;
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi(yystack.l_mark[0].str) < 0)
                        cfg_parser->cfg->max_client_subnet_ipv4 = 0;
-               else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
+               else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi(yystack.l_mark[0].str);
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3048 "util/configparser.c"
-    break;
-
-  case 283:
-#line 589 "./util/configparser.y"
-    {
+break;
+case 282:
+#line 591 "./util/configparser.y"
+       {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(max_client_subnet_ipv6:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("Ipv6 subnet length expected");
-               else if (atoi((yyvsp[0].str)) > 128)
+               else if (atoi(yystack.l_mark[0].str) > 128)
                        cfg_parser->cfg->max_client_subnet_ipv6 = 128;
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi(yystack.l_mark[0].str) < 0)
                        cfg_parser->cfg->max_client_subnet_ipv6 = 0;
-               else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
+               else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi(yystack.l_mark[0].str);
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3068 "util/configparser.c"
-    break;
-
-  case 284:
-#line 606 "./util/configparser.y"
-    {
+break;
+case 283:
+#line 608 "./util/configparser.y"
+       {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(min_client_subnet_ipv4:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("IPv4 subnet length expected");
-               else if (atoi((yyvsp[0].str)) > 32)
+               else if (atoi(yystack.l_mark[0].str) > 32)
                        cfg_parser->cfg->min_client_subnet_ipv4 = 32;
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi(yystack.l_mark[0].str) < 0)
                        cfg_parser->cfg->min_client_subnet_ipv4 = 0;
-               else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
+               else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi(yystack.l_mark[0].str);
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3088 "util/configparser.c"
-    break;
-
-  case 285:
-#line 623 "./util/configparser.y"
-    {
+break;
+case 284:
+#line 625 "./util/configparser.y"
+       {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(min_client_subnet_ipv6:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("Ipv6 subnet length expected");
-               else if (atoi((yyvsp[0].str)) > 128)
+               else if (atoi(yystack.l_mark[0].str) > 128)
                        cfg_parser->cfg->min_client_subnet_ipv6 = 128;
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi(yystack.l_mark[0].str) < 0)
                        cfg_parser->cfg->min_client_subnet_ipv6 = 0;
-               else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
+               else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi(yystack.l_mark[0].str);
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3108 "util/configparser.c"
-    break;
-
-  case 286:
-#line 640 "./util/configparser.y"
-    {
+break;
+case 285:
+#line 642 "./util/configparser.y"
+       {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("IPv4 ECS tree size expected");
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi(yystack.l_mark[0].str) < 0)
                        cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0;
-               else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str));
+               else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi(yystack.l_mark[0].str);
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3126 "util/configparser.c"
-    break;
-
-  case 287:
-#line 655 "./util/configparser.y"
-    {
+break;
+case 286:
+#line 657 "./util/configparser.y"
+       {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("IPv6 ECS tree size expected");
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi(yystack.l_mark[0].str) < 0)
                        cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0;
-               else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str));
+               else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi(yystack.l_mark[0].str);
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3144 "util/configparser.c"
-    break;
-
-  case 288:
-#line 670 "./util/configparser.y"
-    {
-               OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
+break;
+case 287:
+#line 672 "./util/configparser.y"
+       {
+               OUTYY(("P(server_interface:%s)\n", yystack.l_mark[0].str));
                if(cfg_parser->cfg->num_ifs == 0)
                        cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
                else    cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
@@ -3154,15 +2410,13 @@ yyreduce:
                if(!cfg_parser->cfg->ifs)
                        yyerror("out of memory");
                else
-                       cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
+                       cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = yystack.l_mark[0].str;
        }
-#line 3160 "util/configparser.c"
-    break;
-
-  case 289:
-#line 683 "./util/configparser.y"
-    {
-               OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
+break;
+case 288:
+#line 685 "./util/configparser.y"
+       {
+               OUTYY(("P(server_outgoing_interface:%s)\n", yystack.l_mark[0].str));
                if(cfg_parser->cfg->num_out_ifs == 0)
                        cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
                else    cfg_parser->cfg->out_ifs = realloc(
@@ -3172,496 +2426,414 @@ yyreduce:
                        yyerror("out of memory");
                else
                        cfg_parser->cfg->out_ifs[
-                               cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
+                               cfg_parser->cfg->num_out_ifs++] = yystack.l_mark[0].str;
        }
-#line 3178 "util/configparser.c"
-    break;
-
-  case 290:
-#line 698 "./util/configparser.y"
-    {
-               OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 289:
+#line 700 "./util/configparser.y"
+       {
+               OUTYY(("P(server_outgoing_range:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->outgoing_num_ports = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 3190 "util/configparser.c"
-    break;
-
-  case 291:
-#line 707 "./util/configparser.y"
-    {
-               OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
-               if(!cfg_mark_ports((yyvsp[0].str), 1, 
+break;
+case 290:
+#line 709 "./util/configparser.y"
+       {
+               OUTYY(("P(server_outgoing_port_permit:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_mark_ports(yystack.l_mark[0].str, 1, 
                        cfg_parser->cfg->outgoing_avail_ports, 65536))
                        yyerror("port number or range (\"low-high\") expected");
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3202 "util/configparser.c"
-    break;
-
-  case 292:
-#line 716 "./util/configparser.y"
-    {
-               OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
-               if(!cfg_mark_ports((yyvsp[0].str), 0, 
+break;
+case 291:
+#line 718 "./util/configparser.y"
+       {
+               OUTYY(("P(server_outgoing_port_avoid:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_mark_ports(yystack.l_mark[0].str, 0, 
                        cfg_parser->cfg->outgoing_avail_ports, 65536))
                        yyerror("port number or range (\"low-high\") expected");
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3214 "util/configparser.c"
-    break;
-
-  case 293:
-#line 725 "./util/configparser.y"
-    {
-               OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 292:
+#line 727 "./util/configparser.y"
+       {
+               OUTYY(("P(server_outgoing_num_tcp:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->outgoing_num_tcp = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 3226 "util/configparser.c"
-    break;
-
-  case 294:
-#line 734 "./util/configparser.y"
-    {
-               OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 293:
+#line 736 "./util/configparser.y"
+       {
+               OUTYY(("P(server_incoming_num_tcp:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->incoming_num_tcp = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 3238 "util/configparser.c"
-    break;
-
-  case 295:
-#line 743 "./util/configparser.y"
-    {
-               OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 294:
+#line 745 "./util/configparser.y"
+       {
+               OUTYY(("P(server_interface_automatic:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->if_automatic = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3250 "util/configparser.c"
-    break;
-
-  case 296:
-#line 752 "./util/configparser.y"
-    {
-               OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 295:
+#line 754 "./util/configparser.y"
+       {
+               OUTYY(("P(server_do_ip4:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->do_ip4 = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3262 "util/configparser.c"
-    break;
-
-  case 297:
-#line 761 "./util/configparser.y"
-    {
-               OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 296:
+#line 763 "./util/configparser.y"
+       {
+               OUTYY(("P(server_do_ip6:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->do_ip6 = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3274 "util/configparser.c"
-    break;
-
-  case 298:
-#line 770 "./util/configparser.y"
-    {
-               OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 297:
+#line 772 "./util/configparser.y"
+       {
+               OUTYY(("P(server_do_udp:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->do_udp = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3286 "util/configparser.c"
-    break;
-
-  case 299:
-#line 779 "./util/configparser.y"
-    {
-               OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 298:
+#line 781 "./util/configparser.y"
+       {
+               OUTYY(("P(server_do_tcp:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->do_tcp = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3298 "util/configparser.c"
-    break;
-
-  case 300:
-#line 788 "./util/configparser.y"
-    {
-               OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 299:
+#line 790 "./util/configparser.y"
+       {
+               OUTYY(("P(server_prefer_ip4:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->prefer_ip4 = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3310 "util/configparser.c"
-    break;
-
-  case 301:
-#line 797 "./util/configparser.y"
-    {
-               OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 300:
+#line 799 "./util/configparser.y"
+       {
+               OUTYY(("P(server_prefer_ip6:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->prefer_ip6 = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3322 "util/configparser.c"
-    break;
-
-  case 302:
-#line 806 "./util/configparser.y"
-    {
-               OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
-                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 301:
+#line 808 "./util/configparser.y"
+       {
+               OUTYY(("P(server_tcp_mss:%s)\n", yystack.l_mark[0].str));
+                if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                         yyerror("number expected");
-                else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
-                free((yyvsp[0].str));
+                else cfg_parser->cfg->tcp_mss = atoi(yystack.l_mark[0].str);
+                free(yystack.l_mark[0].str);
        }
-#line 3334 "util/configparser.c"
-    break;
-
-  case 303:
-#line 815 "./util/configparser.y"
-    {
-               OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 302:
+#line 817 "./util/configparser.y"
+       {
+               OUTYY(("P(server_outgoing_tcp_mss:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->outgoing_tcp_mss = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 3346 "util/configparser.c"
-    break;
-
-  case 304:
-#line 824 "./util/configparser.y"
-    {
-               OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 303:
+#line 826 "./util/configparser.y"
+       {
+               OUTYY(("P(server_tcp_idle_timeout:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else if (atoi((yyvsp[0].str)) > 120000)
+               else if (atoi(yystack.l_mark[0].str) > 120000)
                        cfg_parser->cfg->tcp_idle_timeout = 120000;
-               else if (atoi((yyvsp[0].str)) < 1)
+               else if (atoi(yystack.l_mark[0].str) < 1)
                        cfg_parser->cfg->tcp_idle_timeout = 1;
-               else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->tcp_idle_timeout = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 3362 "util/configparser.c"
-    break;
-
-  case 305:
-#line 837 "./util/configparser.y"
-    {
-               OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 304:
+#line 839 "./util/configparser.y"
+       {
+               OUTYY(("P(server_tcp_keepalive:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->do_tcp_keepalive = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3374 "util/configparser.c"
-    break;
-
-  case 306:
-#line 846 "./util/configparser.y"
-    {
-               OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 305:
+#line 848 "./util/configparser.y"
+       {
+               OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else if (atoi((yyvsp[0].str)) > 6553500)
+               else if (atoi(yystack.l_mark[0].str) > 6553500)
                        cfg_parser->cfg->tcp_keepalive_timeout = 6553500;
-               else if (atoi((yyvsp[0].str)) < 1)
+               else if (atoi(yystack.l_mark[0].str) < 1)
                        cfg_parser->cfg->tcp_keepalive_timeout = 0;
-               else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->tcp_keepalive_timeout = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 3390 "util/configparser.c"
-    break;
-
-  case 307:
-#line 859 "./util/configparser.y"
-    {
-               OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 306:
+#line 861 "./util/configparser.y"
+       {
+               OUTYY(("P(server_tcp_upstream:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->tcp_upstream = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3402 "util/configparser.c"
-    break;
-
-  case 308:
-#line 868 "./util/configparser.y"
-    {
-               OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 307:
+#line 870 "./util/configparser.y"
+       {
+               OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3414 "util/configparser.c"
-    break;
-
-  case 309:
-#line 877 "./util/configparser.y"
-    {
-               OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 308:
+#line 879 "./util/configparser.y"
+       {
+               OUTYY(("P(server_ssl_upstream:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ssl_upstream = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3426 "util/configparser.c"
-    break;
-
-  case 310:
-#line 886 "./util/configparser.y"
-    {
-               OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
+break;
+case 309:
+#line 888 "./util/configparser.y"
+       {
+               OUTYY(("P(server_ssl_service_key:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->ssl_service_key);
-               cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
+               cfg_parser->cfg->ssl_service_key = yystack.l_mark[0].str;
        }
-#line 3436 "util/configparser.c"
-    break;
-
-  case 311:
-#line 893 "./util/configparser.y"
-    {
-               OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
+break;
+case 310:
+#line 895 "./util/configparser.y"
+       {
+               OUTYY(("P(server_ssl_service_pem:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->ssl_service_pem);
-               cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
+               cfg_parser->cfg->ssl_service_pem = yystack.l_mark[0].str;
        }
-#line 3446 "util/configparser.c"
-    break;
-
-  case 312:
-#line 900 "./util/configparser.y"
-    {
-               OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 311:
+#line 902 "./util/configparser.y"
+       {
+               OUTYY(("P(server_ssl_port:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("port number expected");
-               else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ssl_port = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 3458 "util/configparser.c"
-    break;
-
-  case 313:
-#line 909 "./util/configparser.y"
-    {
-               OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
+break;
+case 312:
+#line 911 "./util/configparser.y"
+       {
+               OUTYY(("P(server_tls_cert_bundle:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->tls_cert_bundle);
-               cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
+               cfg_parser->cfg->tls_cert_bundle = yystack.l_mark[0].str;
        }
-#line 3468 "util/configparser.c"
-    break;
-
-  case 314:
-#line 916 "./util/configparser.y"
-    {
-               OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 313:
+#line 918 "./util/configparser.y"
+       {
+               OUTYY(("P(server_tls_win_cert:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->tls_win_cert = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3480 "util/configparser.c"
-    break;
-
-  case 315:
-#line 925 "./util/configparser.y"
-    {
-               OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
+break;
+case 314:
+#line 927 "./util/configparser.y"
+       {
+               OUTYY(("P(server_tls_additional_port:%s)\n", yystack.l_mark[0].str));
                if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
-                       (yyvsp[0].str)))
+                       yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 3491 "util/configparser.c"
-    break;
-
-  case 316:
-#line 933 "./util/configparser.y"
-    {
-               OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
+break;
+case 315:
+#line 935 "./util/configparser.y"
+       {
+               OUTYY(("P(server_tls_ciphers:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->tls_ciphers);
-               cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
-       }
-#line 3501 "util/configparser.c"
-    break;
-
-  case 317:
-#line 940 "./util/configparser.y"
-    {
-               OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
+               cfg_parser->cfg->tls_ciphers = yystack.l_mark[0].str;
+       }
+break;
+case 316:
+#line 942 "./util/configparser.y"
+       {
+               OUTYY(("P(server_tls_ciphersuites:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->tls_ciphersuites);
-               cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
+               cfg_parser->cfg->tls_ciphersuites = yystack.l_mark[0].str;
        }
-#line 3511 "util/configparser.c"
-    break;
-
-  case 318:
-#line 947 "./util/configparser.y"
-    {
-               OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
+break;
+case 317:
+#line 949 "./util/configparser.y"
+       {
+               OUTYY(("P(server_tls_session_ticket_keys:%s)\n", yystack.l_mark[0].str));
                if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
-                       (yyvsp[0].str)))
+                       yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 3522 "util/configparser.c"
-    break;
-
-  case 319:
-#line 955 "./util/configparser.y"
-    {
-               OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 318:
+#line 957 "./util/configparser.y"
+       {
+               OUTYY(("P(server_use_systemd:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->use_systemd = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3534 "util/configparser.c"
-    break;
-
-  case 320:
-#line 964 "./util/configparser.y"
-    {
-               OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 319:
+#line 966 "./util/configparser.y"
+       {
+               OUTYY(("P(server_do_daemonize:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->do_daemonize = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3546 "util/configparser.c"
-    break;
-
-  case 321:
-#line 973 "./util/configparser.y"
-    {
-               OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 320:
+#line 975 "./util/configparser.y"
+       {
+               OUTYY(("P(server_use_syslog:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0);
+               else cfg_parser->cfg->use_syslog = (strcmp(yystack.l_mark[0].str, "yes")==0);
 #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
-               if(strcmp((yyvsp[0].str), "yes") == 0)
+               if(strcmp(yystack.l_mark[0].str, "yes") == 0)
                        yyerror("no syslog services are available. "
                                "(reconfigure and compile to add)");
 #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3563 "util/configparser.c"
-    break;
-
-  case 322:
-#line 987 "./util/configparser.y"
-    {
-               OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 321:
+#line 989 "./util/configparser.y"
+       {
+               OUTYY(("P(server_log_time_ascii:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->log_time_ascii = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3575 "util/configparser.c"
-    break;
-
-  case 323:
-#line 996 "./util/configparser.y"
-    {
-               OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 322:
+#line 998 "./util/configparser.y"
+       {
+               OUTYY(("P(server_log_queries:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->log_queries = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3587 "util/configparser.c"
-    break;
-
-  case 324:
-#line 1005 "./util/configparser.y"
-    {
-       OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
-       if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 323:
+#line 1007 "./util/configparser.y"
+       {
+       OUTYY(("P(server_log_replies:%s)\n", yystack.l_mark[0].str));
+       if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                yyerror("expected yes or no.");
-       else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
-       free((yyvsp[0].str));
+       else cfg_parser->cfg->log_replies = (strcmp(yystack.l_mark[0].str, "yes")==0);
+       free(yystack.l_mark[0].str);
   }
-#line 3599 "util/configparser.c"
-    break;
-
-  case 325:
-#line 1014 "./util/configparser.y"
-    {
-       OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
-       if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 324:
+#line 1016 "./util/configparser.y"
+       {
+       OUTYY(("P(server_log_tag_queryreply:%s)\n", yystack.l_mark[0].str));
+       if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                yyerror("expected yes or no.");
-       else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
-       free((yyvsp[0].str));
+       else cfg_parser->cfg->log_tag_queryreply = (strcmp(yystack.l_mark[0].str, "yes")==0);
+       free(yystack.l_mark[0].str);
   }
-#line 3611 "util/configparser.c"
-    break;
-
-  case 326:
-#line 1023 "./util/configparser.y"
-    {
-               OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 325:
+#line 1025 "./util/configparser.y"
+       {
+               OUTYY(("P(server_log_servfail:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->log_servfail = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3623 "util/configparser.c"
-    break;
-
-  case 327:
-#line 1032 "./util/configparser.y"
-    {
-       OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
-       if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 326:
+#line 1034 "./util/configparser.y"
+       {
+       OUTYY(("P(server_log_local_actions:%s)\n", yystack.l_mark[0].str));
+       if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                yyerror("expected yes or no.");
-       else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
-       free((yyvsp[0].str));
+       else cfg_parser->cfg->log_local_actions = (strcmp(yystack.l_mark[0].str, "yes")==0);
+       free(yystack.l_mark[0].str);
   }
-#line 3635 "util/configparser.c"
-    break;
-
-  case 328:
-#line 1041 "./util/configparser.y"
-    {
-               OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
+break;
+case 327:
+#line 1043 "./util/configparser.y"
+       {
+               OUTYY(("P(server_chroot:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->chrootdir);
-               cfg_parser->cfg->chrootdir = (yyvsp[0].str);
+               cfg_parser->cfg->chrootdir = yystack.l_mark[0].str;
        }
-#line 3645 "util/configparser.c"
-    break;
-
-  case 329:
-#line 1048 "./util/configparser.y"
-    {
-               OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
+break;
+case 328:
+#line 1050 "./util/configparser.y"
+       {
+               OUTYY(("P(server_username:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->username);
-               cfg_parser->cfg->username = (yyvsp[0].str);
+               cfg_parser->cfg->username = yystack.l_mark[0].str;
        }
-#line 3655 "util/configparser.c"
-    break;
-
-  case 330:
-#line 1055 "./util/configparser.y"
-    {
-               OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
+break;
+case 329:
+#line 1057 "./util/configparser.y"
+       {
+               OUTYY(("P(server_directory:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->directory);
-               cfg_parser->cfg->directory = (yyvsp[0].str);
+               cfg_parser->cfg->directory = yystack.l_mark[0].str;
                /* change there right away for includes relative to this */
-               if((yyvsp[0].str)[0]) {
+               if(yystack.l_mark[0].str[0]) {
                        char* d;
 #ifdef UB_ON_WINDOWS
                        w_config_adjust_directory(cfg_parser->cfg);
@@ -3680,1169 +2852,987 @@ yyreduce:
                        }
                }
        }
-#line 3684 "util/configparser.c"
-    break;
-
-  case 331:
-#line 1081 "./util/configparser.y"
-    {
-               OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
+break;
+case 330:
+#line 1083 "./util/configparser.y"
+       {
+               OUTYY(("P(server_logfile:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->logfile);
-               cfg_parser->cfg->logfile = (yyvsp[0].str);
+               cfg_parser->cfg->logfile = yystack.l_mark[0].str;
                cfg_parser->cfg->use_syslog = 0;
        }
-#line 3695 "util/configparser.c"
-    break;
-
-  case 332:
-#line 1089 "./util/configparser.y"
-    {
-               OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
+break;
+case 331:
+#line 1091 "./util/configparser.y"
+       {
+               OUTYY(("P(server_pidfile:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->pidfile);
-               cfg_parser->cfg->pidfile = (yyvsp[0].str);
+               cfg_parser->cfg->pidfile = yystack.l_mark[0].str;
        }
-#line 3705 "util/configparser.c"
-    break;
-
-  case 333:
-#line 1096 "./util/configparser.y"
-    {
-               OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
+break;
+case 332:
+#line 1098 "./util/configparser.y"
+       {
+               OUTYY(("P(server_root_hints:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 3715 "util/configparser.c"
-    break;
-
-  case 334:
-#line 1103 "./util/configparser.y"
-    {
-               OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
+break;
+case 333:
+#line 1105 "./util/configparser.y"
+       {
+               OUTYY(("P(server_dlv_anchor_file:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->dlv_anchor_file);
-               cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str);
+               cfg_parser->cfg->dlv_anchor_file = yystack.l_mark[0].str;
        }
-#line 3725 "util/configparser.c"
-    break;
-
-  case 335:
-#line 1110 "./util/configparser.y"
-    {
-               OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str)))
+break;
+case 334:
+#line 1112 "./util/configparser.y"
+       {
+               OUTYY(("P(server_dlv_anchor:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 3735 "util/configparser.c"
-    break;
-
-  case 336:
-#line 1117 "./util/configparser.y"
-    {
-               OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
+break;
+case 335:
+#line 1119 "./util/configparser.y"
+       {
+               OUTYY(("P(server_auto_trust_anchor_file:%s)\n", yystack.l_mark[0].str));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
-                       auto_trust_anchor_file_list, (yyvsp[0].str)))
+                       auto_trust_anchor_file_list, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 3746 "util/configparser.c"
-    break;
-
-  case 337:
-#line 1125 "./util/configparser.y"
-    {
-               OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
+break;
+case 336:
+#line 1127 "./util/configparser.y"
+       {
+               OUTYY(("P(server_trust_anchor_file:%s)\n", yystack.l_mark[0].str));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
-                       trust_anchor_file_list, (yyvsp[0].str)))
+                       trust_anchor_file_list, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 3757 "util/configparser.c"
-    break;
-
-  case 338:
-#line 1133 "./util/configparser.y"
-    {
-               OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
+break;
+case 337:
+#line 1135 "./util/configparser.y"
+       {
+               OUTYY(("P(server_trusted_keys_file:%s)\n", yystack.l_mark[0].str));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
-                       trusted_keys_file_list, (yyvsp[0].str)))
+                       trusted_keys_file_list, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 3768 "util/configparser.c"
-    break;
-
-  case 339:
-#line 1141 "./util/configparser.y"
-    {
-               OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
+break;
+case 338:
+#line 1143 "./util/configparser.y"
+       {
+               OUTYY(("P(server_trust_anchor:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 3778 "util/configparser.c"
-    break;
-
-  case 340:
-#line 1148 "./util/configparser.y"
-    {
-               OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 339:
+#line 1150 "./util/configparser.y"
+       {
+               OUTYY(("P(server_trust_anchor_signaling:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else
                        cfg_parser->cfg->trust_anchor_signaling =
-                               (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                               (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3792 "util/configparser.c"
-    break;
-
-  case 341:
-#line 1159 "./util/configparser.y"
-    {
-               OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 340:
+#line 1161 "./util/configparser.y"
+       {
+               OUTYY(("P(server_root_key_sentinel:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else
                        cfg_parser->cfg->root_key_sentinel =
-                               (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                               (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3806 "util/configparser.c"
-    break;
-
-  case 342:
-#line 1170 "./util/configparser.y"
-    {
-               OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
+break;
+case 341:
+#line 1172 "./util/configparser.y"
+       {
+               OUTYY(("P(server_domain_insecure:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 3816 "util/configparser.c"
-    break;
-
-  case 343:
-#line 1177 "./util/configparser.y"
-    {
-               OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 342:
+#line 1179 "./util/configparser.y"
+       {
+               OUTYY(("P(server_hide_identity:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->hide_identity = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3828 "util/configparser.c"
-    break;
-
-  case 344:
-#line 1186 "./util/configparser.y"
-    {
-               OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 343:
+#line 1188 "./util/configparser.y"
+       {
+               OUTYY(("P(server_hide_version:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->hide_version = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3840 "util/configparser.c"
-    break;
-
-  case 345:
-#line 1195 "./util/configparser.y"
-    {
-               OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 344:
+#line 1197 "./util/configparser.y"
+       {
+               OUTYY(("P(server_hide_trustanchor:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->hide_trustanchor = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 3852 "util/configparser.c"
-    break;
-
-  case 346:
-#line 1204 "./util/configparser.y"
-    {
-               OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
+break;
+case 345:
+#line 1206 "./util/configparser.y"
+       {
+               OUTYY(("P(server_identity:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->identity);
-               cfg_parser->cfg->identity = (yyvsp[0].str);
+               cfg_parser->cfg->identity = yystack.l_mark[0].str;
        }
-#line 3862 "util/configparser.c"
-    break;
-
-  case 347:
-#line 1211 "./util/configparser.y"
-    {
-               OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
+break;
+case 346:
+#line 1213 "./util/configparser.y"
+       {
+               OUTYY(("P(server_version:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->version);
-               cfg_parser->cfg->version = (yyvsp[0].str);
+               cfg_parser->cfg->version = yystack.l_mark[0].str;
        }
-#line 3872 "util/configparser.c"
-    break;
-
-  case 348:
-#line 1218 "./util/configparser.y"
-    {
-               OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
+break;
+case 347:
+#line 1220 "./util/configparser.y"
+       {
+               OUTYY(("P(server_so_rcvbuf:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->so_rcvbuf))
                        yyerror("buffer size expected");
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3883 "util/configparser.c"
-    break;
-
-  case 349:
-#line 1226 "./util/configparser.y"
-    {
-               OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
+break;
+case 348:
+#line 1228 "./util/configparser.y"
+       {
+               OUTYY(("P(server_so_sndbuf:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->so_sndbuf))
                        yyerror("buffer size expected");
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3894 "util/configparser.c"
-    break;
-
-  case 350:
-#line 1234 "./util/configparser.y"
-    {
-        OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
-        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 349:
+#line 1236 "./util/configparser.y"
+       {
+        OUTYY(("P(server_so_reuseport:%s)\n", yystack.l_mark[0].str));
+        if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
             yyerror("expected yes or no.");
         else cfg_parser->cfg->so_reuseport =
-            (strcmp((yyvsp[0].str), "yes")==0);
-        free((yyvsp[0].str));
+            (strcmp(yystack.l_mark[0].str, "yes")==0);
+        free(yystack.l_mark[0].str);
     }
-#line 3907 "util/configparser.c"
-    break;
-
-  case 351:
-#line 1244 "./util/configparser.y"
-    {
-        OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
-        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 350:
+#line 1246 "./util/configparser.y"
+       {
+        OUTYY(("P(server_ip_transparent:%s)\n", yystack.l_mark[0].str));
+        if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
             yyerror("expected yes or no.");
         else cfg_parser->cfg->ip_transparent =
-            (strcmp((yyvsp[0].str), "yes")==0);
-        free((yyvsp[0].str));
+            (strcmp(yystack.l_mark[0].str, "yes")==0);
+        free(yystack.l_mark[0].str);
     }
-#line 3920 "util/configparser.c"
-    break;
-
-  case 352:
-#line 1254 "./util/configparser.y"
-    {
-        OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
-        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 351:
+#line 1256 "./util/configparser.y"
+       {
+        OUTYY(("P(server_ip_freebind:%s)\n", yystack.l_mark[0].str));
+        if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
             yyerror("expected yes or no.");
         else cfg_parser->cfg->ip_freebind =
-            (strcmp((yyvsp[0].str), "yes")==0);
-        free((yyvsp[0].str));
+            (strcmp(yystack.l_mark[0].str, "yes")==0);
+        free(yystack.l_mark[0].str);
     }
-#line 3933 "util/configparser.c"
-    break;
-
-  case 353:
-#line 1264 "./util/configparser.y"
-    {
-               OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 352:
+#line 1266 "./util/configparser.y"
+       {
+               OUTYY(("P(server_ip_dscp:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else if (atoi((yyvsp[0].str)) > 63)
+               else if (atoi(yystack.l_mark[0].str) > 63)
                        yyerror("value too large (max 63)");
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi(yystack.l_mark[0].str) < 0)
                        yyerror("value too small (min 0)");
                else
-                       cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+                       cfg_parser->cfg->ip_dscp = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 3950 "util/configparser.c"
-    break;
-
-  case 354:
-#line 1278 "./util/configparser.y"
-    {
-               OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
+break;
+case 353:
+#line 1280 "./util/configparser.y"
+       {
+               OUTYY(("P(server_stream_wait_size:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->stream_wait_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 3961 "util/configparser.c"
-    break;
-
-  case 355:
-#line 1286 "./util/configparser.y"
-    {
-               OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 354:
+#line 1288 "./util/configparser.y"
+       {
+               OUTYY(("P(server_edns_buffer_size:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("number expected");
-               else if (atoi((yyvsp[0].str)) < 12)
+               else if (atoi(yystack.l_mark[0].str) < 12)
                        yyerror("edns buffer size too small");
-               else if (atoi((yyvsp[0].str)) > 65535)
+               else if (atoi(yystack.l_mark[0].str) > 65535)
                        cfg_parser->cfg->edns_buffer_size = 65535;
-               else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->edns_buffer_size = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 3977 "util/configparser.c"
-    break;
-
-  case 356:
-#line 1299 "./util/configparser.y"
-    {
-               OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 355:
+#line 1301 "./util/configparser.y"
+       {
+               OUTYY(("P(server_msg_buffer_size:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("number expected");
-               else if (atoi((yyvsp[0].str)) < 4096)
+               else if (atoi(yystack.l_mark[0].str) < 4096)
                        yyerror("message buffer size too small (use 4096)");
-               else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->msg_buffer_size = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 3991 "util/configparser.c"
-    break;
-
-  case 357:
-#line 1310 "./util/configparser.y"
-    {
-               OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
+break;
+case 356:
+#line 1312 "./util/configparser.y"
+       {
+               OUTYY(("P(server_msg_cache_size:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->msg_cache_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4002 "util/configparser.c"
-    break;
-
-  case 358:
-#line 1318 "./util/configparser.y"
-    {
-               OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 357:
+#line 1320 "./util/configparser.y"
+       {
+               OUTYY(("P(server_msg_cache_slabs:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("number expected");
                else {
-                       cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->msg_cache_slabs = atoi(yystack.l_mark[0].str);
                        if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
                                yyerror("must be a power of 2");
                }
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4018 "util/configparser.c"
-    break;
-
-  case 359:
-#line 1331 "./util/configparser.y"
-    {
-               OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 358:
+#line 1333 "./util/configparser.y"
+       {
+               OUTYY(("P(server_num_queries_per_thread:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->num_queries_per_thread = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4030 "util/configparser.c"
-    break;
-
-  case 360:
-#line 1340 "./util/configparser.y"
-    {
-               OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 359:
+#line 1342 "./util/configparser.y"
+       {
+               OUTYY(("P(server_jostle_timeout:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->jostle_time = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4042 "util/configparser.c"
-    break;
-
-  case 361:
-#line 1349 "./util/configparser.y"
-    {
-               OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 360:
+#line 1351 "./util/configparser.y"
+       {
+               OUTYY(("P(server_delay_close:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->delay_close = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4054 "util/configparser.c"
-    break;
-
-  case 362:
-#line 1358 "./util/configparser.y"
-    {
-               OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 361:
+#line 1360 "./util/configparser.y"
+       {
+               OUTYY(("P(server_unblock_lan_zones:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->unblock_lan_zones = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4067 "util/configparser.c"
-    break;
-
-  case 363:
-#line 1368 "./util/configparser.y"
-    {
-               OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 362:
+#line 1370 "./util/configparser.y"
+       {
+               OUTYY(("P(server_insecure_lan_zones:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->insecure_lan_zones = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4080 "util/configparser.c"
-    break;
-
-  case 364:
-#line 1378 "./util/configparser.y"
-    {
-               OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
+break;
+case 363:
+#line 1380 "./util/configparser.y"
+       {
+               OUTYY(("P(server_rrset_cache_size:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->rrset_cache_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4091 "util/configparser.c"
-    break;
-
-  case 365:
-#line 1386 "./util/configparser.y"
-    {
-               OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 364:
+#line 1388 "./util/configparser.y"
+       {
+               OUTYY(("P(server_rrset_cache_slabs:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("number expected");
                else {
-                       cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->rrset_cache_slabs = atoi(yystack.l_mark[0].str);
                        if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
                                yyerror("must be a power of 2");
                }
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4107 "util/configparser.c"
-    break;
-
-  case 366:
-#line 1399 "./util/configparser.y"
-    {
-               OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 365:
+#line 1401 "./util/configparser.y"
+       {
+               OUTYY(("P(server_infra_host_ttl:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->host_ttl = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4119 "util/configparser.c"
-    break;
-
-  case 367:
-#line 1408 "./util/configparser.y"
-    {
-               OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
+break;
+case 366:
+#line 1410 "./util/configparser.y"
+       {
+               OUTYY(("P(server_infra_lame_ttl:%s)\n", yystack.l_mark[0].str));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
-                       "removed, use infra-host-ttl)", (yyvsp[0].str));
-               free((yyvsp[0].str));
+                       "removed, use infra-host-ttl)", yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4130 "util/configparser.c"
-    break;
-
-  case 368:
-#line 1416 "./util/configparser.y"
-    {
-               OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 367:
+#line 1418 "./util/configparser.y"
+       {
+               OUTYY(("P(server_infra_cache_numhosts:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->infra_cache_numhosts = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4142 "util/configparser.c"
-    break;
-
-  case 369:
-#line 1425 "./util/configparser.y"
-    {
-               OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
+break;
+case 368:
+#line 1427 "./util/configparser.y"
+       {
+               OUTYY(("P(server_infra_cache_lame_size:%s)\n", yystack.l_mark[0].str));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
-                       "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
-               free((yyvsp[0].str));
+                       "(option removed, use infra-cache-numhosts)", yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4153 "util/configparser.c"
-    break;
-
-  case 370:
-#line 1433 "./util/configparser.y"
-    {
-               OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 369:
+#line 1435 "./util/configparser.y"
+       {
+               OUTYY(("P(server_infra_cache_slabs:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("number expected");
                else {
-                       cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->infra_cache_slabs = atoi(yystack.l_mark[0].str);
                        if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
                                yyerror("must be a power of 2");
                }
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4169 "util/configparser.c"
-    break;
-
-  case 371:
-#line 1446 "./util/configparser.y"
-    {
-               OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 370:
+#line 1448 "./util/configparser.y"
+       {
+               OUTYY(("P(server_infra_cache_min_rtt:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->infra_cache_min_rtt = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4181 "util/configparser.c"
-    break;
-
-  case 372:
-#line 1455 "./util/configparser.y"
-    {
-               OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
+break;
+case 371:
+#line 1457 "./util/configparser.y"
+       {
+               OUTYY(("P(server_target_fetch_policy:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->target_fetch_policy);
-               cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
+               cfg_parser->cfg->target_fetch_policy = yystack.l_mark[0].str;
        }
-#line 4191 "util/configparser.c"
-    break;
-
-  case 373:
-#line 1462 "./util/configparser.y"
-    {
-               OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 372:
+#line 1464 "./util/configparser.y"
+       {
+               OUTYY(("P(server_harden_short_bufsize:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_short_bufsize = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4204 "util/configparser.c"
-    break;
-
-  case 374:
-#line 1472 "./util/configparser.y"
-    {
-               OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 373:
+#line 1474 "./util/configparser.y"
+       {
+               OUTYY(("P(server_harden_large_queries:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_large_queries = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4217 "util/configparser.c"
-    break;
-
-  case 375:
-#line 1482 "./util/configparser.y"
-    {
-               OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 374:
+#line 1484 "./util/configparser.y"
+       {
+               OUTYY(("P(server_harden_glue:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_glue = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4230 "util/configparser.c"
-    break;
-
-  case 376:
-#line 1492 "./util/configparser.y"
-    {
-               OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 375:
+#line 1494 "./util/configparser.y"
+       {
+               OUTYY(("P(server_harden_dnssec_stripped:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_dnssec_stripped = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4243 "util/configparser.c"
-    break;
-
-  case 377:
-#line 1502 "./util/configparser.y"
-    {
-               OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 376:
+#line 1504 "./util/configparser.y"
+       {
+               OUTYY(("P(server_harden_below_nxdomain:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_below_nxdomain = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4256 "util/configparser.c"
-    break;
-
-  case 378:
-#line 1512 "./util/configparser.y"
-    {
-               OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 377:
+#line 1514 "./util/configparser.y"
+       {
+               OUTYY(("P(server_harden_referral_path:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_referral_path = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4269 "util/configparser.c"
-    break;
-
-  case 379:
-#line 1522 "./util/configparser.y"
-    {
-               OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 378:
+#line 1524 "./util/configparser.y"
+       {
+               OUTYY(("P(server_harden_algo_downgrade:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_algo_downgrade = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4282 "util/configparser.c"
-    break;
-
-  case 380:
-#line 1532 "./util/configparser.y"
-    {
-               OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 379:
+#line 1534 "./util/configparser.y"
+       {
+               OUTYY(("P(server_use_caps_for_id:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->use_caps_bits_for_id = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4295 "util/configparser.c"
-    break;
-
-  case 381:
-#line 1542 "./util/configparser.y"
-    {
-               OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
+break;
+case 380:
+#line 1544 "./util/configparser.y"
+       {
+               OUTYY(("P(server_caps_whitelist:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 4305 "util/configparser.c"
-    break;
-
-  case 382:
-#line 1549 "./util/configparser.y"
-    {
-               OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
+break;
+case 381:
+#line 1551 "./util/configparser.y"
+       {
+               OUTYY(("P(server_private_address:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 4315 "util/configparser.c"
-    break;
-
-  case 383:
-#line 1556 "./util/configparser.y"
-    {
-               OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
+break;
+case 382:
+#line 1558 "./util/configparser.y"
+       {
+               OUTYY(("P(server_private_domain:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 4325 "util/configparser.c"
-    break;
-
-  case 384:
-#line 1563 "./util/configparser.y"
-    {
-               OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 383:
+#line 1565 "./util/configparser.y"
+       {
+               OUTYY(("P(server_prefetch:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->prefetch = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4337 "util/configparser.c"
-    break;
-
-  case 385:
-#line 1572 "./util/configparser.y"
-    {
-               OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 384:
+#line 1574 "./util/configparser.y"
+       {
+               OUTYY(("P(server_prefetch_key:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->prefetch_key = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4349 "util/configparser.c"
-    break;
-
-  case 386:
-#line 1581 "./util/configparser.y"
-    {
-               OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 385:
+#line 1583 "./util/configparser.y"
+       {
+               OUTYY(("P(server_deny_any:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->deny_any = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4361 "util/configparser.c"
-    break;
-
-  case 387:
-#line 1590 "./util/configparser.y"
-    {
-               OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 386:
+#line 1592 "./util/configparser.y"
+       {
+               OUTYY(("P(server_unwanted_reply_threshold:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->unwanted_threshold = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4373 "util/configparser.c"
-    break;
-
-  case 388:
-#line 1599 "./util/configparser.y"
-    {
-               OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
+break;
+case 387:
+#line 1601 "./util/configparser.y"
+       {
+               OUTYY(("P(server_do_not_query_address:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 4383 "util/configparser.c"
-    break;
-
-  case 389:
-#line 1606 "./util/configparser.y"
-    {
-               OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 388:
+#line 1608 "./util/configparser.y"
+       {
+               OUTYY(("P(server_do_not_query_localhost:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->donotquery_localhost = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4396 "util/configparser.c"
-    break;
-
-  case 390:
-#line 1616 "./util/configparser.y"
-    {
-               OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
-                       strcmp((yyvsp[0].str), "deny_non_local")!=0 &&
-                       strcmp((yyvsp[0].str), "refuse_non_local")!=0 &&
-                       strcmp((yyvsp[0].str), "allow_setrd")!=0 && 
-                       strcmp((yyvsp[0].str), "allow")!=0 && 
-                       strcmp((yyvsp[0].str), "allow_snoop")!=0) {
+break;
+case 389:
+#line 1618 "./util/configparser.y"
+       {
+               OUTYY(("P(server_access_control:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "deny")!=0 && strcmp(yystack.l_mark[0].str, "refuse")!=0 &&
+                       strcmp(yystack.l_mark[0].str, "deny_non_local")!=0 &&
+                       strcmp(yystack.l_mark[0].str, "refuse_non_local")!=0 &&
+                       strcmp(yystack.l_mark[0].str, "allow_setrd")!=0 && 
+                       strcmp(yystack.l_mark[0].str, "allow")!=0 && 
+                       strcmp(yystack.l_mark[0].str, "allow_snoop")!=0) {
                        yyerror("expected deny, refuse, deny_non_local, "
                                "refuse_non_local, allow, allow_setrd or "
                                "allow_snoop in access control action");
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
+                       free(yystack.l_mark[-1].str);
+                       free(yystack.l_mark[0].str);
                } else {
-                       if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str)))
+                       if(!cfg_str2list_insert(&cfg_parser->cfg->acls, yystack.l_mark[-1].str, yystack.l_mark[0].str))
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 4419 "util/configparser.c"
-    break;
-
-  case 391:
-#line 1636 "./util/configparser.y"
-    {
-               OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
+break;
+case 390:
+#line 1638 "./util/configparser.y"
+       {
+               OUTYY(("P(server_module_conf:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->module_conf);
-               cfg_parser->cfg->module_conf = (yyvsp[0].str);
+               cfg_parser->cfg->module_conf = yystack.l_mark[0].str;
        }
-#line 4429 "util/configparser.c"
-    break;
-
-  case 392:
-#line 1643 "./util/configparser.y"
-    {
-               OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
-               if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
+break;
+case 391:
+#line 1645 "./util/configparser.y"
+       {
+               OUTYY(("P(server_val_override_date:%s)\n", yystack.l_mark[0].str));
+               if(*yystack.l_mark[0].str == '\0' || strcmp(yystack.l_mark[0].str, "0") == 0) {
                        cfg_parser->cfg->val_date_override = 0;
-               } else if(strlen((yyvsp[0].str)) == 14) {
+               } else if(strlen(yystack.l_mark[0].str) == 14) {
                        cfg_parser->cfg->val_date_override = 
-                               cfg_convert_timeval((yyvsp[0].str));
+                               cfg_convert_timeval(yystack.l_mark[0].str);
                        if(!cfg_parser->cfg->val_date_override)
                                yyerror("bad date/time specification");
                } else {
-                       if(atoi((yyvsp[0].str)) == 0)
+                       if(atoi(yystack.l_mark[0].str) == 0)
                                yyerror("number expected");
-                       cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->val_date_override = atoi(yystack.l_mark[0].str);
                }
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4450 "util/configparser.c"
-    break;
-
-  case 393:
-#line 1661 "./util/configparser.y"
-    {
-               OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
-               if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
+break;
+case 392:
+#line 1663 "./util/configparser.y"
+       {
+               OUTYY(("P(server_val_sig_skew_min:%s)\n", yystack.l_mark[0].str));
+               if(*yystack.l_mark[0].str == '\0' || strcmp(yystack.l_mark[0].str, "0") == 0) {
                        cfg_parser->cfg->val_sig_skew_min = 0;
                } else {
-                       cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->val_sig_skew_min = atoi(yystack.l_mark[0].str);
                        if(!cfg_parser->cfg->val_sig_skew_min)
                                yyerror("number expected");
                }
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4466 "util/configparser.c"
-    break;
-
-  case 394:
-#line 1674 "./util/configparser.y"
-    {
-               OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
-               if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
+break;
+case 393:
+#line 1676 "./util/configparser.y"
+       {
+               OUTYY(("P(server_val_sig_skew_max:%s)\n", yystack.l_mark[0].str));
+               if(*yystack.l_mark[0].str == '\0' || strcmp(yystack.l_mark[0].str, "0") == 0) {
                        cfg_parser->cfg->val_sig_skew_max = 0;
                } else {
-                       cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->val_sig_skew_max = atoi(yystack.l_mark[0].str);
                        if(!cfg_parser->cfg->val_sig_skew_max)
                                yyerror("number expected");
                }
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4482 "util/configparser.c"
-    break;
-
-  case 395:
-#line 1687 "./util/configparser.y"
-    {
-               OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 394:
+#line 1689 "./util/configparser.y"
+       {
+               OUTYY(("P(server_cache_max_ttl:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->max_ttl = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4494 "util/configparser.c"
-    break;
-
-  case 396:
-#line 1696 "./util/configparser.y"
-    {
-               OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 395:
+#line 1698 "./util/configparser.y"
+       {
+               OUTYY(("P(server_cache_max_negative_ttl:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->max_negative_ttl = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4506 "util/configparser.c"
-    break;
-
-  case 397:
-#line 1705 "./util/configparser.y"
-    {
-               OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 396:
+#line 1707 "./util/configparser.y"
+       {
+               OUTYY(("P(server_cache_min_ttl:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->min_ttl = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4518 "util/configparser.c"
-    break;
-
-  case 398:
-#line 1714 "./util/configparser.y"
-    {
-               OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 397:
+#line 1716 "./util/configparser.y"
+       {
+               OUTYY(("P(server_bogus_ttl:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->bogus_ttl = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4530 "util/configparser.c"
-    break;
-
-  case 399:
-#line 1723 "./util/configparser.y"
-    {
-               OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 398:
+#line 1725 "./util/configparser.y"
+       {
+               OUTYY(("P(server_val_clean_additional:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->val_clean_additional = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4543 "util/configparser.c"
-    break;
-
-  case 400:
-#line 1733 "./util/configparser.y"
-    {
-               OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 399:
+#line 1735 "./util/configparser.y"
+       {
+               OUTYY(("P(server_val_permissive_mode:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->val_permissive_mode = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4556 "util/configparser.c"
-    break;
-
-  case 401:
-#line 1743 "./util/configparser.y"
-    {
-               OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 400:
+#line 1745 "./util/configparser.y"
+       {
+               OUTYY(("P(server_aggressive_nsec:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else
                        cfg_parser->cfg->aggressive_nsec =
-                               (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                               (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4570 "util/configparser.c"
-    break;
-
-  case 402:
-#line 1754 "./util/configparser.y"
-    {
-               OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 401:
+#line 1756 "./util/configparser.y"
+       {
+               OUTYY(("P(server_ignore_cd_flag:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ignore_cd = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4582 "util/configparser.c"
-    break;
-
-  case 403:
-#line 1763 "./util/configparser.y"
-    {
-               OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 402:
+#line 1765 "./util/configparser.y"
+       {
+               OUTYY(("P(server_serve_expired:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->serve_expired = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4594 "util/configparser.c"
-    break;
-
-  case 404:
-#line 1772 "./util/configparser.y"
-    {
-               OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 403:
+#line 1774 "./util/configparser.y"
+       {
+               OUTYY(("P(server_serve_expired_ttl:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->serve_expired_ttl = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4606 "util/configparser.c"
-    break;
-
-  case 405:
-#line 1781 "./util/configparser.y"
-    {
-               OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 404:
+#line 1783 "./util/configparser.y"
+       {
+               OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4618 "util/configparser.c"
-    break;
-
-  case 406:
-#line 1790 "./util/configparser.y"
-    {
-               OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 405:
+#line 1792 "./util/configparser.y"
+       {
+               OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->serve_expired_reply_ttl = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4630 "util/configparser.c"
-    break;
-
-  case 407:
-#line 1799 "./util/configparser.y"
-    {
-               OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 406:
+#line 1801 "./util/configparser.y"
+       {
+               OUTYY(("P(server_serve_expired_client_timeout:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->serve_expired_client_timeout = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4642 "util/configparser.c"
-    break;
-
-  case 408:
-#line 1808 "./util/configparser.y"
-    {
-               OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 407:
+#line 1810 "./util/configparser.y"
+       {
+               OUTYY(("P(server_fake_dsa:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
-               else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0);
+               else fake_dsa = (strcmp(yystack.l_mark[0].str, "yes")==0);
                if(fake_dsa)
                        log_warn("test option fake_dsa is enabled");
 #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4658 "util/configparser.c"
-    break;
-
-  case 409:
-#line 1821 "./util/configparser.y"
-    {
-               OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 408:
+#line 1823 "./util/configparser.y"
+       {
+               OUTYY(("P(server_fake_sha1:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
-               else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0);
+               else fake_sha1 = (strcmp(yystack.l_mark[0].str, "yes")==0);
                if(fake_sha1)
                        log_warn("test option fake_sha1 is enabled");
 #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4674 "util/configparser.c"
-    break;
-
-  case 410:
-#line 1834 "./util/configparser.y"
-    {
-               OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 409:
+#line 1836 "./util/configparser.y"
+       {
+               OUTYY(("P(server_val_log_level:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->val_log_level = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4686 "util/configparser.c"
-    break;
-
-  case 411:
-#line 1843 "./util/configparser.y"
-    {
-               OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
+break;
+case 410:
+#line 1845 "./util/configparser.y"
+       {
+               OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
-               cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
+               cfg_parser->cfg->val_nsec3_key_iterations = yystack.l_mark[0].str;
        }
-#line 4696 "util/configparser.c"
-    break;
-
-  case 412:
-#line 1850 "./util/configparser.y"
-    {
-               OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 411:
+#line 1852 "./util/configparser.y"
+       {
+               OUTYY(("P(server_add_holddown:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->add_holddown = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4708 "util/configparser.c"
-    break;
-
-  case 413:
-#line 1859 "./util/configparser.y"
-    {
-               OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 412:
+#line 1861 "./util/configparser.y"
+       {
+               OUTYY(("P(server_del_holddown:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->del_holddown = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4720 "util/configparser.c"
-    break;
-
-  case 414:
-#line 1868 "./util/configparser.y"
-    {
-               OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 413:
+#line 1870 "./util/configparser.y"
+       {
+               OUTYY(("P(server_keep_missing:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->keep_missing = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4732 "util/configparser.c"
-    break;
-
-  case 415:
-#line 1877 "./util/configparser.y"
-    {
-               OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 414:
+#line 1879 "./util/configparser.y"
+       {
+               OUTYY(("P(server_permit_small_holddown:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->permit_small_holddown =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4745 "util/configparser.c"
-    break;
-
-  case 416:
-#line 1886 "./util/configparser.y"
-    {
-               OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
+break;
+case 415:
+#line 1888 "./util/configparser.y"
+       {
+               OUTYY(("P(server_key_cache_size:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->key_cache_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4756 "util/configparser.c"
-    break;
-
-  case 417:
-#line 1894 "./util/configparser.y"
-    {
-               OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 416:
+#line 1896 "./util/configparser.y"
+       {
+               OUTYY(("P(server_key_cache_slabs:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("number expected");
                else {
-                       cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->key_cache_slabs = atoi(yystack.l_mark[0].str);
                        if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
                                yyerror("must be a power of 2");
                }
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4772 "util/configparser.c"
-    break;
-
-  case 418:
-#line 1907 "./util/configparser.y"
-    {
-               OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
+break;
+case 417:
+#line 1909 "./util/configparser.y"
+       {
+               OUTYY(("P(server_neg_cache_size:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->neg_cache_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4783 "util/configparser.c"
-    break;
-
-  case 419:
-#line 1915 "./util/configparser.y"
-    {
-               OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
-                  strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
-                  strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
-                  && strcmp((yyvsp[0].str), "typetransparent")!=0
-                  && strcmp((yyvsp[0].str), "always_transparent")!=0
-                  && strcmp((yyvsp[0].str), "always_refuse")!=0
-                  && strcmp((yyvsp[0].str), "always_nxdomain")!=0
-                  && strcmp((yyvsp[0].str), "noview")!=0
-                  && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
-                  && strcmp((yyvsp[0].str), "inform_redirect") != 0
-                        && strcmp((yyvsp[0].str), "ipset") != 0) {
+break;
+case 418:
+#line 1917 "./util/configparser.y"
+       {
+               OUTYY(("P(server_local_zone:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "static")!=0 && strcmp(yystack.l_mark[0].str, "deny")!=0 &&
+                  strcmp(yystack.l_mark[0].str, "refuse")!=0 && strcmp(yystack.l_mark[0].str, "redirect")!=0 &&
+                  strcmp(yystack.l_mark[0].str, "transparent")!=0 && strcmp(yystack.l_mark[0].str, "nodefault")!=0
+                  && strcmp(yystack.l_mark[0].str, "typetransparent")!=0
+                  && strcmp(yystack.l_mark[0].str, "always_transparent")!=0
+                  && strcmp(yystack.l_mark[0].str, "always_refuse")!=0
+                  && strcmp(yystack.l_mark[0].str, "always_nxdomain")!=0
+                  && strcmp(yystack.l_mark[0].str, "noview")!=0
+                  && strcmp(yystack.l_mark[0].str, "inform")!=0 && strcmp(yystack.l_mark[0].str, "inform_deny")!=0
+                  && strcmp(yystack.l_mark[0].str, "inform_redirect") != 0
+                        && strcmp(yystack.l_mark[0].str, "ipset") != 0) {
                        yyerror("local-zone type: expected static, deny, "
                                "refuse, redirect, transparent, "
                                "typetransparent, inform, inform_deny, "
                                "inform_redirect, always_transparent, "
                                "always_refuse, always_nxdomain, noview "
                                ", nodefault or ipset");
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
-               } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
+                       free(yystack.l_mark[-1].str);
+                       free(yystack.l_mark[0].str);
+               } else if(strcmp(yystack.l_mark[0].str, "nodefault")==0) {
                        if(!cfg_strlist_insert(&cfg_parser->cfg->
-                               local_zones_nodefault, (yyvsp[-1].str)))
+                               local_zones_nodefault, yystack.l_mark[-1].str))
                                fatal_exit("out of memory adding local-zone");
-                       free((yyvsp[0].str));
+                       free(yystack.l_mark[0].str);
 #ifdef USE_IPSET
-               } else if(strcmp((yyvsp[0].str), "ipset")==0) {
+               } else if(strcmp(yystack.l_mark[0].str, "ipset")==0) {
                        if(!cfg_strlist_insert(&cfg_parser->cfg->
-                               local_zones_ipset, (yyvsp[-1].str)))
+                               local_zones_ipset, yystack.l_mark[-1].str))
                                fatal_exit("out of memory adding local-zone");
-                       free((yyvsp[0].str));
+                       free(yystack.l_mark[0].str);
 #endif
                } else {
                        if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, 
-                               (yyvsp[-1].str), (yyvsp[0].str)))
+                               yystack.l_mark[-1].str, yystack.l_mark[0].str))
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 4827 "util/configparser.c"
-    break;
-
-  case 420:
-#line 1956 "./util/configparser.y"
-    {
-               OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
+break;
+case 419:
+#line 1958 "./util/configparser.y"
+       {
+               OUTYY(("P(server_local_data:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, yystack.l_mark[0].str))
                        fatal_exit("out of memory adding local-data");
        }
-#line 4837 "util/configparser.c"
-    break;
-
-  case 421:
-#line 1963 "./util/configparser.y"
-    {
+break;
+case 420:
+#line 1965 "./util/configparser.y"
+       {
                char* ptr;
-               OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
-               ptr = cfg_ptr_reverse((yyvsp[0].str));
-               free((yyvsp[0].str));
+               OUTYY(("P(server_local_data_ptr:%s)\n", yystack.l_mark[0].str));
+               ptr = cfg_ptr_reverse(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
                if(ptr) {
                        if(!cfg_strlist_insert(&cfg_parser->cfg->
                                local_data, ptr))
@@ -4851,93 +3841,77 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 4855 "util/configparser.c"
-    break;
-
-  case 422:
-#line 1978 "./util/configparser.y"
-    {
-               OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 421:
+#line 1980 "./util/configparser.y"
+       {
+               OUTYY(("P(server_minimal_responses:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->minimal_responses =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4868 "util/configparser.c"
-    break;
-
-  case 423:
-#line 1988 "./util/configparser.y"
-    {
-               OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 422:
+#line 1990 "./util/configparser.y"
+       {
+               OUTYY(("P(server_rrset_roundrobin:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->rrset_roundrobin =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4881 "util/configparser.c"
-    break;
-
-  case 424:
-#line 1998 "./util/configparser.y"
-    {
-               OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
-               cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+break;
+case 423:
+#line 2000 "./util/configparser.y"
+       {
+               OUTYY(("P(server_unknown_server_time_limit:%s)\n", yystack.l_mark[0].str));
+               cfg_parser->cfg->unknown_server_time_limit = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4891 "util/configparser.c"
-    break;
-
-  case 425:
-#line 2005 "./util/configparser.y"
-    {
-               OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
-               cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+break;
+case 424:
+#line 2007 "./util/configparser.y"
+       {
+               OUTYY(("P(server_max_udp_size:%s)\n", yystack.l_mark[0].str));
+               cfg_parser->cfg->max_udp_size = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 4901 "util/configparser.c"
-    break;
-
-  case 426:
-#line 2012 "./util/configparser.y"
-    {
-               OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
+break;
+case 425:
+#line 2014 "./util/configparser.y"
+       {
+               OUTYY(("P(dns64_prefix:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->dns64_prefix);
-               cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
+               cfg_parser->cfg->dns64_prefix = yystack.l_mark[0].str;
        }
-#line 4911 "util/configparser.c"
-    break;
-
-  case 427:
-#line 2019 "./util/configparser.y"
-    {
-               OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 426:
+#line 2021 "./util/configparser.y"
+       {
+               OUTYY(("P(server_dns64_synthall:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dns64_synthall = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 4923 "util/configparser.c"
-    break;
-
-  case 428:
-#line 2028 "./util/configparser.y"
-    {
-               OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
+break;
+case 427:
+#line 2030 "./util/configparser.y"
+       {
+               OUTYY(("P(dns64_ignore_aaaa:%s)\n", yystack.l_mark[0].str));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
-                       (yyvsp[0].str)))
+                       yystack.l_mark[0].str))
                        fatal_exit("out of memory adding dns64-ignore-aaaa");
        }
-#line 4934 "util/configparser.c"
-    break;
-
-  case 429:
-#line 2036 "./util/configparser.y"
-    {
-               char* p, *s = (yyvsp[0].str);
-               OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
+break;
+case 428:
+#line 2038 "./util/configparser.y"
+       {
+               char* p, *s = yystack.l_mark[0].str;
+               OUTYY(("P(server_define_tag:%s)\n", yystack.l_mark[0].str));
                while((p=strsep(&s, " \t\n")) != NULL) {
                        if(*p) {
                                if(!config_add_tag(cfg_parser->cfg, p))
@@ -4945,776 +3919,708 @@ yyreduce:
                                                "out of memory");
                        }
                }
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 4951 "util/configparser.c"
-    break;
-
-  case 430:
-#line 2050 "./util/configparser.y"
-    {
+break;
+case 429:
+#line 2052 "./util/configparser.y"
+       {
                size_t len = 0;
-               uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
+               uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, yystack.l_mark[0].str,
                        &len);
-               free((yyvsp[0].str));
-               OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str)));
+               free(yystack.l_mark[0].str);
+               OUTYY(("P(server_local_zone_tag:%s)\n", yystack.l_mark[-1].str));
                if(!bitlist) {
                        yyerror("could not parse tags, (define-tag them first)");
-                       free((yyvsp[-1].str));
+                       free(yystack.l_mark[-1].str);
                }
                if(bitlist) {
                        if(!cfg_strbytelist_insert(
                                &cfg_parser->cfg->local_zone_tags,
-                               (yyvsp[-1].str), bitlist, len)) {
+                               yystack.l_mark[-1].str, bitlist, len)) {
                                yyerror("out of memory");
-                               free((yyvsp[-1].str));
+                               free(yystack.l_mark[-1].str);
                        }
                }
        }
-#line 4975 "util/configparser.c"
-    break;
-
-  case 431:
-#line 2071 "./util/configparser.y"
-    {
+break;
+case 430:
+#line 2073 "./util/configparser.y"
+       {
                size_t len = 0;
-               uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
+               uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, yystack.l_mark[0].str,
                        &len);
-               free((yyvsp[0].str));
-               OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str)));
+               free(yystack.l_mark[0].str);
+               OUTYY(("P(server_access_control_tag:%s)\n", yystack.l_mark[-1].str));
                if(!bitlist) {
                        yyerror("could not parse tags, (define-tag them first)");
-                       free((yyvsp[-1].str));
+                       free(yystack.l_mark[-1].str);
                }
                if(bitlist) {
                        if(!cfg_strbytelist_insert(
                                &cfg_parser->cfg->acl_tags,
-                               (yyvsp[-1].str), bitlist, len)) {
+                               yystack.l_mark[-1].str, bitlist, len)) {
                                yyerror("out of memory");
-                               free((yyvsp[-1].str));
+                               free(yystack.l_mark[-1].str);
                        }
                }
        }
-#line 4999 "util/configparser.c"
-    break;
-
-  case 432:
-#line 2092 "./util/configparser.y"
-    {
-               OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
+break;
+case 431:
+#line 2094 "./util/configparser.y"
+       {
+               OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
-                       (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
+                       yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)) {
                        yyerror("out of memory");
-                       free((yyvsp[-2].str));
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
+                       free(yystack.l_mark[-2].str);
+                       free(yystack.l_mark[-1].str);
+                       free(yystack.l_mark[0].str);
                }
        }
-#line 5014 "util/configparser.c"
-    break;
-
-  case 433:
-#line 2104 "./util/configparser.y"
-    {
-               OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
+break;
+case 432:
+#line 2106 "./util/configparser.y"
+       {
+               OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
-                       (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
+                       yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)) {
                        yyerror("out of memory");
-                       free((yyvsp[-2].str));
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
+                       free(yystack.l_mark[-2].str);
+                       free(yystack.l_mark[-1].str);
+                       free(yystack.l_mark[0].str);
                }
        }
-#line 5029 "util/configparser.c"
-    break;
-
-  case 434:
-#line 2116 "./util/configparser.y"
-    {
-               OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
+break;
+case 433:
+#line 2118 "./util/configparser.y"
+       {
+               OUTYY(("P(server_local_zone_override:%s %s %s)\n", yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str));
                if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
-                       (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
+                       yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)) {
                        yyerror("out of memory");
-                       free((yyvsp[-2].str));
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
+                       free(yystack.l_mark[-2].str);
+                       free(yystack.l_mark[-1].str);
+                       free(yystack.l_mark[0].str);
                }
        }
-#line 5044 "util/configparser.c"
-    break;
-
-  case 435:
-#line 2128 "./util/configparser.y"
-    {
-               OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
+break;
+case 434:
+#line 2130 "./util/configparser.y"
+       {
+               OUTYY(("P(server_access_control_view:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str));
                if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
-                       (yyvsp[-1].str), (yyvsp[0].str))) {
+                       yystack.l_mark[-1].str, yystack.l_mark[0].str)) {
                        yyerror("out of memory");
                }
        }
-#line 5056 "util/configparser.c"
-    break;
-
-  case 436:
-#line 2137 "./util/configparser.y"
-    {
+break;
+case 435:
+#line 2139 "./util/configparser.y"
+       {
                size_t len = 0;
-               uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
+               uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, yystack.l_mark[0].str,
                        &len);
-               free((yyvsp[0].str));
-               OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str)));
+               free(yystack.l_mark[0].str);
+               OUTYY(("P(response_ip_tag:%s)\n", yystack.l_mark[-1].str));
                if(!bitlist) {
                        yyerror("could not parse tags, (define-tag them first)");
-                       free((yyvsp[-1].str));
+                       free(yystack.l_mark[-1].str);
                }
                if(bitlist) {
                        if(!cfg_strbytelist_insert(
                                &cfg_parser->cfg->respip_tags,
-                               (yyvsp[-1].str), bitlist, len)) {
+                               yystack.l_mark[-1].str, bitlist, len)) {
                                yyerror("out of memory");
-                               free((yyvsp[-1].str));
+                               free(yystack.l_mark[-1].str);
                        }
                }
        }
-#line 5080 "util/configparser.c"
-    break;
-
-  case 437:
-#line 2158 "./util/configparser.y"
-    { 
-               OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); 
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 436:
+#line 2160 "./util/configparser.y"
+       { 
+               OUTYY(("P(server_ip_ratelimit:%s)\n", yystack.l_mark[0].str)); 
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
-       }
-#line 5092 "util/configparser.c"
-    break;
-
-  case 438:
-#line 2168 "./util/configparser.y"
-    { 
-               OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); 
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               else cfg_parser->cfg->ip_ratelimit = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
+       }
+break;
+case 437:
+#line 2170 "./util/configparser.y"
+       { 
+               OUTYY(("P(server_ratelimit:%s)\n", yystack.l_mark[0].str)); 
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ratelimit = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 5104 "util/configparser.c"
-    break;
-
-  case 439:
-#line 2177 "./util/configparser.y"
-    {
-       OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
-       if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
+break;
+case 438:
+#line 2179 "./util/configparser.y"
+       {
+       OUTYY(("P(server_ip_ratelimit_size:%s)\n", yystack.l_mark[0].str));
+       if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->ip_ratelimit_size))
                yyerror("memory size expected");
-       free((yyvsp[0].str));
+       free(yystack.l_mark[0].str);
   }
-#line 5115 "util/configparser.c"
-    break;
-
-  case 440:
-#line 2185 "./util/configparser.y"
-    {
-               OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
+break;
+case 439:
+#line 2187 "./util/configparser.y"
+       {
+               OUTYY(("P(server_ratelimit_size:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->ratelimit_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 5126 "util/configparser.c"
-    break;
-
-  case 441:
-#line 2193 "./util/configparser.y"
-    {
-       OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
-       if(atoi((yyvsp[0].str)) == 0)
+break;
+case 440:
+#line 2195 "./util/configparser.y"
+       {
+       OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", yystack.l_mark[0].str));
+       if(atoi(yystack.l_mark[0].str) == 0)
                yyerror("number expected");
        else {
-               cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str));
+               cfg_parser->cfg->ip_ratelimit_slabs = atoi(yystack.l_mark[0].str);
                if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
                        yyerror("must be a power of 2");
        }
-       free((yyvsp[0].str));
+       free(yystack.l_mark[0].str);
   }
-#line 5142 "util/configparser.c"
-    break;
-
-  case 442:
-#line 2206 "./util/configparser.y"
-    {
-               OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 441:
+#line 2208 "./util/configparser.y"
+       {
+               OUTYY(("P(server_ratelimit_slabs:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("number expected");
                else {
-                       cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->ratelimit_slabs = atoi(yystack.l_mark[0].str);
                        if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
                                yyerror("must be a power of 2");
                }
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 5158 "util/configparser.c"
-    break;
-
-  case 443:
-#line 2219 "./util/configparser.y"
-    {
-               OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
+break;
+case 442:
+#line 2221 "./util/configparser.y"
+       {
+               OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) {
                        yyerror("number expected");
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
+                       free(yystack.l_mark[-1].str);
+                       free(yystack.l_mark[0].str);
                } else {
                        if(!cfg_str2list_insert(&cfg_parser->cfg->
-                               ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str)))
+                               ratelimit_for_domain, yystack.l_mark[-1].str, yystack.l_mark[0].str))
                                fatal_exit("out of memory adding "
                                        "ratelimit-for-domain");
                }
        }
-#line 5176 "util/configparser.c"
-    break;
-
-  case 444:
-#line 2234 "./util/configparser.y"
-    {
-               OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
+break;
+case 443:
+#line 2236 "./util/configparser.y"
+       {
+               OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) {
                        yyerror("number expected");
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
+                       free(yystack.l_mark[-1].str);
+                       free(yystack.l_mark[0].str);
                } else {
                        if(!cfg_str2list_insert(&cfg_parser->cfg->
-                               ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str)))
+                               ratelimit_below_domain, yystack.l_mark[-1].str, yystack.l_mark[0].str))
                                fatal_exit("out of memory adding "
                                        "ratelimit-below-domain");
                }
        }
-#line 5194 "util/configparser.c"
-    break;
-
-  case 445:
-#line 2249 "./util/configparser.y"
-    { 
-       OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
-       if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+break;
+case 444:
+#line 2251 "./util/configparser.y"
+       { 
+       OUTYY(("P(server_ip_ratelimit_factor:%s)\n", yystack.l_mark[0].str)); 
+       if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                yyerror("number expected");
-       else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
-       free((yyvsp[0].str));
-       }
-#line 5206 "util/configparser.c"
-    break;
-
-  case 446:
-#line 2258 "./util/configparser.y"
-    { 
-               OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+       else cfg_parser->cfg->ip_ratelimit_factor = atoi(yystack.l_mark[0].str);
+       free(yystack.l_mark[0].str);
+       }
+break;
+case 445:
+#line 2260 "./util/configparser.y"
+       { 
+               OUTYY(("P(server_ratelimit_factor:%s)\n", yystack.l_mark[0].str)); 
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ratelimit_factor = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 5218 "util/configparser.c"
-    break;
-
-  case 447:
-#line 2267 "./util/configparser.y"
-    { 
+break;
+case 446:
+#line 2269 "./util/configparser.y"
+       { 
                OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
-               free((yyvsp[0].str));
-       }
-#line 5227 "util/configparser.c"
-    break;
-
-  case 448:
-#line 2273 "./util/configparser.y"
-    { 
-               OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); 
-               if(atoi((yyvsp[0].str)) <= 0)
+               free(yystack.l_mark[0].str);
+       }
+break;
+case 447:
+#line 2275 "./util/configparser.y"
+       { 
+               OUTYY(("P(server_fast_server_num:%s)\n", yystack.l_mark[0].str)); 
+               if(atoi(yystack.l_mark[0].str) <= 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
-       }
-#line 5239 "util/configparser.c"
-    break;
-
-  case 449:
-#line 2282 "./util/configparser.y"
-    { 
-               OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); 
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               else cfg_parser->cfg->fast_server_num = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
+       }
+break;
+case 448:
+#line 2284 "./util/configparser.y"
+       { 
+               OUTYY(("P(server_fast_server_permil:%s)\n", yystack.l_mark[0].str)); 
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->fast_server_permil = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 5251 "util/configparser.c"
-    break;
-
-  case 450:
-#line 2291 "./util/configparser.y"
-    {
-               OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 449:
+#line 2293 "./util/configparser.y"
+       {
+               OUTYY(("P(server_qname_minimisation:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->qname_minimisation = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5264 "util/configparser.c"
-    break;
-
-  case 451:
-#line 2301 "./util/configparser.y"
-    {
-               OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 450:
+#line 2303 "./util/configparser.y"
+       {
+               OUTYY(("P(server_qname_minimisation_strict:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->qname_minimisation_strict = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5277 "util/configparser.c"
-    break;
-
-  case 452:
-#line 2311 "./util/configparser.y"
-    {
+break;
+case 451:
+#line 2313 "./util/configparser.y"
+       {
+               OUTYY(("P(server_pad_responses:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->pad_responses = 
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
+       }
+break;
+case 452:
+#line 2323 "./util/configparser.y"
+       {
+               OUTYY(("P(server_pad_responses_block_size:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
+                       yyerror("number expected");
+               else cfg_parser->cfg->pad_responses_block_size = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
+       }
+break;
+case 453:
+#line 2332 "./util/configparser.y"
+       {
+               OUTYY(("P(server_pad_queries:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->pad_queries = 
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
+       }
+break;
+case 454:
+#line 2342 "./util/configparser.y"
+       {
+               OUTYY(("P(server_pad_queries_block_size:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
+                       yyerror("number expected");
+               else cfg_parser->cfg->pad_queries_block_size = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
+       }
+break;
+case 455:
+#line 2351 "./util/configparser.y"
+       {
        #ifdef USE_IPSECMOD
-               OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+               OUTYY(("P(server_ipsecmod_enabled:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0);
+               else cfg_parser->cfg->ipsecmod_enabled = (strcmp(yystack.l_mark[0].str, "yes")==0);
        #else
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 5293 "util/configparser.c"
-    break;
-
-  case 453:
-#line 2324 "./util/configparser.y"
-    {
+break;
+case 456:
+#line 2364 "./util/configparser.y"
+       {
        #ifdef USE_IPSECMOD
-               OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+               OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0);
+               else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp(yystack.l_mark[0].str, "yes")==0);
        #else
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 5309 "util/configparser.c"
-    break;
-
-  case 454:
-#line 2337 "./util/configparser.y"
-    {
+break;
+case 457:
+#line 2377 "./util/configparser.y"
+       {
        #ifdef USE_IPSECMOD
-               OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
+               OUTYY(("P(server_ipsecmod_hook:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->ipsecmod_hook);
-               cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str);
+               cfg_parser->cfg->ipsecmod_hook = yystack.l_mark[0].str;
        #else
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        #endif
        }
-#line 5324 "util/configparser.c"
-    break;
-
-  case 455:
-#line 2349 "./util/configparser.y"
-    {
+break;
+case 458:
+#line 2389 "./util/configparser.y"
+       {
        #ifdef USE_IPSECMOD
-               OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ipsecmod_max_ttl = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        #else
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        #endif
        }
-#line 5341 "util/configparser.c"
-    break;
-
-  case 456:
-#line 2363 "./util/configparser.y"
-    {
+break;
+case 459:
+#line 2403 "./util/configparser.y"
+       {
        #ifdef USE_IPSECMOD
-               OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str)))
+               OUTYY(("P(server_ipsecmod_whitelist:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, yystack.l_mark[0].str))
                        yyerror("out of memory");
        #else
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        #endif
        }
-#line 5356 "util/configparser.c"
-    break;
-
-  case 457:
-#line 2375 "./util/configparser.y"
-    {
+break;
+case 460:
+#line 2415 "./util/configparser.y"
+       {
        #ifdef USE_IPSECMOD
-               OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+               OUTYY(("P(server_ipsecmod_strict:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ipsecmod_strict = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        #else
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        #endif
        }
-#line 5373 "util/configparser.c"
-    break;
-
-  case 458:
-#line 2389 "./util/configparser.y"
-    {
-               OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
+break;
+case 461:
+#line 2429 "./util/configparser.y"
+       {
+               OUTYY(("P(name:%s)\n", yystack.l_mark[0].str));
                if(cfg_parser->cfg->stubs->name)
                        yyerror("stub name override, there must be one name "
                                "for one stub-zone");
                free(cfg_parser->cfg->stubs->name);
-               cfg_parser->cfg->stubs->name = (yyvsp[0].str);
+               cfg_parser->cfg->stubs->name = yystack.l_mark[0].str;
        }
-#line 5386 "util/configparser.c"
-    break;
-
-  case 459:
-#line 2399 "./util/configparser.y"
-    {
-               OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
+break;
+case 462:
+#line 2439 "./util/configparser.y"
+       {
+               OUTYY(("P(stub-host:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 5396 "util/configparser.c"
-    break;
-
-  case 460:
-#line 2406 "./util/configparser.y"
-    {
-               OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
+break;
+case 463:
+#line 2446 "./util/configparser.y"
+       {
+               OUTYY(("P(stub-addr:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 5406 "util/configparser.c"
-    break;
-
-  case 461:
-#line 2413 "./util/configparser.y"
-    {
-               OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 464:
+#line 2453 "./util/configparser.y"
+       {
+               OUTYY(("P(stub-first:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->stubs->isfirst=(strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5418 "util/configparser.c"
-    break;
-
-  case 462:
-#line 2422 "./util/configparser.y"
-    {
-               OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 465:
+#line 2462 "./util/configparser.y"
+       {
+               OUTYY(("P(stub-no-cache:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->stubs->no_cache=(strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5430 "util/configparser.c"
-    break;
-
-  case 463:
-#line 2431 "./util/configparser.y"
-    {
-               OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 466:
+#line 2471 "./util/configparser.y"
+       {
+               OUTYY(("P(stub-ssl-upstream:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->stubs->ssl_upstream = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5443 "util/configparser.c"
-    break;
-
-  case 464:
-#line 2441 "./util/configparser.y"
-    {
-               OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 467:
+#line 2481 "./util/configparser.y"
+       {
+               OUTYY(("P(stub-prime:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->stubs->isprime = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5456 "util/configparser.c"
-    break;
-
-  case 465:
-#line 2451 "./util/configparser.y"
-    {
-               OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
+break;
+case 468:
+#line 2491 "./util/configparser.y"
+       {
+               OUTYY(("P(name:%s)\n", yystack.l_mark[0].str));
                if(cfg_parser->cfg->forwards->name)
                        yyerror("forward name override, there must be one "
                                "name for one forward-zone");
                free(cfg_parser->cfg->forwards->name);
-               cfg_parser->cfg->forwards->name = (yyvsp[0].str);
+               cfg_parser->cfg->forwards->name = yystack.l_mark[0].str;
        }
-#line 5469 "util/configparser.c"
-    break;
-
-  case 466:
-#line 2461 "./util/configparser.y"
-    {
-               OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
+break;
+case 469:
+#line 2501 "./util/configparser.y"
+       {
+               OUTYY(("P(forward-host:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 5479 "util/configparser.c"
-    break;
-
-  case 467:
-#line 2468 "./util/configparser.y"
-    {
-               OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
+break;
+case 470:
+#line 2508 "./util/configparser.y"
+       {
+               OUTYY(("P(forward-addr:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 5489 "util/configparser.c"
-    break;
-
-  case 468:
-#line 2475 "./util/configparser.y"
-    {
-               OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 471:
+#line 2515 "./util/configparser.y"
+       {
+               OUTYY(("P(forward-first:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->forwards->isfirst=(strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5501 "util/configparser.c"
-    break;
-
-  case 469:
-#line 2484 "./util/configparser.y"
-    {
-               OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 472:
+#line 2524 "./util/configparser.y"
+       {
+               OUTYY(("P(forward-no-cache:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->forwards->no_cache=(strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5513 "util/configparser.c"
-    break;
-
-  case 470:
-#line 2493 "./util/configparser.y"
-    {
-               OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 473:
+#line 2533 "./util/configparser.y"
+       {
+               OUTYY(("P(forward-ssl-upstream:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->forwards->ssl_upstream = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5526 "util/configparser.c"
-    break;
-
-  case 471:
-#line 2503 "./util/configparser.y"
-    {
-               OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
+break;
+case 474:
+#line 2543 "./util/configparser.y"
+       {
+               OUTYY(("P(name:%s)\n", yystack.l_mark[0].str));
                if(cfg_parser->cfg->auths->name)
                        yyerror("auth name override, there must be one name "
                                "for one auth-zone");
                free(cfg_parser->cfg->auths->name);
-               cfg_parser->cfg->auths->name = (yyvsp[0].str);
+               cfg_parser->cfg->auths->name = yystack.l_mark[0].str;
        }
-#line 5539 "util/configparser.c"
-    break;
-
-  case 472:
-#line 2513 "./util/configparser.y"
-    {
-               OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
+break;
+case 475:
+#line 2553 "./util/configparser.y"
+       {
+               OUTYY(("P(zonefile:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->auths->zonefile);
-               cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
+               cfg_parser->cfg->auths->zonefile = yystack.l_mark[0].str;
        }
-#line 5549 "util/configparser.c"
-    break;
-
-  case 473:
-#line 2520 "./util/configparser.y"
-    {
-               OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
+break;
+case 476:
+#line 2560 "./util/configparser.y"
+       {
+               OUTYY(("P(master:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 5559 "util/configparser.c"
-    break;
-
-  case 474:
-#line 2527 "./util/configparser.y"
-    {
-               OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
+break;
+case 477:
+#line 2567 "./util/configparser.y"
+       {
+               OUTYY(("P(url:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 5569 "util/configparser.c"
-    break;
-
-  case 475:
-#line 2534 "./util/configparser.y"
-    {
-               OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
+break;
+case 478:
+#line 2574 "./util/configparser.y"
+       {
+               OUTYY(("P(allow-notify:%s)\n", yystack.l_mark[0].str));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
-                       (yyvsp[0].str)))
+                       yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 5580 "util/configparser.c"
-    break;
-
-  case 476:
-#line 2542 "./util/configparser.y"
-    {
-               OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 479:
+#line 2582 "./util/configparser.y"
+       {
+               OUTYY(("P(for-downstream:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->auths->for_downstream =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5593 "util/configparser.c"
-    break;
-
-  case 477:
-#line 2552 "./util/configparser.y"
-    {
-               OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 480:
+#line 2592 "./util/configparser.y"
+       {
+               OUTYY(("P(for-upstream:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->auths->for_upstream =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5606 "util/configparser.c"
-    break;
-
-  case 478:
-#line 2562 "./util/configparser.y"
-    {
-               OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 481:
+#line 2602 "./util/configparser.y"
+       {
+               OUTYY(("P(fallback-enabled:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->auths->fallback_enabled =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5619 "util/configparser.c"
-    break;
-
-  case 479:
-#line 2572 "./util/configparser.y"
-    {
-               OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
+break;
+case 482:
+#line 2612 "./util/configparser.y"
+       {
+               OUTYY(("P(name:%s)\n", yystack.l_mark[0].str));
                if(cfg_parser->cfg->views->name)
                        yyerror("view name override, there must be one "
                                "name for one view");
                free(cfg_parser->cfg->views->name);
-               cfg_parser->cfg->views->name = (yyvsp[0].str);
+               cfg_parser->cfg->views->name = yystack.l_mark[0].str;
        }
-#line 5632 "util/configparser.c"
-    break;
-
-  case 480:
-#line 2582 "./util/configparser.y"
-    {
-               OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
-                  strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
-                  strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
-                  && strcmp((yyvsp[0].str), "typetransparent")!=0
-                  && strcmp((yyvsp[0].str), "always_transparent")!=0
-                  && strcmp((yyvsp[0].str), "always_refuse")!=0
-                  && strcmp((yyvsp[0].str), "always_nxdomain")!=0
-                  && strcmp((yyvsp[0].str), "noview")!=0
-                  && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0) {
+break;
+case 483:
+#line 2622 "./util/configparser.y"
+       {
+               OUTYY(("P(view_local_zone:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "static")!=0 && strcmp(yystack.l_mark[0].str, "deny")!=0 &&
+                  strcmp(yystack.l_mark[0].str, "refuse")!=0 && strcmp(yystack.l_mark[0].str, "redirect")!=0 &&
+                  strcmp(yystack.l_mark[0].str, "transparent")!=0 && strcmp(yystack.l_mark[0].str, "nodefault")!=0
+                  && strcmp(yystack.l_mark[0].str, "typetransparent")!=0
+                  && strcmp(yystack.l_mark[0].str, "always_transparent")!=0
+                  && strcmp(yystack.l_mark[0].str, "always_refuse")!=0
+                  && strcmp(yystack.l_mark[0].str, "always_nxdomain")!=0
+                  && strcmp(yystack.l_mark[0].str, "noview")!=0
+                  && strcmp(yystack.l_mark[0].str, "inform")!=0 && strcmp(yystack.l_mark[0].str, "inform_deny")!=0) {
                        yyerror("local-zone type: expected static, deny, "
                                "refuse, redirect, transparent, "
                                "typetransparent, inform, inform_deny, "
                                "always_transparent, always_refuse, "
                                "always_nxdomain, noview or nodefault");
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
-               } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
+                       free(yystack.l_mark[-1].str);
+                       free(yystack.l_mark[0].str);
+               } else if(strcmp(yystack.l_mark[0].str, "nodefault")==0) {
                        if(!cfg_strlist_insert(&cfg_parser->cfg->views->
-                               local_zones_nodefault, (yyvsp[-1].str)))
+                               local_zones_nodefault, yystack.l_mark[-1].str))
                                fatal_exit("out of memory adding local-zone");
-                       free((yyvsp[0].str));
+                       free(yystack.l_mark[0].str);
 #ifdef USE_IPSET
-               } else if(strcmp((yyvsp[0].str), "ipset")==0) {
+               } else if(strcmp(yystack.l_mark[0].str, "ipset")==0) {
                        if(!cfg_strlist_insert(&cfg_parser->cfg->views->
-                               local_zones_ipset, (yyvsp[-1].str)))
+                               local_zones_ipset, yystack.l_mark[-1].str))
                                fatal_exit("out of memory adding local-zone");
-                       free((yyvsp[0].str));
+                       free(yystack.l_mark[0].str);
 #endif
                } else {
                        if(!cfg_str2list_insert(
                                &cfg_parser->cfg->views->local_zones, 
-                               (yyvsp[-1].str), (yyvsp[0].str)))
+                               yystack.l_mark[-1].str, yystack.l_mark[0].str))
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 5674 "util/configparser.c"
-    break;
-
-  case 481:
-#line 2621 "./util/configparser.y"
-    {
-               OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               validate_respip_action((yyvsp[0].str));
+break;
+case 484:
+#line 2661 "./util/configparser.y"
+       {
+               OUTYY(("P(view_response_ip:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str));
+               validate_respip_action(yystack.l_mark[0].str);
                if(!cfg_str2list_insert(
-                       &cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str)))
+                       &cfg_parser->cfg->views->respip_actions, yystack.l_mark[-1].str, yystack.l_mark[0].str))
                        fatal_exit("out of memory adding per-view "
                                "response-ip action");
        }
-#line 5687 "util/configparser.c"
-    break;
-
-  case 482:
-#line 2631 "./util/configparser.y"
-    {
-               OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
+break;
+case 485:
+#line 2671 "./util/configparser.y"
+       {
+               OUTYY(("P(view_response_ip_data:%s)\n", yystack.l_mark[-1].str));
                if(!cfg_str2list_insert(
-                       &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
+                       &cfg_parser->cfg->views->respip_data, yystack.l_mark[-1].str, yystack.l_mark[0].str))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 5698 "util/configparser.c"
-    break;
-
-  case 483:
-#line 2639 "./util/configparser.y"
-    {
-               OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
+break;
+case 486:
+#line 2679 "./util/configparser.y"
+       {
+               OUTYY(("P(view_local_data:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, yystack.l_mark[0].str)) {
                        fatal_exit("out of memory adding local-data");
                }
        }
-#line 5709 "util/configparser.c"
-    break;
-
-  case 484:
-#line 2647 "./util/configparser.y"
-    {
+break;
+case 487:
+#line 2687 "./util/configparser.y"
+       {
                char* ptr;
-               OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
-               ptr = cfg_ptr_reverse((yyvsp[0].str));
-               free((yyvsp[0].str));
+               OUTYY(("P(view_local_data_ptr:%s)\n", yystack.l_mark[0].str));
+               ptr = cfg_ptr_reverse(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
                if(ptr) {
                        if(!cfg_strlist_insert(&cfg_parser->cfg->views->
                                local_data, ptr))
@@ -5723,919 +4629,610 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 5727 "util/configparser.c"
-    break;
-
-  case 485:
-#line 2662 "./util/configparser.y"
-    {
-               OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 488:
+#line 2702 "./util/configparser.y"
+       {
+               OUTYY(("P(view-first:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->views->isfirst=(strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5739 "util/configparser.c"
-    break;
-
-  case 486:
-#line 2671 "./util/configparser.y"
-    { 
+break;
+case 489:
+#line 2711 "./util/configparser.y"
+       { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
-#line 5747 "util/configparser.c"
-    break;
-
-  case 497:
-#line 2682 "./util/configparser.y"
-    {
-               OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 500:
+#line 2722 "./util/configparser.y"
+       {
+               OUTYY(("P(control_enable:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->remote_control_enable = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5760 "util/configparser.c"
-    break;
-
-  case 498:
-#line 2692 "./util/configparser.y"
-    {
-               OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 501:
+#line 2732 "./util/configparser.y"
+       {
+               OUTYY(("P(control_port:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("control port number expected");
-               else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->control_port = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 5772 "util/configparser.c"
-    break;
-
-  case 499:
-#line 2701 "./util/configparser.y"
-    {
-               OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
+break;
+case 502:
+#line 2741 "./util/configparser.y"
+       {
+               OUTYY(("P(control_interface:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 5782 "util/configparser.c"
-    break;
-
-  case 500:
-#line 2708 "./util/configparser.y"
-    {
-               OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
-               cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+break;
+case 503:
+#line 2748 "./util/configparser.y"
+       {
+               OUTYY(("P(control_use_cert:%s)\n", yystack.l_mark[0].str));
+               cfg_parser->cfg->control_use_cert = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5792 "util/configparser.c"
-    break;
-
-  case 501:
-#line 2715 "./util/configparser.y"
-    {
-               OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
+break;
+case 504:
+#line 2755 "./util/configparser.y"
+       {
+               OUTYY(("P(rc_server_key_file:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->server_key_file);
-               cfg_parser->cfg->server_key_file = (yyvsp[0].str);
+               cfg_parser->cfg->server_key_file = yystack.l_mark[0].str;
        }
-#line 5802 "util/configparser.c"
-    break;
-
-  case 502:
-#line 2722 "./util/configparser.y"
-    {
-               OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
+break;
+case 505:
+#line 2762 "./util/configparser.y"
+       {
+               OUTYY(("P(rc_server_cert_file:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->server_cert_file);
-               cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
+               cfg_parser->cfg->server_cert_file = yystack.l_mark[0].str;
        }
-#line 5812 "util/configparser.c"
-    break;
-
-  case 503:
-#line 2729 "./util/configparser.y"
-    {
-               OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
+break;
+case 506:
+#line 2769 "./util/configparser.y"
+       {
+               OUTYY(("P(rc_control_key_file:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->control_key_file);
-               cfg_parser->cfg->control_key_file = (yyvsp[0].str);
+               cfg_parser->cfg->control_key_file = yystack.l_mark[0].str;
        }
-#line 5822 "util/configparser.c"
-    break;
-
-  case 504:
-#line 2736 "./util/configparser.y"
-    {
-               OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
+break;
+case 507:
+#line 2776 "./util/configparser.y"
+       {
+               OUTYY(("P(rc_control_cert_file:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->control_cert_file);
-               cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
+               cfg_parser->cfg->control_cert_file = yystack.l_mark[0].str;
        }
-#line 5832 "util/configparser.c"
-    break;
-
-  case 505:
-#line 2743 "./util/configparser.y"
-    {
+break;
+case 508:
+#line 2783 "./util/configparser.y"
+       {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 5840 "util/configparser.c"
-    break;
-
-  case 526:
-#line 2763 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 529:
+#line 2803 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_enable:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dnstap = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5852 "util/configparser.c"
-    break;
-
-  case 527:
-#line 2772 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
+break;
+case 530:
+#line 2812 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_socket_path:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->dnstap_socket_path);
-               cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_socket_path = yystack.l_mark[0].str;
        }
-#line 5862 "util/configparser.c"
-    break;
-
-  case 528:
-#line 2779 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
+break;
+case 531:
+#line 2819 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_ip:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->dnstap_ip);
-               cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_ip = yystack.l_mark[0].str;
        }
-#line 5872 "util/configparser.c"
-    break;
-
-  case 529:
-#line 2786 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 532:
+#line 2826 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_tls:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dnstap_tls = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5884 "util/configparser.c"
-    break;
-
-  case 530:
-#line 2795 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
+break;
+case 533:
+#line 2835 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->dnstap_tls_server_name);
-               cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_tls_server_name = yystack.l_mark[0].str;
        }
-#line 5894 "util/configparser.c"
-    break;
-
-  case 531:
-#line 2802 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
+break;
+case 534:
+#line 2842 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->dnstap_tls_cert_bundle);
-               cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_tls_cert_bundle = yystack.l_mark[0].str;
        }
-#line 5904 "util/configparser.c"
-    break;
-
-  case 532:
-#line 2809 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
+break;
+case 535:
+#line 2849 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->dnstap_tls_client_key_file);
-               cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_tls_client_key_file = yystack.l_mark[0].str;
        }
-#line 5914 "util/configparser.c"
-    break;
-
-  case 533:
-#line 2816 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
+break;
+case 536:
+#line 2856 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->dnstap_tls_client_cert_file);
-               cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_tls_client_cert_file = yystack.l_mark[0].str;
        }
-#line 5924 "util/configparser.c"
-    break;
-
-  case 534:
-#line 2823 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 537:
+#line 2863 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_send_identity:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dnstap_send_identity = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5936 "util/configparser.c"
-    break;
-
-  case 535:
-#line 2832 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 538:
+#line 2872 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_send_version:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dnstap_send_version = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5948 "util/configparser.c"
-    break;
-
-  case 536:
-#line 2841 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
+break;
+case 539:
+#line 2881 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_identity:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->dnstap_identity);
-               cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_identity = yystack.l_mark[0].str;
        }
-#line 5958 "util/configparser.c"
-    break;
-
-  case 537:
-#line 2848 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
+break;
+case 540:
+#line 2888 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_version:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->dnstap_version);
-               cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_version = yystack.l_mark[0].str;
        }
-#line 5968 "util/configparser.c"
-    break;
-
-  case 538:
-#line 2855 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 541:
+#line 2895 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_log_resolver_query_messages =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5981 "util/configparser.c"
-    break;
-
-  case 539:
-#line 2865 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 542:
+#line 2905 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_log_resolver_response_messages =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 5994 "util/configparser.c"
-    break;
-
-  case 540:
-#line 2875 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 543:
+#line 2915 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_log_client_query_messages =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 6007 "util/configparser.c"
-    break;
-
-  case 541:
-#line 2885 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 544:
+#line 2925 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_log_client_response_messages =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 6020 "util/configparser.c"
-    break;
-
-  case 542:
-#line 2895 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 545:
+#line 2935 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 6033 "util/configparser.c"
-    break;
-
-  case 543:
-#line 2905 "./util/configparser.y"
-    {
-               OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 546:
+#line 2945 "./util/configparser.y"
+       {
+               OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 6046 "util/configparser.c"
-    break;
-
-  case 544:
-#line 2915 "./util/configparser.y"
-    { 
+break;
+case 547:
+#line 2955 "./util/configparser.y"
+       { 
                OUTYY(("\nP(python:)\n")); 
        }
-#line 6054 "util/configparser.c"
-    break;
-
-  case 548:
-#line 2924 "./util/configparser.y"
-    {
-               OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
+break;
+case 551:
+#line 2964 "./util/configparser.y"
+       {
+               OUTYY(("P(python-script:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, yystack.l_mark[0].str))
                        yyerror("out of memory");
        }
-#line 6064 "util/configparser.c"
-    break;
-
-  case 549:
-#line 2930 "./util/configparser.y"
-    {
-               OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
-               if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 552:
+#line 2970 "./util/configparser.y"
+       {
+               OUTYY(("P(disable_dnssec_lame_check:%s)\n", yystack.l_mark[0].str));
+               if (strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->disable_dnssec_lame_check =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 6077 "util/configparser.c"
-    break;
-
-  case 550:
-#line 2940 "./util/configparser.y"
-    {
-               OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
+break;
+case 553:
+#line 2980 "./util/configparser.y"
+       {
+               OUTYY(("P(server_log_identity:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->log_identity);
-               cfg_parser->cfg->log_identity = (yyvsp[0].str);
+               cfg_parser->cfg->log_identity = yystack.l_mark[0].str;
        }
-#line 6087 "util/configparser.c"
-    break;
-
-  case 551:
-#line 2947 "./util/configparser.y"
-    {
-               OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               validate_respip_action((yyvsp[0].str));
+break;
+case 554:
+#line 2987 "./util/configparser.y"
+       {
+               OUTYY(("P(server_response_ip:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str));
+               validate_respip_action(yystack.l_mark[0].str);
                if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
-                       (yyvsp[-1].str), (yyvsp[0].str)))
+                       yystack.l_mark[-1].str, yystack.l_mark[0].str))
                        fatal_exit("out of memory adding response-ip");
        }
-#line 6099 "util/configparser.c"
-    break;
-
-  case 552:
-#line 2956 "./util/configparser.y"
-    {
-               OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
+break;
+case 555:
+#line 2996 "./util/configparser.y"
+       {
+               OUTYY(("P(server_response_ip_data:%s)\n", yystack.l_mark[-1].str));
                if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
-                       (yyvsp[-1].str), (yyvsp[0].str)))
+                       yystack.l_mark[-1].str, yystack.l_mark[0].str))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 6110 "util/configparser.c"
-    break;
-
-  case 553:
-#line 2964 "./util/configparser.y"
-    {
+break;
+case 556:
+#line 3004 "./util/configparser.y"
+       {
                OUTYY(("\nP(dnscrypt:)\n"));
        }
-#line 6118 "util/configparser.c"
-    break;
-
-  case 566:
-#line 2980 "./util/configparser.y"
-    {
-               OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+break;
+case 569:
+#line 3020 "./util/configparser.y"
+       {
+               OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", yystack.l_mark[0].str));
+               if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dnscrypt = (strcmp(yystack.l_mark[0].str, "yes")==0);
+               free(yystack.l_mark[0].str);
        }
-#line 6130 "util/configparser.c"
-    break;
-
-  case 567:
-#line 2990 "./util/configparser.y"
-    {
-               OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+break;
+case 570:
+#line 3030 "./util/configparser.y"
+       {
+               OUTYY(("P(dnsc_dnscrypt_port:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("port number expected");
-               else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dnscrypt_port = atoi(yystack.l_mark[0].str);
+               free(yystack.l_mark[0].str);
        }
-#line 6142 "util/configparser.c"
-    break;
-
-  case 568:
-#line 2999 "./util/configparser.y"
-    {
-               OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
+break;
+case 571:
+#line 3039 "./util/configparser.y"
+       {
+               OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->dnscrypt_provider);
-               cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
+               cfg_parser->cfg->dnscrypt_provider = yystack.l_mark[0].str;
        }
-#line 6152 "util/configparser.c"
-    break;
-
-  case 569:
-#line 3006 "./util/configparser.y"
-    {
-               OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
-               if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
-                       log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
+break;
+case 572:
+#line 3046 "./util/configparser.y"
+       {
+               OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", yystack.l_mark[0].str));
+               if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, yystack.l_mark[0].str))
+                       log_warn("dnscrypt-provider-cert %s is a duplicate", yystack.l_mark[0].str);
+               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, yystack.l_mark[0].str))
                        fatal_exit("out of memory adding dnscrypt-provider-cert");
        }
-#line 6164 "util/configparser.c"
-    break;
-
-  case 570:
-#line 3015 "./util/configparser.y"
-    {
-               OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
+break;
+case 573:
+#line 3055 "./util/configparser.y"
+       {
+               OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", yystack.l_mark[0].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, yystack.l_mark[0].str))
                        fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
        }
-#line 6174 "util/configparser.c"
-    break;
-
-  case 571:
-#line 3022 "./util/configparser.y"
-    {
-               OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
-               if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
-                       log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
+break;
+case 574:
+#line 3062 "./util/configparser.y"
+       {
+               OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", yystack.l_mark[0].str));
+               if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, yystack.l_mark[0].str))
+                       log_warn("dnscrypt-secret-key: %s is a duplicate", yystack.l_mark[0].str);
+               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, yystack.l_mark[0].str))
                        fatal_exit("out of memory adding dnscrypt-secret-key");
        }
-#line 6186 "util/configparser.c"
-    break;
-
-  case 572:
-#line 3031 "./util/configparser.y"
-    {
-       OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
-       if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
+break;
+case 575:
+#line 3071 "./util/configparser.y"
+       {
+       OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", yystack.l_mark[0].str));
+       if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
                yyerror("memory size expected");
-       free((yyvsp[0].str));
+       free(yystack.l_mark[0].str);
   }
-#line 6197 "util/configparser.c"
-    break;
-
-  case 573:
-#line 3039 "./util/configparser.y"
-    {
-       OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
-       if(atoi((yyvsp[0].str)) == 0)
+break;
+case 576:
+#line 3079 "./util/configparser.y"
+       {
+       OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", yystack.l_mark[0].str));
+       if(atoi(yystack.l_mark[0].str) == 0)
                yyerror("number expected");
        else {
-               cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str));
+               cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi(yystack.l_mark[0].str);
                if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
                        yyerror("must be a power of 2");
        }
-       free((yyvsp[0].str));
+       free(yystack.l_mark[0].str);
   }
-#line 6213 "util/configparser.c"
-    break;
-
-  case 574:
-#line 3052 "./util/configparser.y"
-    {
-       OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
-       if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
+break;
+case 577:
+#line 3092 "./util/configparser.y"
+       {
+       OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", yystack.l_mark[0].str));
+       if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->dnscrypt_nonce_cache_size))
                yyerror("memory size expected");
-       free((yyvsp[0].str));
+       free(yystack.l_mark[0].str);
   }
-#line 6224 "util/configparser.c"
-    break;
-
-  case 575:
-#line 3060 "./util/configparser.y"
-    {
-       OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
-       if(atoi((yyvsp[0].str)) == 0)
+break;
+case 578:
+#line 3100 "./util/configparser.y"
+       {
+       OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", yystack.l_mark[0].str));
+       if(atoi(yystack.l_mark[0].str) == 0)
                yyerror("number expected");
        else {
-               cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str));
+               cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi(yystack.l_mark[0].str);
                if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
                        yyerror("must be a power of 2");
        }
-       free((yyvsp[0].str));
+       free(yystack.l_mark[0].str);
   }
-#line 6240 "util/configparser.c"
-    break;
-
-  case 576:
-#line 3073 "./util/configparser.y"
-    {
+break;
+case 579:
+#line 3113 "./util/configparser.y"
+       {
                OUTYY(("\nP(cachedb:)\n"));
        }
-#line 6248 "util/configparser.c"
-    break;
-
-  case 584:
-#line 3083 "./util/configparser.y"
-    {
+break;
+case 587:
+#line 3123 "./util/configparser.y"
+       {
        #ifdef USE_CACHEDB
-               OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
+               OUTYY(("P(backend:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->cachedb_backend);
-               cfg_parser->cfg->cachedb_backend = (yyvsp[0].str);
+               cfg_parser->cfg->cachedb_backend = yystack.l_mark[0].str;
        #else
                OUTYY(("P(Compiled without cachedb, ignoring)\n"));
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        #endif
        }
-#line 6263 "util/configparser.c"
-    break;
-
-  case 585:
-#line 3095 "./util/configparser.y"
-    {
+break;
+case 588:
+#line 3135 "./util/configparser.y"
+       {
        #ifdef USE_CACHEDB
-               OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
+               OUTYY(("P(secret-seed:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->cachedb_secret);
-               cfg_parser->cfg->cachedb_secret = (yyvsp[0].str);
+               cfg_parser->cfg->cachedb_secret = yystack.l_mark[0].str;
        #else
                OUTYY(("P(Compiled without cachedb, ignoring)\n"));
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        #endif
        }
-#line 6278 "util/configparser.c"
-    break;
-
-  case 586:
-#line 3107 "./util/configparser.y"
-    {
+break;
+case 589:
+#line 3147 "./util/configparser.y"
+       {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
-               OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
+               OUTYY(("P(redis_server_host:%s)\n", yystack.l_mark[0].str));
                free(cfg_parser->cfg->redis_server_host);
-               cfg_parser->cfg->redis_server_host = (yyvsp[0].str);
+               cfg_parser->cfg->redis_server_host = yystack.l_mark[0].str;
        #else
                OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        #endif
        }
-#line 6293 "util/configparser.c"
-    break;
-
-  case 587:
-#line 3119 "./util/configparser.y"
-    {
+break;
+case 590:
+#line 3159 "./util/configparser.y"
+       {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                int port;
-               OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str)));
-               port = atoi((yyvsp[0].str));
+               OUTYY(("P(redis_server_port:%s)\n", yystack.l_mark[0].str));
+               port = atoi(yystack.l_mark[0].str);
                if(port == 0 || port < 0 || port > 65535)
                        yyerror("valid redis server port number expected");
                else cfg_parser->cfg->redis_server_port = port;
        #else
                OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 6311 "util/configparser.c"
-    break;
-
-  case 588:
-#line 3134 "./util/configparser.y"
-    {
+break;
+case 591:
+#line 3174 "./util/configparser.y"
+       {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
-               OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+               OUTYY(("P(redis_timeout:%s)\n", yystack.l_mark[0].str));
+               if(atoi(yystack.l_mark[0].str) == 0)
                        yyerror("redis timeout value expected");
-               else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str));
+               else cfg_parser->cfg->redis_timeout = atoi(yystack.l_mark[0].str);
        #else
                OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free(yystack.l_mark[0].str);
        }
-#line 6327 "util/configparser.c"
-    break;
-
-  case 589:
-#line 3147 "./util/configparser.y"
-    {
-               OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               if (atoi((yyvsp[0].str)) < 0)
+break;
+case 592:
+#line 3187 "./util/configparser.y"
+       {
+               OUTYY(("P(server_tcp_connection_limit:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str));
+               if (atoi(yystack.l_mark[0].str) < 0)
                        yyerror("positive number expected");
                else {
-                       if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str)))
+                       if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, yystack.l_mark[-1].str, yystack.l_mark[0].str))
                                fatal_exit("out of memory adding tcp connection limit");
                }
        }
-#line 6341 "util/configparser.c"
-    break;
-
-  case 590:
-#line 3158 "./util/configparser.y"
-    {
+break;
+case 593:
+#line 3198 "./util/configparser.y"
+       {
                        OUTYY(("\nP(ipset:)\n"));
                }
-#line 6349 "util/configparser.c"
-    break;
-
-  case 595:
-#line 3167 "./util/configparser.y"
-    {
+break;
+case 598:
+#line 3207 "./util/configparser.y"
+       {
                #ifdef USE_IPSET
-                       OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
+                       OUTYY(("P(name-v4:%s)\n", yystack.l_mark[0].str));
                        if(cfg_parser->cfg->ipset_name_v4)
                                yyerror("ipset name v4 override, there must be one "
                                        "name for ip v4");
                        free(cfg_parser->cfg->ipset_name_v4);
-                       cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str);
+                       cfg_parser->cfg->ipset_name_v4 = yystack.l_mark[0].str;
                #else
                        OUTYY(("P(Compiled without ipset, ignoring)\n"));
-                       free((yyvsp[0].str));
+                       free(yystack.l_mark[0].str);
                #endif
                }
-#line 6367 "util/configparser.c"
-    break;
-
-  case 596:
-#line 3182 "./util/configparser.y"
-    {
+break;
+case 599:
+#line 3222 "./util/configparser.y"
+       {
                #ifdef USE_IPSET
-                       OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
+                       OUTYY(("P(name-v6:%s)\n", yystack.l_mark[0].str));
                        if(cfg_parser->cfg->ipset_name_v6)
                                yyerror("ipset name v6 override, there must be one "
                                        "name for ip v6");
                        free(cfg_parser->cfg->ipset_name_v6);
-                       cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str);
+                       cfg_parser->cfg->ipset_name_v6 = yystack.l_mark[0].str;
                #else
                        OUTYY(("P(Compiled without ipset, ignoring)\n"));
-                       free((yyvsp[0].str));
+                       free(yystack.l_mark[0].str);
                #endif
                }
-#line 6385 "util/configparser.c"
-    break;
-
-
-#line 6389 "util/configparser.c"
-
-      default: break;
+break;
+#line 5180 "util/configparser.c"
     }
-  /* User semantic actions sometimes alter yychar, and that requires
-     that yytoken be updated with the new translation.  We take the
-     approach of translating immediately before every use of yytoken.
-     One alternative is translating here after every semantic action,
-     but that translation would be missed if the semantic action invokes
-     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
-     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
-     incorrect destructor might then be invoked immediately.  In the
-     case of YYERROR or YYBACKUP, subsequent parser actions might lead
-     to an incorrect destructor call or verbose syntax error message
-     before the lookahead is translated.  */
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
-
-  *++yyvsp = yyval;
-
-  /* Now 'shift' the result of the reduction.  Determine what state
-     that goes to, based on the state we popped back to and the rule
-     number reduced by.  */
-  {
-    const int yylhs = yyr1[yyn] - YYNTOKENS;
-    const int yyi = yypgoto[yylhs] + *yyssp;
-    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
-               ? yytable[yyi]
-               : yydefgoto[yylhs]);
-  }
-
-  goto yynewstate;
-
-
-/*--------------------------------------.
-| yyerrlab -- here on detecting error.  |
-`--------------------------------------*/
-yyerrlab:
-  /* Make sure we have latest lookahead translation.  See comments at
-     user semantic actions for why this is necessary.  */
-  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
-  /* If not already recovering from an error, report this error.  */
-  if (!yyerrstatus)
+    yystack.s_mark -= yym;
+    yystate = *yystack.s_mark;
+    yystack.l_mark -= yym;
+    yym = yylhs[yyn];
+    if (yystate == 0 && yym == 0)
     {
-      ++yynerrs;
-#if ! YYERROR_VERBOSE
-      yyerror (YY_("syntax error"));
-#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
-                                        yyssp, yytoken)
-      {
-        char const *yymsgp = YY_("syntax error");
-        int yysyntax_error_status;
-        yysyntax_error_status = YYSYNTAX_ERROR;
-        if (yysyntax_error_status == 0)
-          yymsgp = yymsg;
-        else if (yysyntax_error_status == 1)
-          {
-            if (yymsg != yymsgbuf)
-              YYSTACK_FREE (yymsg);
-            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
-            if (!yymsg)
-              {
-                yymsg = yymsgbuf;
-                yymsg_alloc = sizeof yymsgbuf;
-                yysyntax_error_status = 2;
-              }
-            else
-              {
-                yysyntax_error_status = YYSYNTAX_ERROR;
-                yymsgp = yymsg;
-              }
-          }
-        yyerror (yymsgp);
-        if (yysyntax_error_status == 2)
-          goto yyexhaustedlab;
-      }
-# undef YYSYNTAX_ERROR
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
 #endif
-    }
-
-
-
-  if (yyerrstatus == 3)
-    {
-      /* If just tried and failed to reuse lookahead token after an
-         error, discard it.  */
-
-      if (yychar <= YYEOF)
-        {
-          /* Return failure if at end of input.  */
-          if (yychar == YYEOF)
-            YYABORT;
-        }
-      else
-        {
-          yydestruct ("Error: discarding",
-                      yytoken, &yylval);
-          yychar = YYEMPTY;
-        }
-    }
-
-  /* Else will try to reuse lookahead token after shifting the error
-     token.  */
-  goto yyerrlab1;
-
-
-/*---------------------------------------------------.
-| 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 (0)
-    YYERROR;
-
-  /* Do not reclaim the symbols of the rule whose action triggered
-     this YYERROR.  */
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
-  yystate = *yyssp;
-  goto yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| yyerrlab1 -- common code for both syntax error and YYERROR.  |
-`-------------------------------------------------------------*/
-yyerrlab1:
-  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
-
-  for (;;)
-    {
-      yyn = yypact[yystate];
-      if (!yypact_value_is_default (yyn))
+        yystate = YYFINAL;
+        *++yystack.s_mark = YYFINAL;
+        *++yystack.l_mark = yyval;
+        if (yychar < 0)
         {
-          yyn += YYTERROR;
-          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+            if ((yychar = YYLEX) < 0) yychar = YYEOF;
+#if YYDEBUG
+            if (yydebug)
             {
-              yyn = yytable[yyn];
-              if (0 < yyn)
-                break;
+                yys = yyname[YYTRANSLATE(yychar)];
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
             }
+#endif
         }
-
-      /* Pop the current state because it cannot handle the error token.  */
-      if (yyssp == yyss)
-        YYABORT;
-
-
-      yydestruct ("Error: popping",
-                  yystos[yystate], yyvsp);
-      YYPOPSTACK (1);
-      yystate = *yyssp;
-      YY_STACK_PRINT (yyss, yyssp);
+        if (yychar == YYEOF) goto yyaccept;
+        goto yyloop;
     }
-
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-
-
-  /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-
-  yystate = yyn;
-  goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here.  |
-`-------------------------------------*/
-yyacceptlab:
-  yyresult = 0;
-  goto yyreturn;
-
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here.  |
-`-----------------------------------*/
-yyabortlab:
-  yyresult = 1;
-  goto yyreturn;
-
-
-#if !defined yyoverflow || YYERROR_VERBOSE
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here.  |
-`-------------------------------------------------*/
-yyexhaustedlab:
-  yyerror (YY_("memory exhausted"));
-  yyresult = 2;
-  /* Fall through.  */
+    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
+            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
+        yystate = yytable[yyn];
+    else
+        yystate = yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
 #endif
-
-
-/*-----------------------------------------------------.
-| yyreturn -- parsing is finished, return the result.  |
-`-----------------------------------------------------*/
-yyreturn:
-  if (yychar != YYEMPTY)
+    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
     {
-      /* Make sure we have latest lookahead translation.  See comments at
-         user semantic actions for why this is necessary.  */
-      yytoken = YYTRANSLATE (yychar);
-      yydestruct ("Cleanup: discarding lookahead",
-                  yytoken, &yylval);
+        goto yyoverflow;
     }
-  /* Do not reclaim the symbols of the rule whose action triggered
-     this YYABORT or YYACCEPT.  */
-  YYPOPSTACK (yylen);
-  YY_STACK_PRINT (yyss, yyssp);
-  while (yyssp != yyss)
-    {
-      yydestruct ("Cleanup: popping",
-                  yystos[*yyssp], yyvsp);
-      YYPOPSTACK (1);
-    }
-#ifndef yyoverflow
-  if (yyss != yyssa)
-    YYSTACK_FREE (yyss);
-#endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  return yyresult;
-}
-#line 3196 "./util/configparser.y"
-
+    *++yystack.s_mark = (YYINT) yystate;
+    *++yystack.l_mark = yyval;
+    goto yyloop;
 
-/* parse helper routines could be here */
-static void
-validate_respip_action(const char* action)
-{
-       if(strcmp(action, "deny")!=0 &&
-               strcmp(action, "redirect")!=0 &&
-               strcmp(action, "inform")!=0 &&
-               strcmp(action, "inform_deny")!=0 &&
-               strcmp(action, "always_transparent")!=0 &&
-               strcmp(action, "always_refuse")!=0 &&
-               strcmp(action, "always_nxdomain")!=0)
-       {
-               yyerror("response-ip action: expected deny, redirect, "
-                       "inform, inform_deny, always_transparent, "
-                       "always_refuse or always_nxdomain");
-       }
-}
+yyoverflow:
+    YYERROR_CALL("yacc stack overflow");
 
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
 
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
index f5958de4b87bc33a827a5cae7a4e884f4c595396..0b383b6d121ef7acb0a6eb9f8532119a854f5897 100644 (file)
-/* A Bison parser, made by GNU Bison 3.4.1.  */
-
-/* Bison interface for Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 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
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
-
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
-
-/* Undocumented macros, especially those whose name start with YY_,
-   are private implementation details.  Do not rely on them.  */
-
-#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
-# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
+#define SPACE 257
+#define LETTER 258
+#define NEWLINE 259
+#define COMMENT 260
+#define COLON 261
+#define ANY 262
+#define ZONESTR 263
+#define STRING_ARG 264
+#define VAR_SERVER 265
+#define VAR_VERBOSITY 266
+#define VAR_NUM_THREADS 267
+#define VAR_PORT 268
+#define VAR_OUTGOING_RANGE 269
+#define VAR_INTERFACE 270
+#define VAR_PREFER_IP4 271
+#define VAR_DO_IP4 272
+#define VAR_DO_IP6 273
+#define VAR_PREFER_IP6 274
+#define VAR_DO_UDP 275
+#define VAR_DO_TCP 276
+#define VAR_TCP_MSS 277
+#define VAR_OUTGOING_TCP_MSS 278
+#define VAR_TCP_IDLE_TIMEOUT 279
+#define VAR_EDNS_TCP_KEEPALIVE 280
+#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 281
+#define VAR_CHROOT 282
+#define VAR_USERNAME 283
+#define VAR_DIRECTORY 284
+#define VAR_LOGFILE 285
+#define VAR_PIDFILE 286
+#define VAR_MSG_CACHE_SIZE 287
+#define VAR_MSG_CACHE_SLABS 288
+#define VAR_NUM_QUERIES_PER_THREAD 289
+#define VAR_RRSET_CACHE_SIZE 290
+#define VAR_RRSET_CACHE_SLABS 291
+#define VAR_OUTGOING_NUM_TCP 292
+#define VAR_INFRA_HOST_TTL 293
+#define VAR_INFRA_LAME_TTL 294
+#define VAR_INFRA_CACHE_SLABS 295
+#define VAR_INFRA_CACHE_NUMHOSTS 296
+#define VAR_INFRA_CACHE_LAME_SIZE 297
+#define VAR_NAME 298
+#define VAR_STUB_ZONE 299
+#define VAR_STUB_HOST 300
+#define VAR_STUB_ADDR 301
+#define VAR_TARGET_FETCH_POLICY 302
+#define VAR_HARDEN_SHORT_BUFSIZE 303
+#define VAR_HARDEN_LARGE_QUERIES 304
+#define VAR_FORWARD_ZONE 305
+#define VAR_FORWARD_HOST 306
+#define VAR_FORWARD_ADDR 307
+#define VAR_DO_NOT_QUERY_ADDRESS 308
+#define VAR_HIDE_IDENTITY 309
+#define VAR_HIDE_VERSION 310
+#define VAR_IDENTITY 311
+#define VAR_VERSION 312
+#define VAR_HARDEN_GLUE 313
+#define VAR_MODULE_CONF 314
+#define VAR_TRUST_ANCHOR_FILE 315
+#define VAR_TRUST_ANCHOR 316
+#define VAR_VAL_OVERRIDE_DATE 317
+#define VAR_BOGUS_TTL 318
+#define VAR_VAL_CLEAN_ADDITIONAL 319
+#define VAR_VAL_PERMISSIVE_MODE 320
+#define VAR_INCOMING_NUM_TCP 321
+#define VAR_MSG_BUFFER_SIZE 322
+#define VAR_KEY_CACHE_SIZE 323
+#define VAR_KEY_CACHE_SLABS 324
+#define VAR_TRUSTED_KEYS_FILE 325
+#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 326
+#define VAR_USE_SYSLOG 327
+#define VAR_OUTGOING_INTERFACE 328
+#define VAR_ROOT_HINTS 329
+#define VAR_DO_NOT_QUERY_LOCALHOST 330
+#define VAR_CACHE_MAX_TTL 331
+#define VAR_HARDEN_DNSSEC_STRIPPED 332
+#define VAR_ACCESS_CONTROL 333
+#define VAR_LOCAL_ZONE 334
+#define VAR_LOCAL_DATA 335
+#define VAR_INTERFACE_AUTOMATIC 336
+#define VAR_STATISTICS_INTERVAL 337
+#define VAR_DO_DAEMONIZE 338
+#define VAR_USE_CAPS_FOR_ID 339
+#define VAR_STATISTICS_CUMULATIVE 340
+#define VAR_OUTGOING_PORT_PERMIT 341
+#define VAR_OUTGOING_PORT_AVOID 342
+#define VAR_DLV_ANCHOR_FILE 343
+#define VAR_DLV_ANCHOR 344
+#define VAR_NEG_CACHE_SIZE 345
+#define VAR_HARDEN_REFERRAL_PATH 346
+#define VAR_PRIVATE_ADDRESS 347
+#define VAR_PRIVATE_DOMAIN 348
+#define VAR_REMOTE_CONTROL 349
+#define VAR_CONTROL_ENABLE 350
+#define VAR_CONTROL_INTERFACE 351
+#define VAR_CONTROL_PORT 352
+#define VAR_SERVER_KEY_FILE 353
+#define VAR_SERVER_CERT_FILE 354
+#define VAR_CONTROL_KEY_FILE 355
+#define VAR_CONTROL_CERT_FILE 356
+#define VAR_CONTROL_USE_CERT 357
+#define VAR_EXTENDED_STATISTICS 358
+#define VAR_LOCAL_DATA_PTR 359
+#define VAR_JOSTLE_TIMEOUT 360
+#define VAR_STUB_PRIME 361
+#define VAR_UNWANTED_REPLY_THRESHOLD 362
+#define VAR_LOG_TIME_ASCII 363
+#define VAR_DOMAIN_INSECURE 364
+#define VAR_PYTHON 365
+#define VAR_PYTHON_SCRIPT 366
+#define VAR_VAL_SIG_SKEW_MIN 367
+#define VAR_VAL_SIG_SKEW_MAX 368
+#define VAR_CACHE_MIN_TTL 369
+#define VAR_VAL_LOG_LEVEL 370
+#define VAR_AUTO_TRUST_ANCHOR_FILE 371
+#define VAR_KEEP_MISSING 372
+#define VAR_ADD_HOLDDOWN 373
+#define VAR_DEL_HOLDDOWN 374
+#define VAR_SO_RCVBUF 375
+#define VAR_EDNS_BUFFER_SIZE 376
+#define VAR_PREFETCH 377
+#define VAR_PREFETCH_KEY 378
+#define VAR_SO_SNDBUF 379
+#define VAR_SO_REUSEPORT 380
+#define VAR_HARDEN_BELOW_NXDOMAIN 381
+#define VAR_IGNORE_CD_FLAG 382
+#define VAR_LOG_QUERIES 383
+#define VAR_LOG_REPLIES 384
+#define VAR_LOG_LOCAL_ACTIONS 385
+#define VAR_TCP_UPSTREAM 386
+#define VAR_SSL_UPSTREAM 387
+#define VAR_SSL_SERVICE_KEY 388
+#define VAR_SSL_SERVICE_PEM 389
+#define VAR_SSL_PORT 390
+#define VAR_FORWARD_FIRST 391
+#define VAR_STUB_SSL_UPSTREAM 392
+#define VAR_FORWARD_SSL_UPSTREAM 393
+#define VAR_TLS_CERT_BUNDLE 394
+#define VAR_STUB_FIRST 395
+#define VAR_MINIMAL_RESPONSES 396
+#define VAR_RRSET_ROUNDROBIN 397
+#define VAR_MAX_UDP_SIZE 398
+#define VAR_DELAY_CLOSE 399
+#define VAR_UNBLOCK_LAN_ZONES 400
+#define VAR_INSECURE_LAN_ZONES 401
+#define VAR_INFRA_CACHE_MIN_RTT 402
+#define VAR_DNS64_PREFIX 403
+#define VAR_DNS64_SYNTHALL 404
+#define VAR_DNS64_IGNORE_AAAA 405
+#define VAR_DNSTAP 406
+#define VAR_DNSTAP_ENABLE 407
+#define VAR_DNSTAP_SOCKET_PATH 408
+#define VAR_DNSTAP_IP 409
+#define VAR_DNSTAP_TLS 410
+#define VAR_DNSTAP_TLS_SERVER_NAME 411
+#define VAR_DNSTAP_TLS_CERT_BUNDLE 412
+#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 413
+#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 414
+#define VAR_DNSTAP_SEND_IDENTITY 415
+#define VAR_DNSTAP_SEND_VERSION 416
+#define VAR_DNSTAP_IDENTITY 417
+#define VAR_DNSTAP_VERSION 418
+#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 419
+#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 420
+#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 421
+#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 422
+#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 423
+#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 424
+#define VAR_RESPONSE_IP_TAG 425
+#define VAR_RESPONSE_IP 426
+#define VAR_RESPONSE_IP_DATA 427
+#define VAR_HARDEN_ALGO_DOWNGRADE 428
+#define VAR_IP_TRANSPARENT 429
+#define VAR_IP_DSCP 430
+#define VAR_DISABLE_DNSSEC_LAME_CHECK 431
+#define VAR_IP_RATELIMIT 432
+#define VAR_IP_RATELIMIT_SLABS 433
+#define VAR_IP_RATELIMIT_SIZE 434
+#define VAR_RATELIMIT 435
+#define VAR_RATELIMIT_SLABS 436
+#define VAR_RATELIMIT_SIZE 437
+#define VAR_RATELIMIT_FOR_DOMAIN 438
+#define VAR_RATELIMIT_BELOW_DOMAIN 439
+#define VAR_IP_RATELIMIT_FACTOR 440
+#define VAR_RATELIMIT_FACTOR 441
+#define VAR_SEND_CLIENT_SUBNET 442
+#define VAR_CLIENT_SUBNET_ZONE 443
+#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 444
+#define VAR_CLIENT_SUBNET_OPCODE 445
+#define VAR_MAX_CLIENT_SUBNET_IPV4 446
+#define VAR_MAX_CLIENT_SUBNET_IPV6 447
+#define VAR_MIN_CLIENT_SUBNET_IPV4 448
+#define VAR_MIN_CLIENT_SUBNET_IPV6 449
+#define VAR_MAX_ECS_TREE_SIZE_IPV4 450
+#define VAR_MAX_ECS_TREE_SIZE_IPV6 451
+#define VAR_CAPS_WHITELIST 452
+#define VAR_CACHE_MAX_NEGATIVE_TTL 453
+#define VAR_PERMIT_SMALL_HOLDDOWN 454
+#define VAR_QNAME_MINIMISATION 455
+#define VAR_QNAME_MINIMISATION_STRICT 456
+#define VAR_IP_FREEBIND 457
+#define VAR_DEFINE_TAG 458
+#define VAR_LOCAL_ZONE_TAG 459
+#define VAR_ACCESS_CONTROL_TAG 460
+#define VAR_LOCAL_ZONE_OVERRIDE 461
+#define VAR_ACCESS_CONTROL_TAG_ACTION 462
+#define VAR_ACCESS_CONTROL_TAG_DATA 463
+#define VAR_VIEW 464
+#define VAR_ACCESS_CONTROL_VIEW 465
+#define VAR_VIEW_FIRST 466
+#define VAR_SERVE_EXPIRED 467
+#define VAR_SERVE_EXPIRED_TTL 468
+#define VAR_SERVE_EXPIRED_TTL_RESET 469
+#define VAR_SERVE_EXPIRED_REPLY_TTL 470
+#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 471
+#define VAR_FAKE_DSA 472
+#define VAR_FAKE_SHA1 473
+#define VAR_LOG_IDENTITY 474
+#define VAR_HIDE_TRUSTANCHOR 475
+#define VAR_TRUST_ANCHOR_SIGNALING 476
+#define VAR_AGGRESSIVE_NSEC 477
+#define VAR_USE_SYSTEMD 478
+#define VAR_SHM_ENABLE 479
+#define VAR_SHM_KEY 480
+#define VAR_ROOT_KEY_SENTINEL 481
+#define VAR_DNSCRYPT 482
+#define VAR_DNSCRYPT_ENABLE 483
+#define VAR_DNSCRYPT_PORT 484
+#define VAR_DNSCRYPT_PROVIDER 485
+#define VAR_DNSCRYPT_SECRET_KEY 486
+#define VAR_DNSCRYPT_PROVIDER_CERT 487
+#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 488
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 489
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 490
+#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 491
+#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 492
+#define VAR_PAD_RESPONSES 493
+#define VAR_PAD_RESPONSES_BLOCK_SIZE 494
+#define VAR_PAD_QUERIES 495
+#define VAR_PAD_QUERIES_BLOCK_SIZE 496
+#define VAR_IPSECMOD_ENABLED 497
+#define VAR_IPSECMOD_HOOK 498
+#define VAR_IPSECMOD_IGNORE_BOGUS 499
+#define VAR_IPSECMOD_MAX_TTL 500
+#define VAR_IPSECMOD_WHITELIST 501
+#define VAR_IPSECMOD_STRICT 502
+#define VAR_CACHEDB 503
+#define VAR_CACHEDB_BACKEND 504
+#define VAR_CACHEDB_SECRETSEED 505
+#define VAR_CACHEDB_REDISHOST 506
+#define VAR_CACHEDB_REDISPORT 507
+#define VAR_CACHEDB_REDISTIMEOUT 508
+#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 509
+#define VAR_FOR_UPSTREAM 510
+#define VAR_AUTH_ZONE 511
+#define VAR_ZONEFILE 512
+#define VAR_MASTER 513
+#define VAR_URL 514
+#define VAR_FOR_DOWNSTREAM 515
+#define VAR_FALLBACK_ENABLED 516
+#define VAR_TLS_ADDITIONAL_PORT 517
+#define VAR_LOW_RTT 518
+#define VAR_LOW_RTT_PERMIL 519
+#define VAR_FAST_SERVER_PERMIL 520
+#define VAR_FAST_SERVER_NUM 521
+#define VAR_ALLOW_NOTIFY 522
+#define VAR_TLS_WIN_CERT 523
+#define VAR_TCP_CONNECTION_LIMIT 524
+#define VAR_FORWARD_NO_CACHE 525
+#define VAR_STUB_NO_CACHE 526
+#define VAR_LOG_SERVFAIL 527
+#define VAR_DENY_ANY 528
+#define VAR_UNKNOWN_SERVER_TIME_LIMIT 529
+#define VAR_LOG_TAG_QUERYREPLY 530
+#define VAR_STREAM_WAIT_SIZE 531
+#define VAR_TLS_CIPHERS 532
+#define VAR_TLS_CIPHERSUITES 533
+#define VAR_IPSET 534
+#define VAR_IPSET_NAME_V4 535
+#define VAR_IPSET_NAME_V6 536
+#define VAR_TLS_SESSION_TICKET_KEYS 537
+#define VAR_RPZ 538
+#define VAR_TAGS 539
+#define VAR_RPZ_ACTION_OVERRIDE 540
+#define VAR_RPZ_CNAME_OVERRIDE 541
+#define VAR_RPZ_LOG 542
+#define VAR_RPZ_LOG_NAME 543
+#ifdef YYSTYPE
+#undef  YYSTYPE_IS_DECLARED
+#define YYSTYPE_IS_DECLARED 1
 #endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token type.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-  enum yytokentype
-  {
-    SPACE = 258,
-    LETTER = 259,
-    NEWLINE = 260,
-    COMMENT = 261,
-    COLON = 262,
-    ANY = 263,
-    ZONESTR = 264,
-    STRING_ARG = 265,
-    VAR_SERVER = 266,
-    VAR_VERBOSITY = 267,
-    VAR_NUM_THREADS = 268,
-    VAR_PORT = 269,
-    VAR_OUTGOING_RANGE = 270,
-    VAR_INTERFACE = 271,
-    VAR_PREFER_IP4 = 272,
-    VAR_DO_IP4 = 273,
-    VAR_DO_IP6 = 274,
-    VAR_PREFER_IP6 = 275,
-    VAR_DO_UDP = 276,
-    VAR_DO_TCP = 277,
-    VAR_TCP_MSS = 278,
-    VAR_OUTGOING_TCP_MSS = 279,
-    VAR_TCP_IDLE_TIMEOUT = 280,
-    VAR_EDNS_TCP_KEEPALIVE = 281,
-    VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 282,
-    VAR_CHROOT = 283,
-    VAR_USERNAME = 284,
-    VAR_DIRECTORY = 285,
-    VAR_LOGFILE = 286,
-    VAR_PIDFILE = 287,
-    VAR_MSG_CACHE_SIZE = 288,
-    VAR_MSG_CACHE_SLABS = 289,
-    VAR_NUM_QUERIES_PER_THREAD = 290,
-    VAR_RRSET_CACHE_SIZE = 291,
-    VAR_RRSET_CACHE_SLABS = 292,
-    VAR_OUTGOING_NUM_TCP = 293,
-    VAR_INFRA_HOST_TTL = 294,
-    VAR_INFRA_LAME_TTL = 295,
-    VAR_INFRA_CACHE_SLABS = 296,
-    VAR_INFRA_CACHE_NUMHOSTS = 297,
-    VAR_INFRA_CACHE_LAME_SIZE = 298,
-    VAR_NAME = 299,
-    VAR_STUB_ZONE = 300,
-    VAR_STUB_HOST = 301,
-    VAR_STUB_ADDR = 302,
-    VAR_TARGET_FETCH_POLICY = 303,
-    VAR_HARDEN_SHORT_BUFSIZE = 304,
-    VAR_HARDEN_LARGE_QUERIES = 305,
-    VAR_FORWARD_ZONE = 306,
-    VAR_FORWARD_HOST = 307,
-    VAR_FORWARD_ADDR = 308,
-    VAR_DO_NOT_QUERY_ADDRESS = 309,
-    VAR_HIDE_IDENTITY = 310,
-    VAR_HIDE_VERSION = 311,
-    VAR_IDENTITY = 312,
-    VAR_VERSION = 313,
-    VAR_HARDEN_GLUE = 314,
-    VAR_MODULE_CONF = 315,
-    VAR_TRUST_ANCHOR_FILE = 316,
-    VAR_TRUST_ANCHOR = 317,
-    VAR_VAL_OVERRIDE_DATE = 318,
-    VAR_BOGUS_TTL = 319,
-    VAR_VAL_CLEAN_ADDITIONAL = 320,
-    VAR_VAL_PERMISSIVE_MODE = 321,
-    VAR_INCOMING_NUM_TCP = 322,
-    VAR_MSG_BUFFER_SIZE = 323,
-    VAR_KEY_CACHE_SIZE = 324,
-    VAR_KEY_CACHE_SLABS = 325,
-    VAR_TRUSTED_KEYS_FILE = 326,
-    VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 327,
-    VAR_USE_SYSLOG = 328,
-    VAR_OUTGOING_INTERFACE = 329,
-    VAR_ROOT_HINTS = 330,
-    VAR_DO_NOT_QUERY_LOCALHOST = 331,
-    VAR_CACHE_MAX_TTL = 332,
-    VAR_HARDEN_DNSSEC_STRIPPED = 333,
-    VAR_ACCESS_CONTROL = 334,
-    VAR_LOCAL_ZONE = 335,
-    VAR_LOCAL_DATA = 336,
-    VAR_INTERFACE_AUTOMATIC = 337,
-    VAR_STATISTICS_INTERVAL = 338,
-    VAR_DO_DAEMONIZE = 339,
-    VAR_USE_CAPS_FOR_ID = 340,
-    VAR_STATISTICS_CUMULATIVE = 341,
-    VAR_OUTGOING_PORT_PERMIT = 342,
-    VAR_OUTGOING_PORT_AVOID = 343,
-    VAR_DLV_ANCHOR_FILE = 344,
-    VAR_DLV_ANCHOR = 345,
-    VAR_NEG_CACHE_SIZE = 346,
-    VAR_HARDEN_REFERRAL_PATH = 347,
-    VAR_PRIVATE_ADDRESS = 348,
-    VAR_PRIVATE_DOMAIN = 349,
-    VAR_REMOTE_CONTROL = 350,
-    VAR_CONTROL_ENABLE = 351,
-    VAR_CONTROL_INTERFACE = 352,
-    VAR_CONTROL_PORT = 353,
-    VAR_SERVER_KEY_FILE = 354,
-    VAR_SERVER_CERT_FILE = 355,
-    VAR_CONTROL_KEY_FILE = 356,
-    VAR_CONTROL_CERT_FILE = 357,
-    VAR_CONTROL_USE_CERT = 358,
-    VAR_EXTENDED_STATISTICS = 359,
-    VAR_LOCAL_DATA_PTR = 360,
-    VAR_JOSTLE_TIMEOUT = 361,
-    VAR_STUB_PRIME = 362,
-    VAR_UNWANTED_REPLY_THRESHOLD = 363,
-    VAR_LOG_TIME_ASCII = 364,
-    VAR_DOMAIN_INSECURE = 365,
-    VAR_PYTHON = 366,
-    VAR_PYTHON_SCRIPT = 367,
-    VAR_VAL_SIG_SKEW_MIN = 368,
-    VAR_VAL_SIG_SKEW_MAX = 369,
-    VAR_CACHE_MIN_TTL = 370,
-    VAR_VAL_LOG_LEVEL = 371,
-    VAR_AUTO_TRUST_ANCHOR_FILE = 372,
-    VAR_KEEP_MISSING = 373,
-    VAR_ADD_HOLDDOWN = 374,
-    VAR_DEL_HOLDDOWN = 375,
-    VAR_SO_RCVBUF = 376,
-    VAR_EDNS_BUFFER_SIZE = 377,
-    VAR_PREFETCH = 378,
-    VAR_PREFETCH_KEY = 379,
-    VAR_SO_SNDBUF = 380,
-    VAR_SO_REUSEPORT = 381,
-    VAR_HARDEN_BELOW_NXDOMAIN = 382,
-    VAR_IGNORE_CD_FLAG = 383,
-    VAR_LOG_QUERIES = 384,
-    VAR_LOG_REPLIES = 385,
-    VAR_LOG_LOCAL_ACTIONS = 386,
-    VAR_TCP_UPSTREAM = 387,
-    VAR_SSL_UPSTREAM = 388,
-    VAR_SSL_SERVICE_KEY = 389,
-    VAR_SSL_SERVICE_PEM = 390,
-    VAR_SSL_PORT = 391,
-    VAR_FORWARD_FIRST = 392,
-    VAR_STUB_SSL_UPSTREAM = 393,
-    VAR_FORWARD_SSL_UPSTREAM = 394,
-    VAR_TLS_CERT_BUNDLE = 395,
-    VAR_STUB_FIRST = 396,
-    VAR_MINIMAL_RESPONSES = 397,
-    VAR_RRSET_ROUNDROBIN = 398,
-    VAR_MAX_UDP_SIZE = 399,
-    VAR_DELAY_CLOSE = 400,
-    VAR_UNBLOCK_LAN_ZONES = 401,
-    VAR_INSECURE_LAN_ZONES = 402,
-    VAR_INFRA_CACHE_MIN_RTT = 403,
-    VAR_DNS64_PREFIX = 404,
-    VAR_DNS64_SYNTHALL = 405,
-    VAR_DNS64_IGNORE_AAAA = 406,
-    VAR_DNSTAP = 407,
-    VAR_DNSTAP_ENABLE = 408,
-    VAR_DNSTAP_SOCKET_PATH = 409,
-    VAR_DNSTAP_IP = 410,
-    VAR_DNSTAP_TLS = 411,
-    VAR_DNSTAP_TLS_SERVER_NAME = 412,
-    VAR_DNSTAP_TLS_CERT_BUNDLE = 413,
-    VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414,
-    VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415,
-    VAR_DNSTAP_SEND_IDENTITY = 416,
-    VAR_DNSTAP_SEND_VERSION = 417,
-    VAR_DNSTAP_IDENTITY = 418,
-    VAR_DNSTAP_VERSION = 419,
-    VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420,
-    VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421,
-    VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422,
-    VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423,
-    VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424,
-    VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425,
-    VAR_RESPONSE_IP_TAG = 426,
-    VAR_RESPONSE_IP = 427,
-    VAR_RESPONSE_IP_DATA = 428,
-    VAR_HARDEN_ALGO_DOWNGRADE = 429,
-    VAR_IP_TRANSPARENT = 430,
-    VAR_IP_DSCP = 431,
-    VAR_DISABLE_DNSSEC_LAME_CHECK = 432,
-    VAR_IP_RATELIMIT = 433,
-    VAR_IP_RATELIMIT_SLABS = 434,
-    VAR_IP_RATELIMIT_SIZE = 435,
-    VAR_RATELIMIT = 436,
-    VAR_RATELIMIT_SLABS = 437,
-    VAR_RATELIMIT_SIZE = 438,
-    VAR_RATELIMIT_FOR_DOMAIN = 439,
-    VAR_RATELIMIT_BELOW_DOMAIN = 440,
-    VAR_IP_RATELIMIT_FACTOR = 441,
-    VAR_RATELIMIT_FACTOR = 442,
-    VAR_SEND_CLIENT_SUBNET = 443,
-    VAR_CLIENT_SUBNET_ZONE = 444,
-    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445,
-    VAR_CLIENT_SUBNET_OPCODE = 446,
-    VAR_MAX_CLIENT_SUBNET_IPV4 = 447,
-    VAR_MAX_CLIENT_SUBNET_IPV6 = 448,
-    VAR_MIN_CLIENT_SUBNET_IPV4 = 449,
-    VAR_MIN_CLIENT_SUBNET_IPV6 = 450,
-    VAR_MAX_ECS_TREE_SIZE_IPV4 = 451,
-    VAR_MAX_ECS_TREE_SIZE_IPV6 = 452,
-    VAR_CAPS_WHITELIST = 453,
-    VAR_CACHE_MAX_NEGATIVE_TTL = 454,
-    VAR_PERMIT_SMALL_HOLDDOWN = 455,
-    VAR_QNAME_MINIMISATION = 456,
-    VAR_QNAME_MINIMISATION_STRICT = 457,
-    VAR_IP_FREEBIND = 458,
-    VAR_DEFINE_TAG = 459,
-    VAR_LOCAL_ZONE_TAG = 460,
-    VAR_ACCESS_CONTROL_TAG = 461,
-    VAR_LOCAL_ZONE_OVERRIDE = 462,
-    VAR_ACCESS_CONTROL_TAG_ACTION = 463,
-    VAR_ACCESS_CONTROL_TAG_DATA = 464,
-    VAR_VIEW = 465,
-    VAR_ACCESS_CONTROL_VIEW = 466,
-    VAR_VIEW_FIRST = 467,
-    VAR_SERVE_EXPIRED = 468,
-    VAR_SERVE_EXPIRED_TTL = 469,
-    VAR_SERVE_EXPIRED_TTL_RESET = 470,
-    VAR_SERVE_EXPIRED_REPLY_TTL = 471,
-    VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472,
-    VAR_FAKE_DSA = 473,
-    VAR_FAKE_SHA1 = 474,
-    VAR_LOG_IDENTITY = 475,
-    VAR_HIDE_TRUSTANCHOR = 476,
-    VAR_TRUST_ANCHOR_SIGNALING = 477,
-    VAR_AGGRESSIVE_NSEC = 478,
-    VAR_USE_SYSTEMD = 479,
-    VAR_SHM_ENABLE = 480,
-    VAR_SHM_KEY = 481,
-    VAR_ROOT_KEY_SENTINEL = 482,
-    VAR_DNSCRYPT = 483,
-    VAR_DNSCRYPT_ENABLE = 484,
-    VAR_DNSCRYPT_PORT = 485,
-    VAR_DNSCRYPT_PROVIDER = 486,
-    VAR_DNSCRYPT_SECRET_KEY = 487,
-    VAR_DNSCRYPT_PROVIDER_CERT = 488,
-    VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489,
-    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490,
-    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491,
-    VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492,
-    VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493,
-    VAR_IPSECMOD_ENABLED = 494,
-    VAR_IPSECMOD_HOOK = 495,
-    VAR_IPSECMOD_IGNORE_BOGUS = 496,
-    VAR_IPSECMOD_MAX_TTL = 497,
-    VAR_IPSECMOD_WHITELIST = 498,
-    VAR_IPSECMOD_STRICT = 499,
-    VAR_CACHEDB = 500,
-    VAR_CACHEDB_BACKEND = 501,
-    VAR_CACHEDB_SECRETSEED = 502,
-    VAR_CACHEDB_REDISHOST = 503,
-    VAR_CACHEDB_REDISPORT = 504,
-    VAR_CACHEDB_REDISTIMEOUT = 505,
-    VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 506,
-    VAR_FOR_UPSTREAM = 507,
-    VAR_AUTH_ZONE = 508,
-    VAR_ZONEFILE = 509,
-    VAR_MASTER = 510,
-    VAR_URL = 511,
-    VAR_FOR_DOWNSTREAM = 512,
-    VAR_FALLBACK_ENABLED = 513,
-    VAR_TLS_ADDITIONAL_PORT = 514,
-    VAR_LOW_RTT = 515,
-    VAR_LOW_RTT_PERMIL = 516,
-    VAR_FAST_SERVER_PERMIL = 517,
-    VAR_FAST_SERVER_NUM = 518,
-    VAR_ALLOW_NOTIFY = 519,
-    VAR_TLS_WIN_CERT = 520,
-    VAR_TCP_CONNECTION_LIMIT = 521,
-    VAR_FORWARD_NO_CACHE = 522,
-    VAR_STUB_NO_CACHE = 523,
-    VAR_LOG_SERVFAIL = 524,
-    VAR_DENY_ANY = 525,
-    VAR_UNKNOWN_SERVER_TIME_LIMIT = 526,
-    VAR_LOG_TAG_QUERYREPLY = 527,
-    VAR_STREAM_WAIT_SIZE = 528,
-    VAR_TLS_CIPHERS = 529,
-    VAR_TLS_CIPHERSUITES = 530,
-    VAR_IPSET = 531,
-    VAR_IPSET_NAME_V4 = 532,
-    VAR_IPSET_NAME_V6 = 533,
-    VAR_TLS_SESSION_TICKET_KEYS = 534,
-    VAR_RPZ = 535,
-    VAR_TAGS = 536,
-    VAR_RPZ_ACTION_OVERRIDE = 537,
-    VAR_RPZ_CNAME_OVERRIDE = 538,
-    VAR_RPZ_LOG = 539,
-    VAR_RPZ_LOG_NAME = 540
-  };
-#endif
-/* Tokens.  */
-#define SPACE 258
-#define LETTER 259
-#define NEWLINE 260
-#define COMMENT 261
-#define COLON 262
-#define ANY 263
-#define ZONESTR 264
-#define STRING_ARG 265
-#define VAR_SERVER 266
-#define VAR_VERBOSITY 267
-#define VAR_NUM_THREADS 268
-#define VAR_PORT 269
-#define VAR_OUTGOING_RANGE 270
-#define VAR_INTERFACE 271
-#define VAR_PREFER_IP4 272
-#define VAR_DO_IP4 273
-#define VAR_DO_IP6 274
-#define VAR_PREFER_IP6 275
-#define VAR_DO_UDP 276
-#define VAR_DO_TCP 277
-#define VAR_TCP_MSS 278
-#define VAR_OUTGOING_TCP_MSS 279
-#define VAR_TCP_IDLE_TIMEOUT 280
-#define VAR_EDNS_TCP_KEEPALIVE 281
-#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 282
-#define VAR_CHROOT 283
-#define VAR_USERNAME 284
-#define VAR_DIRECTORY 285
-#define VAR_LOGFILE 286
-#define VAR_PIDFILE 287
-#define VAR_MSG_CACHE_SIZE 288
-#define VAR_MSG_CACHE_SLABS 289
-#define VAR_NUM_QUERIES_PER_THREAD 290
-#define VAR_RRSET_CACHE_SIZE 291
-#define VAR_RRSET_CACHE_SLABS 292
-#define VAR_OUTGOING_NUM_TCP 293
-#define VAR_INFRA_HOST_TTL 294
-#define VAR_INFRA_LAME_TTL 295
-#define VAR_INFRA_CACHE_SLABS 296
-#define VAR_INFRA_CACHE_NUMHOSTS 297
-#define VAR_INFRA_CACHE_LAME_SIZE 298
-#define VAR_NAME 299
-#define VAR_STUB_ZONE 300
-#define VAR_STUB_HOST 301
-#define VAR_STUB_ADDR 302
-#define VAR_TARGET_FETCH_POLICY 303
-#define VAR_HARDEN_SHORT_BUFSIZE 304
-#define VAR_HARDEN_LARGE_QUERIES 305
-#define VAR_FORWARD_ZONE 306
-#define VAR_FORWARD_HOST 307
-#define VAR_FORWARD_ADDR 308
-#define VAR_DO_NOT_QUERY_ADDRESS 309
-#define VAR_HIDE_IDENTITY 310
-#define VAR_HIDE_VERSION 311
-#define VAR_IDENTITY 312
-#define VAR_VERSION 313
-#define VAR_HARDEN_GLUE 314
-#define VAR_MODULE_CONF 315
-#define VAR_TRUST_ANCHOR_FILE 316
-#define VAR_TRUST_ANCHOR 317
-#define VAR_VAL_OVERRIDE_DATE 318
-#define VAR_BOGUS_TTL 319
-#define VAR_VAL_CLEAN_ADDITIONAL 320
-#define VAR_VAL_PERMISSIVE_MODE 321
-#define VAR_INCOMING_NUM_TCP 322
-#define VAR_MSG_BUFFER_SIZE 323
-#define VAR_KEY_CACHE_SIZE 324
-#define VAR_KEY_CACHE_SLABS 325
-#define VAR_TRUSTED_KEYS_FILE 326
-#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 327
-#define VAR_USE_SYSLOG 328
-#define VAR_OUTGOING_INTERFACE 329
-#define VAR_ROOT_HINTS 330
-#define VAR_DO_NOT_QUERY_LOCALHOST 331
-#define VAR_CACHE_MAX_TTL 332
-#define VAR_HARDEN_DNSSEC_STRIPPED 333
-#define VAR_ACCESS_CONTROL 334
-#define VAR_LOCAL_ZONE 335
-#define VAR_LOCAL_DATA 336
-#define VAR_INTERFACE_AUTOMATIC 337
-#define VAR_STATISTICS_INTERVAL 338
-#define VAR_DO_DAEMONIZE 339
-#define VAR_USE_CAPS_FOR_ID 340
-#define VAR_STATISTICS_CUMULATIVE 341
-#define VAR_OUTGOING_PORT_PERMIT 342
-#define VAR_OUTGOING_PORT_AVOID 343
-#define VAR_DLV_ANCHOR_FILE 344
-#define VAR_DLV_ANCHOR 345
-#define VAR_NEG_CACHE_SIZE 346
-#define VAR_HARDEN_REFERRAL_PATH 347
-#define VAR_PRIVATE_ADDRESS 348
-#define VAR_PRIVATE_DOMAIN 349
-#define VAR_REMOTE_CONTROL 350
-#define VAR_CONTROL_ENABLE 351
-#define VAR_CONTROL_INTERFACE 352
-#define VAR_CONTROL_PORT 353
-#define VAR_SERVER_KEY_FILE 354
-#define VAR_SERVER_CERT_FILE 355
-#define VAR_CONTROL_KEY_FILE 356
-#define VAR_CONTROL_CERT_FILE 357
-#define VAR_CONTROL_USE_CERT 358
-#define VAR_EXTENDED_STATISTICS 359
-#define VAR_LOCAL_DATA_PTR 360
-#define VAR_JOSTLE_TIMEOUT 361
-#define VAR_STUB_PRIME 362
-#define VAR_UNWANTED_REPLY_THRESHOLD 363
-#define VAR_LOG_TIME_ASCII 364
-#define VAR_DOMAIN_INSECURE 365
-#define VAR_PYTHON 366
-#define VAR_PYTHON_SCRIPT 367
-#define VAR_VAL_SIG_SKEW_MIN 368
-#define VAR_VAL_SIG_SKEW_MAX 369
-#define VAR_CACHE_MIN_TTL 370
-#define VAR_VAL_LOG_LEVEL 371
-#define VAR_AUTO_TRUST_ANCHOR_FILE 372
-#define VAR_KEEP_MISSING 373
-#define VAR_ADD_HOLDDOWN 374
-#define VAR_DEL_HOLDDOWN 375
-#define VAR_SO_RCVBUF 376
-#define VAR_EDNS_BUFFER_SIZE 377
-#define VAR_PREFETCH 378
-#define VAR_PREFETCH_KEY 379
-#define VAR_SO_SNDBUF 380
-#define VAR_SO_REUSEPORT 381
-#define VAR_HARDEN_BELOW_NXDOMAIN 382
-#define VAR_IGNORE_CD_FLAG 383
-#define VAR_LOG_QUERIES 384
-#define VAR_LOG_REPLIES 385
-#define VAR_LOG_LOCAL_ACTIONS 386
-#define VAR_TCP_UPSTREAM 387
-#define VAR_SSL_UPSTREAM 388
-#define VAR_SSL_SERVICE_KEY 389
-#define VAR_SSL_SERVICE_PEM 390
-#define VAR_SSL_PORT 391
-#define VAR_FORWARD_FIRST 392
-#define VAR_STUB_SSL_UPSTREAM 393
-#define VAR_FORWARD_SSL_UPSTREAM 394
-#define VAR_TLS_CERT_BUNDLE 395
-#define VAR_STUB_FIRST 396
-#define VAR_MINIMAL_RESPONSES 397
-#define VAR_RRSET_ROUNDROBIN 398
-#define VAR_MAX_UDP_SIZE 399
-#define VAR_DELAY_CLOSE 400
-#define VAR_UNBLOCK_LAN_ZONES 401
-#define VAR_INSECURE_LAN_ZONES 402
-#define VAR_INFRA_CACHE_MIN_RTT 403
-#define VAR_DNS64_PREFIX 404
-#define VAR_DNS64_SYNTHALL 405
-#define VAR_DNS64_IGNORE_AAAA 406
-#define VAR_DNSTAP 407
-#define VAR_DNSTAP_ENABLE 408
-#define VAR_DNSTAP_SOCKET_PATH 409
-#define VAR_DNSTAP_IP 410
-#define VAR_DNSTAP_TLS 411
-#define VAR_DNSTAP_TLS_SERVER_NAME 412
-#define VAR_DNSTAP_TLS_CERT_BUNDLE 413
-#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414
-#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415
-#define VAR_DNSTAP_SEND_IDENTITY 416
-#define VAR_DNSTAP_SEND_VERSION 417
-#define VAR_DNSTAP_IDENTITY 418
-#define VAR_DNSTAP_VERSION 419
-#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420
-#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421
-#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422
-#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423
-#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424
-#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425
-#define VAR_RESPONSE_IP_TAG 426
-#define VAR_RESPONSE_IP 427
-#define VAR_RESPONSE_IP_DATA 428
-#define VAR_HARDEN_ALGO_DOWNGRADE 429
-#define VAR_IP_TRANSPARENT 430
-#define VAR_IP_DSCP 431
-#define VAR_DISABLE_DNSSEC_LAME_CHECK 432
-#define VAR_IP_RATELIMIT 433
-#define VAR_IP_RATELIMIT_SLABS 434
-#define VAR_IP_RATELIMIT_SIZE 435
-#define VAR_RATELIMIT 436
-#define VAR_RATELIMIT_SLABS 437
-#define VAR_RATELIMIT_SIZE 438
-#define VAR_RATELIMIT_FOR_DOMAIN 439
-#define VAR_RATELIMIT_BELOW_DOMAIN 440
-#define VAR_IP_RATELIMIT_FACTOR 441
-#define VAR_RATELIMIT_FACTOR 442
-#define VAR_SEND_CLIENT_SUBNET 443
-#define VAR_CLIENT_SUBNET_ZONE 444
-#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445
-#define VAR_CLIENT_SUBNET_OPCODE 446
-#define VAR_MAX_CLIENT_SUBNET_IPV4 447
-#define VAR_MAX_CLIENT_SUBNET_IPV6 448
-#define VAR_MIN_CLIENT_SUBNET_IPV4 449
-#define VAR_MIN_CLIENT_SUBNET_IPV6 450
-#define VAR_MAX_ECS_TREE_SIZE_IPV4 451
-#define VAR_MAX_ECS_TREE_SIZE_IPV6 452
-#define VAR_CAPS_WHITELIST 453
-#define VAR_CACHE_MAX_NEGATIVE_TTL 454
-#define VAR_PERMIT_SMALL_HOLDDOWN 455
-#define VAR_QNAME_MINIMISATION 456
-#define VAR_QNAME_MINIMISATION_STRICT 457
-#define VAR_IP_FREEBIND 458
-#define VAR_DEFINE_TAG 459
-#define VAR_LOCAL_ZONE_TAG 460
-#define VAR_ACCESS_CONTROL_TAG 461
-#define VAR_LOCAL_ZONE_OVERRIDE 462
-#define VAR_ACCESS_CONTROL_TAG_ACTION 463
-#define VAR_ACCESS_CONTROL_TAG_DATA 464
-#define VAR_VIEW 465
-#define VAR_ACCESS_CONTROL_VIEW 466
-#define VAR_VIEW_FIRST 467
-#define VAR_SERVE_EXPIRED 468
-#define VAR_SERVE_EXPIRED_TTL 469
-#define VAR_SERVE_EXPIRED_TTL_RESET 470
-#define VAR_SERVE_EXPIRED_REPLY_TTL 471
-#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472
-#define VAR_FAKE_DSA 473
-#define VAR_FAKE_SHA1 474
-#define VAR_LOG_IDENTITY 475
-#define VAR_HIDE_TRUSTANCHOR 476
-#define VAR_TRUST_ANCHOR_SIGNALING 477
-#define VAR_AGGRESSIVE_NSEC 478
-#define VAR_USE_SYSTEMD 479
-#define VAR_SHM_ENABLE 480
-#define VAR_SHM_KEY 481
-#define VAR_ROOT_KEY_SENTINEL 482
-#define VAR_DNSCRYPT 483
-#define VAR_DNSCRYPT_ENABLE 484
-#define VAR_DNSCRYPT_PORT 485
-#define VAR_DNSCRYPT_PROVIDER 486
-#define VAR_DNSCRYPT_SECRET_KEY 487
-#define VAR_DNSCRYPT_PROVIDER_CERT 488
-#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491
-#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492
-#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493
-#define VAR_IPSECMOD_ENABLED 494
-#define VAR_IPSECMOD_HOOK 495
-#define VAR_IPSECMOD_IGNORE_BOGUS 496
-#define VAR_IPSECMOD_MAX_TTL 497
-#define VAR_IPSECMOD_WHITELIST 498
-#define VAR_IPSECMOD_STRICT 499
-#define VAR_CACHEDB 500
-#define VAR_CACHEDB_BACKEND 501
-#define VAR_CACHEDB_SECRETSEED 502
-#define VAR_CACHEDB_REDISHOST 503
-#define VAR_CACHEDB_REDISPORT 504
-#define VAR_CACHEDB_REDISTIMEOUT 505
-#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 506
-#define VAR_FOR_UPSTREAM 507
-#define VAR_AUTH_ZONE 508
-#define VAR_ZONEFILE 509
-#define VAR_MASTER 510
-#define VAR_URL 511
-#define VAR_FOR_DOWNSTREAM 512
-#define VAR_FALLBACK_ENABLED 513
-#define VAR_TLS_ADDITIONAL_PORT 514
-#define VAR_LOW_RTT 515
-#define VAR_LOW_RTT_PERMIL 516
-#define VAR_FAST_SERVER_PERMIL 517
-#define VAR_FAST_SERVER_NUM 518
-#define VAR_ALLOW_NOTIFY 519
-#define VAR_TLS_WIN_CERT 520
-#define VAR_TCP_CONNECTION_LIMIT 521
-#define VAR_FORWARD_NO_CACHE 522
-#define VAR_STUB_NO_CACHE 523
-#define VAR_LOG_SERVFAIL 524
-#define VAR_DENY_ANY 525
-#define VAR_UNKNOWN_SERVER_TIME_LIMIT 526
-#define VAR_LOG_TAG_QUERYREPLY 527
-#define VAR_STREAM_WAIT_SIZE 528
-#define VAR_TLS_CIPHERS 529
-#define VAR_TLS_CIPHERSUITES 530
-#define VAR_IPSET 531
-#define VAR_IPSET_NAME_V4 532
-#define VAR_IPSET_NAME_V6 533
-#define VAR_TLS_SESSION_TICKET_KEYS 534
-#define VAR_RPZ 535
-#define VAR_TAGS 536
-#define VAR_RPZ_ACTION_OVERRIDE 537
-#define VAR_RPZ_CNAME_OVERRIDE 538
-#define VAR_RPZ_LOG 539
-#define VAR_RPZ_LOG_NAME 540
-
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-union YYSTYPE
-{
-#line 66 "./util/configparser.y"
-
+#ifndef YYSTYPE_IS_DECLARED
+#define YYSTYPE_IS_DECLARED 1
+typedef union {
        char*   str;
-
-#line 631 "util/configparser.h"
-
-};
-typedef union YYSTYPE YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-
+} YYSTYPE;
+#endif /* !YYSTYPE_IS_DECLARED */
 extern YYSTYPE yylval;
-
-int yyparse (void);
-
-#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED  */
index f7be1019c3a827aed959cb7d156ccecec653626b..bbefeb431596da6a91b0e0efab719786c760e588 100644 (file)
@@ -158,6 +158,8 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS
 %token VAR_DNSCRYPT_NONCE_CACHE_SIZE
 %token VAR_DNSCRYPT_NONCE_CACHE_SLABS
+%token VAR_PAD_RESPONSES VAR_PAD_RESPONSES_BLOCK_SIZE
+%token VAR_PAD_QUERIES VAR_PAD_QUERIES_BLOCK_SIZE
 %token VAR_IPSECMOD_ENABLED VAR_IPSECMOD_HOOK VAR_IPSECMOD_IGNORE_BOGUS
 %token VAR_IPSECMOD_MAX_TTL VAR_IPSECMOD_WHITELIST VAR_IPSECMOD_STRICT
 %token VAR_CACHEDB VAR_CACHEDB_BACKEND VAR_CACHEDB_SECRETSEED
@@ -2307,6 +2309,44 @@ server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG
                free($2);
        }
        ;
+server_pad_responses: VAR_PAD_RESPONSES STRING_ARG
+       {
+               OUTYY(("P(server_pad_responses:%s)\n", $2));
+               if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->pad_responses = 
+                       (strcmp($2, "yes")==0);
+               free($2);
+       }
+       ;
+server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG
+       {
+               OUTYY(("P(server_pad_responses_block_size:%s)\n", $2));
+               if(atoi($2) == 0)
+                       yyerror("number expected");
+               else cfg_parser->cfg->pad_responses_block_size = atoi($2);
+               free($2);
+       }
+       ;
+server_pad_queries: VAR_PAD_QUERIES STRING_ARG
+       {
+               OUTYY(("P(server_pad_queries:%s)\n", $2));
+               if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->pad_queries = 
+                       (strcmp($2, "yes")==0);
+               free($2);
+       }
+       ;
+server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG
+       {
+               OUTYY(("P(server_pad_queries_block_size:%s)\n", $2));
+               if(atoi($2) == 0)
+                       yyerror("number expected");
+               else cfg_parser->cfg->pad_queries_block_size = atoi($2);
+               free($2);
+       }
+       ;
 server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG
        {
        #ifdef USE_IPSECMOD
index be69f628a50743b95d3842b6830073ae457f6702..debb9eed100910dbab108c554ebf0734d5afe7e9 100644 (file)
@@ -798,14 +798,14 @@ calc_edns_field_size(struct edns_data* edns)
        return 1 + 2 + 2 + 4 + 2 + rdatalen;
 }
 
-void
-attach_edns_record(sldns_buffer* pkt, struct edns_data* edns)
+static void
+attach_edns_record_max_msg_sz(sldns_buffer* pkt, struct edns_data* edns,
+       uint16_t max_msg_sz)
 {
        size_t len;
        size_t rdatapos;
        struct edns_option* opt;
-       if(!edns || !edns->edns_present)
-               return;
+       struct edns_option* padding_option = NULL;
        /* inc additional count */
        sldns_buffer_write_u16_at(pkt, 10,
                sldns_buffer_read_u16_at(pkt, 10) + 1);
@@ -823,17 +823,53 @@ attach_edns_record(sldns_buffer* pkt, struct edns_data* edns)
        sldns_buffer_write_u16(pkt, 0); /* rdatalen */
        /* write rdata */
        for(opt=edns->opt_list; opt; opt=opt->next) {
+               if (opt->opt_code == LDNS_EDNS_PADDING) {
+                       padding_option = opt;
+                       continue;
+               }
                sldns_buffer_write_u16(pkt, opt->opt_code);
                sldns_buffer_write_u16(pkt, opt->opt_len);
                if(opt->opt_len != 0)
                        sldns_buffer_write(pkt, opt->opt_data, opt->opt_len);
        }
+       if (padding_option && edns->padding_block_size ) {
+               size_t pad_pos = sldns_buffer_position(pkt);
+               size_t msg_sz = ((pad_pos + 3) / edns->padding_block_size + 1)
+                                              * edns->padding_block_size;
+               size_t pad_sz;
+               
+               if (msg_sz > max_msg_sz)
+                       msg_sz = max_msg_sz;
+
+               /* By use of calc_edns_field_size, calling functions should
+                * have made sure that there is enough space for at least a
+                * zero sized padding option, but it cannot harm to leave it
+                * out if there isn't.
+                */
+               log_assert(pad_pos + 4 <= msg_sz);
+
+               pad_sz = msg_sz - pad_pos - 4;
+               sldns_buffer_write_u16(pkt, LDNS_EDNS_PADDING);
+               sldns_buffer_write_u16(pkt, pad_sz);
+               if (pad_sz) {
+                       memset(sldns_buffer_current(pkt), 0, pad_sz);
+                       sldns_buffer_skip(pkt, pad_sz);
+               }
+       }
        if(edns->opt_list)
                sldns_buffer_write_u16_at(pkt, rdatapos, 
                        sldns_buffer_position(pkt)-rdatapos-2);
        sldns_buffer_flip(pkt);
 }
 
+void
+attach_edns_record(sldns_buffer* pkt, struct edns_data* edns)
+{
+       if(!edns || !edns->edns_present)
+               return;
+       attach_edns_record_max_msg_sz(pkt, edns, edns->udp_size);
+}
+
 int 
 reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, 
        uint16_t id, uint16_t qflags, sldns_buffer* pkt, time_t timenow,
@@ -882,7 +918,7 @@ reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep,
        }
        if(attach_edns && sldns_buffer_capacity(pkt) >=
                sldns_buffer_limit(pkt)+attach_edns)
-               attach_edns_record(pkt, edns);
+               attach_edns_record_max_msg_sz(pkt, edns, udpsize+attach_edns);
        return 1;
 }
 
index fb312370366d3f96d1a86a4224270268d47d2e85..d553472bf06f39531d281020725538454ffbaff8 100644 (file)
@@ -1016,6 +1016,7 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns,
        edns->bits = sldns_read_uint16(&found->rr_last->ttl_data[2]);
        edns->udp_size = ntohs(found->rrset_class);
        edns->opt_list = NULL;
+       edns->padding_block_size = 0;
 
        /* take the options */
        rdata_len = found->rr_first->size-2;
@@ -1089,6 +1090,7 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns,
        edns->edns_version = sldns_buffer_read_u8(pkt);
        edns->bits = sldns_buffer_read_u16(pkt);
        edns->opt_list = NULL;
+       edns->padding_block_size = 0;
 
        /* take the options */
        rdata_len = sldns_buffer_read_u16(pkt);
index fd04f9f6f071dd175e328e6eb977a676cedbe616..533130c79373282bb7d956230af02a4dea0d7c64 100644 (file)
@@ -225,6 +225,8 @@ struct edns_data {
        uint16_t udp_size;
        /** rdata element list, or NULL if none */
        struct edns_option* opt_list;
+       /** block size to pad */
+       uint16_t padding_block_size;
 };
 
 /**
index d19952df09466e6d6d6b940f4db5c0254d2c7cc1..8376fb1c5de2b7a5b79d688c0c0ea45a2d3e226c 100644 (file)
@@ -79,5 +79,15 @@ int apply_edns_options(struct edns_data* edns_out, struct edns_data* edns_in,
                !edns_keepalive(edns_out, edns_in, c, region))
                return 0;
 
+       if(!cfg->pad_responses || c->type != comm_tcp || !c->ssl
+       || !edns_opt_list_find(edns_in->opt_list, LDNS_EDNS_PADDING))
+              ; /* pass */
+
+       else if(!edns_opt_list_append(&edns_out->opt_list, LDNS_EDNS_PADDING
+                                                        , 0, NULL, region))
+               return 0;
+       else
+               edns_out->padding_block_size = cfg->pad_responses_block_size;
+
        return 1;
 }
index fd9fb3cf1991300ec9d1950b16b73932d2a45d3e..7ce07e0d82d768bed42160cac96288d0421f9f58 100644 (file)
@@ -2365,6 +2365,7 @@ probe_anchor(struct module_env* env, struct trust_anchor* tp)
        edns.edns_version = 0;
        edns.bits = EDNS_DO;
        edns.opt_list = NULL;
+       edns.padding_block_size = 0;
        if(sldns_buffer_capacity(buf) < 65535)
                edns.udp_size = (uint16_t)sldns_buffer_capacity(buf);
        else    edns.udp_size = 65535;