]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
prefetch-key feature.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 13 Jan 2010 13:33:18 +0000 (13:33 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 13 Jan 2010 13:33:18 +0000 (13:33 +0000)
git-svn-id: file:///svn/unbound/trunk@1956 be551aaa-1e26-0410-a405-d3ace91eadb9

13 files changed:
doc/Changelog
doc/example.conf.in
doc/unbound.conf.5.in
iterator/iterator.c
smallapp/unbound-checkconf.c
testdata/val_keyprefetch.rpl [new file with mode: 0644]
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y

index c330baa5e8a2a1a2fb7584e3a38b785c9c0639ce..587a32202b63ed0ecf5b251e48c7d68d9e916fd2 100644 (file)
@@ -1,3 +1,8 @@
+13 January 2010: Wouter
+       - prefetch-key option that performs DNSKEY queries earlier in the
+         validation process, and that could halve the latency on DNSSEC
+         queries.  It takes some extra processing (CPU, a cache is needed).
+
 12 January 2010: Wouter
        - Fix unbound-checkconf for auto-trust-anchor-file present checks.
 
index 05846dbafaa4dfeb173add8a65cca8e85a5f2cd1..a5d7ada060dd5936cd582e3b71695f61eebbc83e 100644 (file)
@@ -297,6 +297,9 @@ server:
        # if yes, perform prefetching of almost expired message cache entries.
        # prefetch: no
 
+       # if yes, perform key lookups adjacent to normal lookups.
+       # prefetch-key: no
+
        # module configuration of the server. A string with identifiers
        # separated by spaces. "iterator" or "validator iterator"
        # module-config: "validator iterator"
index 4cb807390d7125a2f218d1a35451d7e289ec3fe4..5cc9237de6ea8ee648522ecf61fe45d8b8fc28a7 100644 (file)
@@ -509,6 +509,11 @@ keep the cache up to date.  Default is no.  Turning it on gives about
 10 percent more traffic and load on the machine, but popular items do
 not expire from the cache.
 .TP
+.B prefetch-key: \fI<yes or no>
+If yes, fetch the DNSKEYs earlier in the validation process, when a DS
+record is encountered.  This lowers the latency of requests.  It does use
+a little more CPU.  Also if the cache is set to 0, it is no use. Default is no.
+.TP
 .B module\-config: \fI<"module names">
 Module configuration, a list of module names separated by spaces, surround
 the string with quotes (""). The modules can be validator, iterator.
index d65192e0a0fc2f36f67e52ac33c350ec92879e04..f454e18f249c521cf291ae5a57e67fe5578d0a9d 100644 (file)
@@ -777,6 +777,59 @@ generate_ns_check(struct module_qstate* qstate, struct iter_qstate* iq, int id)
        }
 }
 
+/**
+ * Generate a DNSKEY prefetch query to get the DNSKEY for the DS record we
+ * just got in a referral (where we have dnssec_expected, thus have trust
+ * anchors above it).  Note that right after calling this routine the
+ * iterator detached subqueries (because of following the referral), and thus
+ * the DNSKEY query becomes detached, its return stored in the cache for
+ * later lookup by the validator.  This cache lookup by the validator avoids
+ * the roundtrip incurred by the DNSKEY query.  The DNSKEY query is now
+ * performed at about the same time the original query is sent to the domain,
+ * thus the two answers are likely to be returned at about the same time,
+ * saving a roundtrip from the validated lookup.
+ *
+ * @param qstate: the qtstate that triggered the need to prime.
+ * @param iq: iterator query state.
+ * @param id: module id.
+ */
+static void
+generate_dnskey_prefetch(struct module_qstate* qstate, 
+       struct iter_qstate* iq, int id)
+{
+       struct module_qstate* subq;
+       log_assert(iq->dp);
+
+       /* is this query the same as the prefetch? */
+       if(qstate->qinfo.qtype == LDNS_RR_TYPE_DNSKEY &&
+               query_dname_compare(iq->dp->name, qstate->qinfo.qname)==0 &&
+               (qstate->query_flags&BIT_RD) && !(qstate->query_flags&BIT_CD)){
+               return;
+       }
+
+       /* if the DNSKEY is in the cache this lookup will stop quickly */
+       log_nametypeclass(VERB_ALGO, "schedule dnskey prefetch", 
+               iq->dp->name, LDNS_RR_TYPE_DNSKEY, iq->qchase.qclass);
+       if(!generate_sub_request(iq->dp->name, iq->dp->namelen, 
+               LDNS_RR_TYPE_DNSKEY, iq->qchase.qclass, qstate, id, iq,
+               INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0)) {
+               /* we'll be slower, but it'll work */
+               verbose(VERB_ALGO, "could not generate dnskey prefetch");
+               return;
+       }
+       if(subq) {
+               struct iter_qstate* subiq = 
+                       (struct iter_qstate*)subq->minfo[id];
+               /* this qstate has the right delegation for the dnskey lookup*/
+               /* make copy to avoid use of stub dp by different qs/threads */
+               subiq->dp = delegpt_copy(iq->dp, subq->region);
+               if(!subiq->dp) {
+                       /* it'll start from the cache */
+                       return;
+               }
+       }
+}
+
 /**
  * See if the query needs forwarding.
  * 
@@ -1104,10 +1157,12 @@ processInitRequest2(struct module_qstate* qstate, struct iter_qstate* iq,
  *
  * @param qstate: query state.
  * @param iq: iterator query state.
+ * @param id: module id.
  * @return true, advancing the event to the QUERYTARGETS_STATE.
  */
 static int
-processInitRequest3(struct module_qstate* qstate, struct iter_qstate* iq)
+processInitRequest3(struct module_qstate* qstate, struct iter_qstate* iq, 
+       int id)
 {
        log_query_info(VERB_QUERY, "resolving (init part 3): ", 
                &qstate->qinfo);
@@ -1127,11 +1182,19 @@ processInitRequest3(struct module_qstate* qstate, struct iter_qstate* iq)
                        sock_list_insert(&qstate->reply_origin, NULL, 0, qstate->region);
                return final_state(iq);
        }
-
        /* After this point, unset the RD flag -- this query is going to 
         * be sent to an auth. server. */
        iq->chase_flags &= ~BIT_RD;
 
+       /* if dnssec expected, fetch key for the trust-anchor or cached-DS */
+       if(iq->dnssec_expected && qstate->env->cfg->prefetch_key &&
+               !(qstate->query_flags&BIT_CD)) {
+               generate_dnskey_prefetch(qstate, iq, id);
+               fptr_ok(fptr_whitelist_modenv_detach_subs(
+                       qstate->env->detach_subs));
+               (*qstate->env->detach_subs)(qstate);
+       }
+
        /* Jump to the next state. */
        return next_state(iq, QUERYTARGETS_STATE);
 }
@@ -1621,6 +1684,10 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq,
                 * along, indicating dnssec is expected for next zone */
                iq->dnssec_expected = iter_indicates_dnssec(qstate->env, 
                        iq->dp, iq->response, iq->qchase.qclass);
+               /* if dnssec, validating then also fetch the key for the DS */
+               if(iq->dnssec_expected && qstate->env->cfg->prefetch_key &&
+                       !(qstate->query_flags&BIT_CD))
+                       generate_dnskey_prefetch(qstate, iq, id);
 
                /* spawn off NS and addr to auth servers for the NS we just
                 * got in the referral. This gets authoritative answer
@@ -2177,7 +2244,7 @@ iter_handle(struct module_qstate* qstate, struct iter_qstate* iq,
                                cont = processInitRequest2(qstate, iq, ie, id);
                                break;
                        case INIT_REQUEST_3_STATE:
-                               cont = processInitRequest3(qstate, iq);
+                               cont = processInitRequest3(qstate, iq, id);
                                break;
                        case QUERYTARGETS_STATE:
                                cont = processQueryTargets(qstate, iq, ie, id);
index a2d35ef233bfa7938e15680f92b556d34e387595..97e9ce213c2ff5908f07e55e4f49a6b02b946f3e 100644 (file)
@@ -144,6 +144,7 @@ print_option(struct config_file* cfg, const char* opt)
        else O_MEM(opt, "so-rcvbuf", socket_rcvbuf)
        else O_MEM(opt, "rrset-cache-size", rrset_cache_size)
        else O_DEC(opt, "rrset-cache-slabs", rrset_cache_slabs)
+       else O_YNO(opt, "prefetch-key", prefetch_key)
        else O_YNO(opt, "prefetch", prefetch)
        else O_DEC(opt, "cache-max-ttl", max_ttl)
        else O_DEC(opt, "infra-host-ttl", host_ttl)
diff --git a/testdata/val_keyprefetch.rpl b/testdata/val_keyprefetch.rpl
new file mode 100644 (file)
index 0000000..9e9b13f
--- /dev/null
@@ -0,0 +1,212 @@
+; config options
+; The island of trust is at example.com
+server:
+       trust-anchor: "example.com.    3600    IN      DS      2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b"
+       val-override-date: "20070916134226"
+       target-fetch-policy: "0 0 0 0 0"
+       prefetch-key: yes
+
+stub-zone:
+       name: "."
+       stub-addr: 193.0.14.129         # K.ROOT-SERVERS.NET.
+CONFIG_END
+
+SCENARIO_BEGIN Test validator with key prefetch
+
+; K.ROOT-SERVERS.NET.
+RANGE_BEGIN 0 100
+       ADDRESS 193.0.14.129 
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+. IN NS
+SECTION ANSWER
+. IN NS        K.ROOT-SERVERS.NET.
+SECTION ADDITIONAL
+K.ROOT-SERVERS.NET.    IN      A       193.0.14.129
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+www.sub.example.com. IN A
+SECTION AUTHORITY
+com.   IN NS   a.gtld-servers.net.
+SECTION ADDITIONAL
+a.gtld-servers.net.    IN      A       192.5.6.30
+ENTRY_END
+RANGE_END
+
+; a.gtld-servers.net.
+RANGE_BEGIN 0 100
+       ADDRESS 192.5.6.30
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+com. IN NS
+SECTION ANSWER
+com.    IN NS   a.gtld-servers.net.
+SECTION ADDITIONAL
+a.gtld-servers.net.     IN      A       192.5.6.30
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+www.sub.example.com. IN A
+SECTION AUTHORITY
+example.com.   IN NS   ns.example.com.
+SECTION ADDITIONAL
+ns.example.com.                IN      A       1.2.3.4
+ENTRY_END
+RANGE_END
+
+; ns.example.com.
+RANGE_BEGIN 0 100
+       ADDRESS 1.2.3.4
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+example.com. IN NS
+SECTION ANSWER
+example.com.    IN NS   ns.example.com.
+example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+SECTION ADDITIONAL
+ns.example.com.         IN      A       1.2.3.4
+ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854}
+ENTRY_END
+
+; response to DNSKEY priming query
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+example.com. IN DNSKEY
+SECTION ANSWER
+example.com.    3600    IN      DNSKEY  256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b}
+example.com. 3600    IN      RRSIG   DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854}
+SECTION AUTHORITY
+example.com.   IN NS   ns.example.com.
+example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+SECTION ADDITIONAL
+ns.example.com.                IN      A       1.2.3.4
+ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854}
+ENTRY_END
+
+; response for delegation to sub.example.com.
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+www.sub.example.com. IN A
+SECTION ANSWER
+SECTION AUTHORITY
+sub.example.com. IN    NS ns.sub.example.com.
+sub.example.com.        3600    IN      DS      30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3
+sub.example.com.        3600    IN      RRSIG   DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854}
+SECTION ADDITIONAL
+ns.sub.example.com. IN A 1.2.3.6
+ENTRY_END
+
+; response for delegation to sub.example.com.
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+sub.example.com. IN DNSKEY
+SECTION ANSWER
+SECTION AUTHORITY
+sub.example.com. IN    NS ns.sub.example.com.
+sub.example.com.        3600    IN      DS      30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3
+sub.example.com.        3600    IN      RRSIG   DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854}
+SECTION ADDITIONAL
+ns.sub.example.com. IN A 1.2.3.6
+ENTRY_END
+RANGE_END
+
+; ns.sub.example.com.
+RANGE_BEGIN 0 100
+       ADDRESS 1.2.3.6
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+sub.example.com. IN NS
+SECTION ANSWER
+sub.example.com. IN    NS ns.sub.example.com.
+sub.example.com.        3600    IN      RRSIG   NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899}
+SECTION ADDITIONAL
+ns.sub.example.com. IN A 1.2.3.6
+ns.sub.example.com.     3600    IN      RRSIG   A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899}
+ENTRY_END
+
+; response to DNSKEY priming query
+; sub.example.com.        3600    IN      DS      30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+sub.example.com. IN DNSKEY
+SECTION ANSWER
+sub.example.com.        3600    IN      DNSKEY  256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}
+sub.example.com.        3600    IN      RRSIG   DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899}
+SECTION AUTHORITY
+sub.example.com. IN    NS ns.sub.example.com.
+sub.example.com.        3600    IN      RRSIG   NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899}
+SECTION ADDITIONAL
+ns.sub.example.com. IN A 1.2.3.6
+ns.sub.example.com.     3600    IN      RRSIG   A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899}
+ENTRY_END
+
+; response to query of interest
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+www.sub.example.com. IN A
+SECTION ANSWER
+www.sub.example.com. IN A      11.11.11.11
+www.sub.example.com.    3600    IN      RRSIG   A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899}
+SECTION AUTHORITY
+SECTION ADDITIONAL
+ENTRY_END
+RANGE_END
+
+STEP 1 QUERY
+ENTRY_BEGIN
+REPLY RD DO
+SECTION QUESTION
+www.sub.example.com. IN A
+ENTRY_END
+
+; recursion happens here.
+STEP 10 CHECK_ANSWER
+ENTRY_BEGIN
+MATCH all
+REPLY QR RD RA AD NOERROR
+SECTION QUESTION
+www.sub.example.com. IN A
+SECTION ANSWER
+www.sub.example.com.   3600    IN      A       11.11.11.11
+www.sub.example.com.    3600    IN      RRSIG   A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899}
+SECTION AUTHORITY
+SECTION ADDITIONAL
+ENTRY_END
+
+SCENARIO_END
index dafd03249d8a842910dd52f822cd9d0ac3af3dce..0fb0ef6a8548322116c258af1d0b2ebf9d03a1e5 100644 (file)
@@ -109,6 +109,7 @@ config_create()
        cfg->min_ttl = 0;
        cfg->max_ttl = 3600 * 24;
        cfg->prefetch = 0;
+       cfg->prefetch_key = 0;
        cfg->infra_cache_slabs = 4;
        cfg->infra_cache_numhosts = 10000;
        cfg->infra_cache_lame_size = 10240; /* easily 40 or more entries */
@@ -306,6 +307,9 @@ int config_set_option(struct config_file* cfg, const char* opt,
        } else if(strcmp(opt, "prefetch:") == 0) {
                IS_YES_OR_NO;
                cfg->prefetch = (strcmp(val, "yes") == 0);
+       } else if(strcmp(opt, "prefetch-key:") == 0) {
+               IS_YES_OR_NO;
+               cfg->prefetch_key = (strcmp(val, "yes") == 0);
        } else if(strcmp(opt, "cache-max-ttl:") == 0) {
                IS_NUMBER_OR_ZERO;
                cfg->max_ttl = atoi(val);
index 9b62dc011d58efc69135bf613a81ab76df7fe864..83565c925034ec530b62f245644addd54298c992 100644 (file)
@@ -170,6 +170,8 @@ struct config_file {
        int min_ttl;
        /** if prefetching of messages should be performed. */
        int prefetch;
+       /** if prefetching of DNSKEYs should be performed. */
+       int prefetch_key;
 
        /** chrootdir, if not "" or chroot will be done */
        char* chrootdir;
index 74115fa9f1dd96b24e35f5ce56501e88c62fbbb9..34b1334d7b49ddc954b0a7e6af0116dfd3ffea38 100644 (file)
@@ -362,8 +362,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 128
-#define YY_END_OF_BUFFER 129
+#define YY_NUM_RULES 129
+#define YY_END_OF_BUFFER 130
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -371,141 +371,142 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1209] =
+static yyconst flex_int16_t yy_accept[1214] =
     {   0,
-        1,    1,  110,  110,  114,  114,  118,  118,  122,  122,
-        1,    1,  129,  126,    1,  108,  108,  127,    2,  127,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  110,
-      111,  111,  112,  127,  114,  115,  115,  116,  127,  121,
-      118,  119,  119,  120,  127,  122,  123,  123,  124,  127,
-      125,  109,    2,  113,  127,  125,  126,    0,    1,    2,
-        2,    2,    2,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  110,    0,  114,    0,  121,
-        0,  118,  122,    0,  125,    0,    2,    2,  125,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  125,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  125,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,   54,  126,  126,  126,  126,  126,    6,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-
-      126,  126,  126,  125,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  125,  126,  126,  126,  126,   21,
-      126,  126,  126,  126,  126,   12,   13,  126,   15,   14,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  106,  126,  126,  126,  126,    3,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      125,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  117,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,   24,  126,  126,  126,
-      126,  126,  126,  126,   25,  126,  126,  126,  126,  126,
-
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,   67,  117,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,   66,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,   52,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,   22,  126,  126,  126,  126,  126,
-
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,   23,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,   17,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,   20,  126,   55,   56,  126,   53,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-        5,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,   69,  126,  126,  126,  126,  126,  126,
-
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,   92,   91,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,   26,  126,  126,  126,  126,
-       57,  126,  126,  126,  126,  126,   89,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,   45,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,    4,  126,
-
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,   86,  126,  126,  126,  126,
-      126,  126,  126,  100,   87,  126,   16,  126,  126,  126,
-      126,   59,   60,   58,  126,  126,  126,  126,  126,   65,
-      126,  126,  126,  126,  126,  126,  126,  126,   88,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,   74,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,   33,   34,  126,
-
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,   64,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,   68,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  105,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,   78,  126,   81,  126,  126,  126,  126,   63,  126,
-      126,   98,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,   35,   36,
-      126,   41,   82,  126,   93,   90,  126,   29,  126,   84,
-      126,  126,  126,  126,  126,    7,  126,   51,   97,  126,
-
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-       70,  126,  126,  107,  126,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,   83,   28,   30,  126,  126,
-      126,  126,  126,   50,  126,  126,  126,  101,  126,  126,
-      126,  126,  126,  126,   48,  126,  126,  126,  126,  126,
-      126,  126,  126,  126,  103,  126,  126,   27,  126,  126,
-      126,  126,  126,   11,  126,  126,  126,  126,  126,  126,
-       10,  126,  126,   31,  126,  102,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,   77,   76,  126,  104,
-
-       99,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-       37,  126,  126,  126,  126,  126,   32,  126,  126,  126,
-       71,   73,  126,  126,  126,   75,  126,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,   18,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,   96,  126,  126,  126,  126,  126,  126,   19,
-      126,    9,  126,  126,   94,   42,  126,  126,  126,   80,
-      126,   61,  126,  126,   44,   47,   43,  126,   38,  126,
-        8,  126,  126,   79,  126,  126,  126,  126,   39,  126,
-       95,  126,  126,   72,   62,   46,   40,  126,  126,  126,
-
-      126,   49,  126,  126,  126,  126,   85,    0
+        1,    1,  111,  111,  115,  115,  119,  119,  123,  123,
+        1,    1,  130,  127,    1,  109,  109,  128,    2,  128,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  111,
+      112,  112,  113,  128,  115,  116,  116,  117,  128,  122,
+      119,  120,  120,  121,  128,  123,  124,  124,  125,  128,
+      126,  110,    2,  114,  128,  126,  127,    0,    1,    2,
+        2,    2,    2,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  111,    0,  115,    0,  122,
+        0,  119,  123,    0,  126,    0,    2,    2,  126,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  126,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  126,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,   55,  127,  127,  127,  127,  127,    6,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+
+      127,  127,  127,  126,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  126,  127,  127,  127,  127,   21,
+      127,  127,  127,  127,  127,   12,   13,  127,   15,   14,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  107,  127,  127,  127,  127,    3,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      126,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  118,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,   24,  127,  127,  127,
+      127,  127,  127,  127,   25,  127,  127,  127,  127,  127,
+
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,   68,  118,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,   67,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,   53,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,   22,  127,  127,  127,  127,
+
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,   23,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,   17,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,   20,  127,   56,   57,  127,   54,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,    5,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,   70,  127,  127,  127,  127,
+
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+       93,   92,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,   26,  127,
+      127,  127,  127,   58,  127,  127,  127,  127,  127,   90,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,   45,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+
+      127,    4,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,   87,
+      127,  127,  127,  127,  127,  127,  127,  101,   88,  127,
+       16,  127,  127,  127,  127,   60,   61,   59,  127,  127,
+      127,  127,  127,   66,  127,  127,  127,  127,  127,  127,
+      127,  127,   89,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,   52,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,   75,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+
+      127,  127,   33,   34,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,   65,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,   69,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  106,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,   79,  127,   82,  127,
+      127,  127,  127,   64,  127,  127,   99,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,   35,   36,  127,   41,   83,  127,   94,
+       91,  127,   29,  127,   85,  127,  127,  127,  127,  127,
+
+        7,  127,   51,   98,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,   71,  127,  127,  108,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+       84,   28,   30,  127,  127,  127,  127,  127,   50,  127,
+      127,  127,  102,  127,  127,  127,  127,  127,  127,   48,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  104,
+      127,  127,   27,  127,  127,  127,  127,  127,   11,  127,
+      127,  127,  127,  127,  127,   10,  127,  127,   31,  127,
+      103,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+
+      127,   78,   77,  127,  105,  100,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,   37,  127,  127,  127,  127,
+      127,   32,  127,  127,  127,   72,   74,  127,  127,  127,
+       76,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,   18,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,   97,  127,  127,
+      127,  127,  127,  127,   19,  127,    9,  127,  127,   95,
+       42,  127,  127,  127,   81,  127,   62,  127,  127,   44,
+       47,   43,  127,   38,  127,    8,  127,  127,   80,  127,
+      127,  127,  127,   39,  127,   96,  127,  127,   73,   63,
+
+       46,   40,  127,  127,  127,  127,   49,  127,  127,  127,
+      127,   86,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -548,21 +549,21 @@ static yyconst flex_int32_t yy_meta[40] =
         1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1223] =
+static yyconst flex_int16_t yy_base[1228] =
     {   0,
         0,    0,   37,   40,   44,   51,   63,   75,   56,   68,
-       87,  108, 2184, 2126,   50, 2431, 2431, 2431,  129,   94,
+       87,  108, 2268, 2028,   50, 2440, 2440, 2440,  129,   94,
        70,  104,  122,   90,   92,  115,  126,   95,   84,  132,
-      133,  138,   50,  135,  136,  156,  145,  155,  157, 2087,
-     2431, 2431, 2431,   70, 2063, 2431, 2431, 2431,   42, 1805,
-     1596, 2431, 2431, 2431,  176, 1471, 2431, 2431, 2431,  181,
-     1367, 2431,  186, 2431,  190,  111, 1221,  196,  120,    0,
+      133,  138,   50,  135,  136,  156,  145,  155,  157, 1969,
+     2440, 2440, 2440,   70, 1757, 2440, 2440, 2440,   42, 1694,
+     1495, 2440, 2440, 2440,  176, 1429, 2440, 2440, 2440,  181,
+     1365, 2440,  186, 2440,  190,  111, 1172,  196,  120,    0,
       207,    0,    0,  103,  189,  183,  191,  192,  197,  200,
       202,  142,  209,  205,  208,  213,  214,  217,  218,  224,
       215,  233,  236,  225,  235,  237,  240,  241,  226,  245,
 
       248,  251,  252,  255,  259,  257,  253,  267,  263,  261,
-      265,   49,  270,  269,  273, 1170,  286,  663,  289,  576,
+      265,   49,  270,  269,  273, 1040,  286,  663,  289,  576,
       296,  540,  401,  301,  282,  305,  309,    0,  302,  306,
       312,  289,  308,  295,  313,  319,  315,  322,  334,  323,
       318,  321,  327,  325,  330,  328,  332,  331,  336,  339,
@@ -579,7 +580,7 @@ static yyconst flex_int16_t yy_base[1223] =
       531,  535,  542,  545,  547,  540,  551,  561,  552,  562,
       563,  566,  568,  565,  564,  571,  574,  575,  573,  581,
       591,  587,  589,  588,  597,  600,  599,  592,  602,  603,
-      605, 2431,  609,  611,  612,  613,  614, 2431,  615,  616,
+      605, 2440,  609,  611,  612,  613,  614, 2440,  615,  616,
       617,  618,  619,  630,  621,  628,  629,  633,  637,  647,
       638,  643,  640,  645,  651,  655,  653,  654,  656,  664,
 
@@ -590,243 +591,243 @@ static yyconst flex_int16_t yy_base[1223] =
       751,  755,  724,  756,  757,  758,  759,  773,  771,  765,
       775,  781,  777,  763,  782,  769,  785,  787,  793,  789,
       791,  792,  794,  796,  798,  799,  800,  801,  804,  807,
-      813,  814,  816,  818,  817,  820,  824,  819,  826, 2431,
-      834,  833,  830,  836,  838, 2431, 2431,  149, 2431, 2431,
+      813,  814,  816,  818,  817,  820,  824,  819,  826, 2440,
+      834,  833,  830,  836,  838, 2440, 2440,  149, 2440, 2440,
       841,  839,  842,  852,  854,  851,  849,  843,  860,  855,
 
       863,  865,  869,  871,  857,  875,  876,  878,  881,  882,
       886,  888,  883,  890,  892,  893,  897,  899,  904,  901,
-      910,  895, 2431,  912,  907,  916,  919, 2431,  908,  918,
+      910,  895, 2440,  912,  907,  916,  919, 2440,  908,  918,
       920,  913,  925,  923,  933,  926,  936,  938,  928,  941,
       943,  935,  944,  951,  949,  950,  954,  960,  957,  959,
       962,  963,  965,  964,  966,  970,  991,  971,  972,  973,
       979,  974,  985,  976,  986, 1003,  987,  980, 1005, 1008,
-     1009,  998, 1014, 1016, 2431, 1023, 1019, 1020, 1021, 1025,
-     1026, 1024, 1027, 1028, 1031, 1041, 2431, 1037, 1042, 1044,
-     1046, 1050, 1053, 1060, 2431, 1057, 1061, 1063, 1058, 1064,
-
-     1067, 1069, 1071, 1072, 1077, 1068, 1075, 1079, 1082, 1083,
-     1090, 1085, 1094, 1102, 1091, 1099, 1081, 1101, 1104, 1107,
-     1105, 1108, 1109, 1110, 2431,  216, 1111, 1112, 1113, 1119,
-     1126, 1124, 1118, 1120, 1131, 1122, 1130, 1139, 1140, 1141,
-     1142, 1143, 1144, 1146, 1148, 1151, 1153, 1154,  989, 1156,
-     1155, 1157, 1159, 1160, 2431, 1163, 1167, 1164, 1171, 1183,
-     1180, 1181, 1191, 1187, 1189, 1195, 1185, 1192, 1202, 1203,
-     1200, 1204, 1206, 2431, 1207, 1201, 1209, 1212, 1213, 1217,
-     1218, 1214, 1229, 1219, 1231, 1234, 1235, 1242, 1223, 1237,
-     1244, 1246, 1247, 1248, 2431, 1256, 1257, 1254, 1263, 1260,
-
-     1261, 1262, 1266, 1250, 1267, 1276, 1268, 1272, 1275, 1277,
-     1274, 1279, 1281, 1282, 2431, 1296, 1283, 1284, 1298, 1289,
-     1286, 1297, 1300, 1308, 1310, 1311, 1313, 1312, 1314, 1315,
-     1318, 1321, 1323, 1330, 1331, 1334, 2431, 1336, 1337, 1327,
-     1344, 1348, 1338, 1349, 1345, 1350, 1352, 1353, 1354, 1356,
-     1358, 1359, 1360, 1362, 1363, 1368, 1364, 1381, 1378, 1365,
-     1387, 2431, 1391, 2431, 2431, 1389, 2431, 1390, 1392, 1375,
-     1394, 1395, 1397, 1398, 1401, 1403, 1404, 1405, 1408, 1406,
-     2431, 1412, 1414, 1416, 1413, 1419, 1420, 1038, 1421, 1429,
-     1422, 1423, 1432, 2431, 1431, 1434, 1441, 1448, 1445, 1435,
-
-     1447, 1449, 1450, 1452, 1456, 1457, 1458, 1460, 1462, 1464,
-     1468, 1465, 1466, 1469, 1472, 1474, 1470, 1473, 2431, 2431,
-     1488, 1483, 1484, 1493, 1495, 1499, 1497, 1498, 1500, 1501,
-     1506, 1507, 1508, 1510, 1511, 2431, 1517, 1521, 1522, 1524,
-     2431, 1515, 1514, 1530, 1531, 1534, 2431, 1535, 1536, 1537,
-     1538, 1539, 1541, 1545, 1546, 1554, 1548, 1551, 1557, 1564,
-     1558, 1556, 1560, 1572, 1576, 1573, 1578, 1584, 1565, 1580,
-     1567, 1589, 1591, 1593, 1594, 2431, 1600, 1583, 1603, 1581,
-     1605, 1607, 1596, 1609, 1611, 1612, 1613, 1617, 1614, 1618,
-     1621, 1624, 1620, 1626, 1622, 1636, 1623, 1628, 2431, 1625,
-
-     1643, 1639, 1645, 1642, 1646, 1650, 1651, 1653, 1654, 1656,
-     1657, 1661, 1663, 1669, 1667, 1671, 1679, 1673, 1676, 1677,
-     1681, 1687, 1686, 1693, 1684, 2431, 1691, 1698, 1700, 1695,
-     1702, 1703, 1704, 2431, 2431, 1705, 2431, 1710, 1712, 1714,
-     1715, 2431, 2431, 2431, 1721, 1718, 1719, 1285, 1726, 2431,
-     1727, 1728, 1731, 1732, 1733, 1734, 1736, 1737, 2431, 1738,
-     1690, 1740, 1739, 1742, 1749, 1750, 1754, 1759, 1760, 1753,
-     1761, 1767, 1763, 1766, 1769, 1773, 1770, 1777, 1778, 1776,
-     1779, 1774, 1780, 1784, 2431, 1791, 1793, 1795, 1799, 1800,
-     1802, 1803, 1806, 1807, 1808, 1814, 1811, 2431, 2431, 1815,
-
-     1817, 1825, 1820, 1823, 1827, 1829, 1830, 1833, 1834, 1836,
-     1837, 1838, 1839, 2431, 1840, 1841, 1848, 1845, 1852, 1857,
-     1849, 1864, 1866, 1867, 1869, 1871, 2431, 1842, 1873, 1874,
-     1876, 1877, 1878, 1879, 1880, 1888, 1883, 1890, 2431, 1892,
-     1885, 1897, 1894, 1899, 1900, 1903, 1901, 1905, 1909, 1912,
-     1913, 2431, 1910, 2431, 1915, 1919, 1927, 1925, 2431, 1923,
-     1928, 2431, 1929, 1931, 1942, 1933, 1943, 1945, 1947, 1935,
-     1939, 1948, 1954, 1950, 1951, 1957, 1958, 1961, 2431, 2431,
-     1964, 2431, 2431, 1969, 2431, 2431, 1971, 2431, 1973, 2431,
-     1979, 1975, 1977, 1960, 1978, 2431, 1981, 2431, 2431, 1984,
-
-     1985, 1986, 1995, 1988, 1990, 1992, 1997, 1998, 1996, 2002,
-     2003, 1999, 2006, 2005, 2007, 2013, 2011, 2014, 2015, 2022,
-     2431, 2017, 2023, 2431, 2033, 2028, 2030, 2034, 2038, 2036,
-     2040, 2046, 2042, 2043, 2044, 2431, 2431, 2431, 2045, 2047,
-     2059, 2051, 2049, 2431, 2061, 2053, 2069, 2431, 2070, 2056,
-     2073, 2074, 2075, 2076, 2431, 2077, 2081, 2083, 2085, 2090,
-     2094, 2096, 2098, 2102, 2431, 2099, 2095, 2431, 2103, 2105,
-     2108, 2109, 2111, 2431, 2112, 2113, 2116, 2118, 2121, 2119,
-     2431, 2125, 2122, 2431, 2137, 2431, 2123, 2138, 2130, 2141,
-     2145, 2128, 2142, 2152, 2149, 2150, 2431, 2431, 2151, 2431,
-
-     2431, 2153, 2155, 2158, 2159, 2160, 2161, 2162, 2164, 2166,
-     2431, 2167, 2169, 2179, 2176, 2174, 2431, 2182, 2184, 2168,
-     2431, 2431, 2185, 2194, 2189, 2431, 2192, 2199, 2200, 2201,
-     2203, 2204, 2205, 2206, 2207, 2209, 2210, 2218, 2221, 2431,
-     2223, 2211, 2215, 2228, 2233, 2225, 2230, 2234, 2239, 2236,
-     2241, 2243, 2431, 2245, 2247, 2252, 2256, 2253, 2260, 2431,
-     2263, 2431, 2266, 2267, 2431, 2431, 2249, 2269, 2270, 2431,
-     2271, 2431, 2261, 2273, 2431, 2431, 2431, 2279, 2431, 2280,
-     2431, 2283, 2274, 2431, 2285, 2287, 2291, 2293, 2431, 2295,
-     2431, 2288, 2296, 2431, 2431, 2431, 2431, 2298, 2299, 2305,
-
-     2301, 2431, 2306, 2308, 2307, 2312, 2431, 2431, 2339, 2346,
-     2353, 2360, 2367,   94, 2374, 2381, 2388, 2395, 2402, 2409,
-     2416, 2423
+     1009,  998, 1014, 1016, 2440, 1023, 1019, 1020, 1021, 1025,
+     1026, 1024, 1027, 1028, 1031, 1041, 2440, 1037, 1042, 1044,
+     1046, 1050, 1053, 1060, 2440, 1062, 1063, 1065, 1056, 1038,
+
+     1066, 1070, 1072, 1073, 1078, 1074, 1076, 1080, 1082, 1083,
+     1086, 1084, 1090, 1099, 1091, 1098, 1100, 1101, 1102, 1107,
+     1104, 1108, 1105, 1109, 2440,  216, 1111, 1112, 1110, 1118,
+     1121, 1123, 1126, 1129, 1131, 1120, 1132, 1138, 1133, 1139,
+     1141, 1142, 1144, 1145, 1150, 1152, 1153, 1155,  989, 1157,
+     1156, 1158, 1159, 1160, 2440, 1163, 1170, 1165, 1166, 1181,
+     1182, 1183, 1189, 1186, 1188, 1190, 1194, 1196, 1202, 1203,
+     1199, 1201, 1206, 1200, 2440, 1209, 1210, 1212, 1207, 1216,
+     1218, 1219, 1217, 1228, 1229, 1232, 1234, 1236, 1239, 1223,
+     1244, 1240, 1246, 1247, 1249, 2440, 1255, 1259, 1257, 1263,
+
+     1251, 1261, 1265, 1267, 1268, 1269, 1275, 1271, 1273, 1272,
+     1277, 1274, 1279, 1281, 1282, 2440, 1301, 1283, 1284, 1298,
+     1289, 1286, 1308, 1295, 1297, 1310, 1313, 1315, 1316, 1317,
+     1319, 1323, 1320, 1325, 1331, 1332, 1333, 2440, 1337, 1336,
+     1324, 1345, 1347, 1339, 1348, 1356, 1349, 1352, 1353, 1355,
+     1359, 1357, 1360, 1361, 1364, 1363, 1366, 1376, 1370, 1381,
+     1377, 1383, 1389, 2440, 1391, 2440, 2440, 1388, 2440, 1392,
+     1393, 1394, 1396, 1397, 1399, 1400, 1404, 1402, 1406, 1407,
+     1409, 1410, 2440, 1413, 1416, 1421, 1414, 1418, 1423, 1285,
+     1427, 1440, 1425, 1433, 1436, 2440, 1439, 1426, 1446, 1453,
+
+     1454, 1441, 1437, 1456, 1458, 1465, 1462, 1450, 1452, 1460,
+     1469, 1466, 1475, 1471, 1473, 1474, 1477, 1478, 1487, 1481,
+     2440, 2440, 1486, 1494, 1482, 1498, 1500, 1511, 1505, 1488,
+     1502, 1512, 1476, 1513, 1514, 1516, 1518, 1519, 2440, 1525,
+     1526, 1522, 1524, 2440, 1523, 1529, 1535, 1536, 1539, 2440,
+     1540, 1541, 1543, 1544, 1546, 1550, 1542, 1553, 1556, 1558,
+     1561, 1562, 1569, 1563, 1566, 1570, 1578, 1580, 1581, 1583,
+     1591, 1567, 1585, 1587, 1593, 1595, 1597, 1598, 2440, 1605,
+     1571, 1608, 1599, 1610, 1611, 1602, 1612, 1613, 1615, 1617,
+     1619, 1620, 1622, 1625, 1627, 1630, 1631, 1626, 1628, 1634,
+
+     1639, 2440, 1642, 1648, 1641, 1644, 1650, 1653, 1654, 1656,
+     1657, 1659, 1662, 1664, 1665, 1666, 1674, 1682, 1675, 1667,
+     1688, 1684, 1685, 1687, 1690, 1697, 1671, 1700, 1691, 2440,
+     1698, 1705, 1707, 1702, 1709, 1710, 1711, 2440, 2440, 1712,
+     2440, 1717, 1713, 1719, 1721, 2440, 2440, 2440, 1727, 1723,
+     1725, 1732, 1736, 2440, 1733, 1737, 1739, 1742, 1743, 1744,
+     1746, 1745, 2440, 1747, 1748, 1741, 1749, 1763, 1751, 1764,
+     1766, 1767, 1770, 1771, 1773, 1779, 1776, 2440, 1778, 1780,
+     1783, 1784, 1786, 1790, 1788, 1791, 1785, 1787, 1801, 2440,
+     1802, 1792, 1806, 1810, 1811, 1813, 1814, 1818, 1816, 1819,
+
+     1824, 1826, 2440, 2440, 1827, 1829, 1830, 1825, 1835, 1838,
+     1839, 1841, 1843, 1844, 1845, 1847, 1848, 1849, 2440, 1850,
+     1852, 1858, 1855, 1862, 1867, 1859, 1874, 1876, 1877, 1879,
+     1881, 2440, 1882, 1884, 1885, 1889, 1890, 1851, 1891, 1897,
+     1893, 1886, 1900, 2440, 1902, 1895, 1906, 1903, 1909, 1910,
+     1911, 1912, 1917, 1919, 1923, 1920, 2440, 1922, 2440, 1925,
+     1929, 1937, 1935, 2440, 1933, 1938, 2440, 1940, 1941, 1952,
+     1945, 1953, 1955, 1957, 1939, 1947, 1958, 1965, 1964, 1961,
+     1966, 1968, 1972, 2440, 2440, 1978, 2440, 2440, 1981, 2440,
+     2440, 1983, 2440, 1985, 2440, 1991, 1987, 1973, 1975, 1990,
+
+     2440, 1993, 2440, 2440, 1994, 1996, 2000, 2002, 2003, 2004,
+     2006, 2007, 2008, 2009, 2011, 2012, 2013, 2014, 2017, 2016,
+     2023, 2024, 2026, 2027, 2036, 2440, 2025, 2044, 2440, 2047,
+     2041, 2033, 2038, 2048, 2049, 2053, 2059, 2055, 2057, 2058,
+     2440, 2440, 2440, 2060, 2062, 2067, 2069, 2061, 2440, 2072,
+     2063, 2074, 2440, 2085, 2075, 2081, 2083, 2087, 2091, 2440,
+     2089, 2093, 2095, 2094, 2102, 2106, 2108, 2111, 2113, 2440,
+     2114, 2115, 2440, 2117, 2107, 2121, 2122, 2124, 2440, 2077,
+     2118, 2126, 2129, 2128, 2134, 2440, 2131, 2132, 2440, 2142,
+     2440, 2135, 2143, 2146, 2148, 2151, 2152, 2153, 2159, 2157,
+
+     2158, 2440, 2440, 2160, 2440, 2440, 2161, 2163, 2164, 2165,
+     2168, 2169, 2172, 2175, 2174, 2440, 2176, 2177, 2186, 2178,
+     2187, 2440, 2188, 2190, 2191, 2440, 2440, 2199, 2192, 2200,
+     2440, 2201, 2203, 2205, 2207, 2211, 2213, 2208, 2215, 2214,
+     2217, 2218, 2221, 2225, 2440, 2232, 2226, 2228, 2234, 2236,
+     2238, 2239, 2240, 2242, 2244, 2248, 2245, 2440, 2249, 2253,
+     2259, 2262, 2263, 2266, 2440, 2269, 2440, 2272, 2273, 2440,
+     2440, 2267, 2277, 2274, 2440, 2280, 2440, 2281, 2282, 2440,
+     2440, 2440, 2284, 2440, 2287, 2440, 2289, 2290, 2440, 2292,
+     2294, 2296, 2298, 2440, 2300, 2440, 2302, 2303, 2440, 2440,
+
+     2440, 2440, 2307, 2306, 2309, 2312, 2440, 2313, 2315, 2316,
+     2318, 2440, 2440, 2348, 2355, 2362, 2369, 2376,   94, 2383,
+     2390, 2397, 2404, 2411, 2418, 2425, 2432
     } ;
 
-static yyconst flex_int16_t yy_def[1223] =
+static yyconst flex_int16_t yy_def[1228] =
     {   0,
-     1208,    1, 1209, 1209, 1210, 1210, 1211, 1211, 1212, 1212,
-     1213, 1213, 1208, 1214, 1208, 1208, 1208, 1208, 1215, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1216,
-     1208, 1208, 1208, 1216, 1217, 1208, 1208, 1208, 1217, 1218,
-     1208, 1208, 1208, 1208, 1218, 1219, 1208, 1208, 1208, 1219,
-     1220, 1208, 1221, 1208, 1220, 1220, 1214, 1214, 1208, 1222,
-     1215, 1222, 1215, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1216, 1216, 1217, 1217, 1218,
-     1218, 1208, 1219, 1219, 1220, 1220, 1221, 1221, 1220, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1220, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1220, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1208, 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-
-     1214, 1214, 1214, 1220, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1220, 1214, 1214, 1214, 1214, 1208,
-     1214, 1214, 1214, 1214, 1214, 1208, 1208, 1214, 1208, 1208,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1208, 1214, 1214, 1214, 1214, 1208, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1220, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214,
-
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1208, 1220, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214,
-
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1208, 1214, 1208, 1208, 1214, 1208, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1208, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214,
-
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1208,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214,
-     1208, 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1214,
-
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1208, 1208, 1214, 1208, 1214, 1214, 1214,
-     1214, 1208, 1208, 1208, 1214, 1214, 1214, 1214, 1214, 1208,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1208, 1214,
-
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1208, 1214, 1208, 1214, 1214, 1214, 1214, 1208, 1214,
-     1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1208,
-     1214, 1208, 1208, 1214, 1208, 1208, 1214, 1208, 1214, 1208,
-     1214, 1214, 1214, 1214, 1214, 1208, 1214, 1208, 1208, 1214,
-
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1208, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1208, 1208, 1208, 1214, 1214,
-     1214, 1214, 1214, 1208, 1214, 1214, 1214, 1208, 1214, 1214,
-     1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1208, 1214, 1214, 1208, 1214, 1214,
-     1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214,
-     1208, 1214, 1214, 1208, 1214, 1208, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1208, 1208, 1214, 1208,
-
-     1208, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1208, 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214,
-     1208, 1208, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208,
-     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
-     1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214, 1208,
-     1214, 1208, 1214, 1214, 1208, 1208, 1214, 1214, 1214, 1208,
-     1214, 1208, 1214, 1214, 1208, 1208, 1208, 1214, 1208, 1214,
-     1208, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1208, 1214,
-     1208, 1214, 1214, 1208, 1208, 1208, 1208, 1214, 1214, 1214,
-
-     1214, 1208, 1214, 1214, 1214, 1214, 1208,    0, 1208, 1208,
-     1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208,
-     1208, 1208
+     1213,    1, 1214, 1214, 1215, 1215, 1216, 1216, 1217, 1217,
+     1218, 1218, 1213, 1219, 1213, 1213, 1213, 1213, 1220, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1221,
+     1213, 1213, 1213, 1221, 1222, 1213, 1213, 1213, 1222, 1223,
+     1213, 1213, 1213, 1213, 1223, 1224, 1213, 1213, 1213, 1224,
+     1225, 1213, 1226, 1213, 1225, 1225, 1219, 1219, 1213, 1227,
+     1220, 1227, 1220, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1221, 1221, 1222, 1222, 1223,
+     1223, 1213, 1224, 1224, 1225, 1225, 1226, 1226, 1225, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1225, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1225, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1213, 1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+
+     1219, 1219, 1219, 1225, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1225, 1219, 1219, 1219, 1219, 1213,
+     1219, 1219, 1219, 1219, 1219, 1213, 1213, 1219, 1213, 1213,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1213, 1219, 1219, 1219, 1219, 1213, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1225, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219,
+
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1213, 1225, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219,
+
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1213, 1219, 1213, 1213, 1219, 1213, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219,
+
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1213, 1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219,
+     1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1213,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+
+     1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1213, 1219,
+     1213, 1219, 1219, 1219, 1219, 1213, 1213, 1213, 1219, 1219,
+     1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+
+     1219, 1219, 1213, 1213, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219, 1213, 1219,
+     1219, 1219, 1219, 1213, 1219, 1219, 1213, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1213, 1213, 1219, 1213, 1213, 1219, 1213,
+     1213, 1219, 1213, 1219, 1213, 1219, 1219, 1219, 1219, 1219,
+
+     1213, 1219, 1213, 1213, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1213, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1213, 1213, 1213, 1219, 1219, 1219, 1219, 1219, 1213, 1219,
+     1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219, 1213,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213,
+     1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1213, 1219,
+     1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1213, 1219,
+     1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+
+     1219, 1213, 1213, 1219, 1213, 1213, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219,
+     1219, 1213, 1219, 1219, 1219, 1213, 1213, 1219, 1219, 1219,
+     1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219,
+     1219, 1219, 1219, 1219, 1213, 1219, 1213, 1219, 1219, 1213,
+     1213, 1219, 1219, 1219, 1213, 1219, 1213, 1219, 1219, 1213,
+     1213, 1213, 1219, 1213, 1219, 1213, 1219, 1219, 1213, 1219,
+     1219, 1219, 1219, 1213, 1219, 1213, 1219, 1219, 1213, 1213,
+
+     1213, 1213, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219,
+     1219, 1213,    0, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
+     1213, 1213, 1213, 1213, 1213, 1213, 1213
     } ;
 
-static yyconst flex_int16_t yy_nxt[2471] =
+static yyconst flex_int16_t yy_nxt[2480] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   18,   20,   21,   14,   22,   23,   24,   25,   14,
@@ -940,168 +941,169 @@ static yyconst flex_int16_t yy_nxt[2471] =
 
       539,   68,  530,   68,  549,  540,  532,  541,  533,  538,
        68,  542,  534,  548,  535,   68,  545,   68,  550,  536,
-       68,   68,  626,  546,  553,  551,   68,  555,   68,  552,
+       68,   68,  627,  546,  553,  551,   68,  555,   68,  552,
       556,   68,   68,   68,  557,   68,   68,   68,   68,   68,
        68,  547,  560,   68,  563,  554,  559,  561,  566,   68,
-       68,  558,  761,   68,   68,  562,   68,  565,   68,  568,
-      564,  569,   68,  570,  567,   68,  572,  573,  574,   68,
-       68,  571,   68,   68,  575,   68,   68,  576,  577,   68,
-       68,   68,  580,   68,   68,  578,  581,   68,  582,   68,
-      583,   68,  584,   68,   68,   68,  579,   68,  585,  588,
-
-      589,  592,   68,   68,  587,  590,   68,  586,  591,  593,
-      595,   68,  596,   68,   68,  599,   68,   68,  594,   68,
-       68,   68,   68,   68,   68,   68,  607,  597,  598,  601,
-       68,   68,   68,  608,   68,  600,   68,  604,   68,  605,
-      602,  609,   68,   68,  610,  606,  611,  603,  612,  613,
-      615,   68,   68,   68,   68,   68,   68,  614,   68,  618,
-       68,  620,  617,   68,  622,   68,   68,   68,   68,   68,
-      616,   68,   68,  628,  619,   68,   68,  621,  623,   68,
-      624,  631,  117,   68,  629,  625,  627,  633,  635,  632,
-      636,  630,   68,   68,  637,   68,  634,   68,  640,   68,
-
-      641,   68,  639,   68,   68,  638,  642,   68,  643,  646,
-      647,  644,   68,   68,   68,   68,   68,  648,   68,   68,
-      649,   68,  645,  654,   68,   68,   68,  650,  655,   68,
-       68,   68,  651,   68,  652,   68,  653,  659,  657,  656,
-      662,   68,  664,   68,  658,  665,   68,   68,  660,   68,
-      663,  661,  666,  667,   68,  668,   68,  669,   68,   68,
-       68,  670,   68,  674,  675,  672,   68,  673,   68,   68,
-      677,  676,   68,   68,   68,   68,  671,  681,   68,   68,
-       68,  678,  682,  684,   68,  680,   68,   68,   68,   68,
-      688,   68,  679,   68,   68,   68,   68,   68,   68,  913,
-
-      685,   68,  683,  693,  686,  687,  689,  694,   68,   68,
-       68,  691,   68,  700,  696,  697,  690,  692,  699,  698,
-       68,  695,   68,   68,   68,   68,   68,   68,  704,  706,
-       68,  701,  705,   68,  702,   68,  708,  712,  713,   68,
-      711,  703,   68,   68,  707,  709,   68,  714,   68,   68,
-       68,  718,  723,  715,  710,  719,   68,   68,  717,  720,
-       68,   68,   68,  716,   68,   68,   68,  722,   68,  721,
-       68,   68,   68,  731,   68,   68,   68,   68,  732,  126,
-       68,  724,  728,  725,  726,  727,  730,   68,  733,  734,
-       68,  729,  736,   68,  739,  737,  735,  738,  740,   68,
-
-      741,   68,   68,   68,   68,  742,   68,   68,  747,   68,
-       68,  745,  744,   68,  749,   68,   68,   68,   68,  743,
-       68,  752,  746,  754,   68,   68,   68,  751,   68,  757,
-      748,   68,   68,   68,   68,   68,  763,  750,  762,  753,
-      756,   68,  755,   68,   68,  758,   68,   68,  767,  765,
-      766,  759,  760,   68,  764,  770,  769,   68,  771,   68,
-       68,   68,   68,  776,   68,  772,  774,  775,   68,   68,
-       68,  768,   68,  777,   68,  783,   68,   68,   68,  773,
-       68,   68,   68,  124,   68,   68,   68,  778,  781,  782,
-      779,  789,  780,  788,  790,   68,   68,  784,  785,  787,
-
-       68,  791,  786,  792,  793,   68,  798,   68,  799,   68,
-       68,   68,   68,   68,  795,  794,  797,  796,   68,   68,
-       68,  805,   68,   68,  808,  801,   68,   68,  809,   68,
-      800,  802,  803,   68,   68,  813,   68,  804,  806,  811,
-      810,  807,   68,   68,  814,  812,   68,   68,   68,   68,
-       68,   68,  819,   68,  820,  821,  822,   68,   68,  816,
-       68,  815,  823,   68,  817,  826,   68,  818,   68,   68,
-       68,  830,   68,  825,  827,  828,   68,   68,  833,   68,
-      824,  829,  831,  834,   68,   68,  832,  835,   68,  837,
-       68,  838,   68,   68,  836,   68,   68,  122,  839,  841,
-
-      842,   68,  843,   68,  844,   68,   68,  846,   68,  845,
-      848,  840,   68,  847,  851,   68,  850,   68,  849,   68,
-      852,   68,  853,   68,   68,   68,   68,  854,  859,   68,
-       68,  861,   68,   68,   68,   68,   68,   68,   68,  864,
-       68,  855,  870,  856,  857,  863,  858,  865,   68,  867,
-      871,   68,  860,  862,   68,   68,  869,   68,   68,  874,
-      866,  868,   68,   68,  873,   68,   68,  875,   68,   68,
-      883,  872,  879,   68,  886,   68,  884,  880,  877,   68,
-      885,   68,  876,   68,  878,   68,  888,  882,   68,   68,
-      881,   68,  890,   68,  893,  887,   68,  889,   68,   68,
-
-      895,  891,   68,   68,  924,   68,  897,   68,  896,  898,
-       68,  899,   68,  900,   68,   68,   68,   68,  892,  901,
-      894,  902,   68,  905,   68,  903,   68,   68,  910,  904,
-       68,   68,  912,   68,  906,  908,  909,  914,   68,   68,
-       68,  916,  907,   68,   68,   68,   68,  911,   68,   68,
-       68,   68,   68,  927,   68,  923,  918,  919,  920,  915,
-      926,   68,   68,  921,  917,   68,   68,  929,  930,  922,
-      925,   68,   68,   68,  935,   68,  931,  932,   68,   68,
-      936,   68,   68,  933,  939,   68,   68,  928,   68,   68,
-       68,   68,   68,  934,  940,  938,   68,  937,  941,  943,
-
-      944,  942,  948,   68,  945,   68,  946,   68,  947,  949,
-      952,   68,   68,  954,   68,   68,  951,  121,   68,   68,
-       68,  953,  956,   68,  957,  959,   68,   68,  962,   68,
-      950,  960,   68,  958,  955,   68,  961,   68,  963,   68,
-      965,   68,   68,  966,  964,   68,   68,  968,   68,   68,
-       68,   68,   68,   68,   68,  975,  967,   68,  978,  987,
-       68,   68,  973,  979,   68,  970,  976,  971,  980,   68,
-      972,  969,  974,  977,  981,  982,   68,  983,   68,   68,
-      985,   68,  986,   68,  988,   68,   68,  990,   68,   68,
-       68,   68,   68,  994,  993,   68,  992,   68,  984,  996,
-
-       68,  998,   68,  999,   68,  989,   68,  991,  995,   68,
-     1001,   68,   68,   68,  997,   68, 1003,   68, 1002, 1009,
-     1005,   68,   68, 1000,   68,   68, 1007,   68, 1006, 1010,
-     1008,   68, 1013, 1004, 1014,   68, 1012,   68, 1015,   68,
-       68,   68, 1011,   68, 1019,   68, 1016,   68, 1020, 1022,
-     1017,   68, 1018, 1021,   68,   68, 1024,   68, 1023,   68,
-       68, 1029,   68,   68, 1025, 1028,   68, 1026, 1030,   68,
-       68, 1027,   68,   68, 1032, 1034,   68, 1035, 1033, 1031,
-     1036,   68, 1037,   68, 1038,   68, 1039,   68, 1040,   68,
-       68,   68, 1044,   68, 1042, 1043,   68,   68,   68, 1046,
-
-       68, 1045,   68, 1047,   68, 1041, 1048,   68,   68,   68,
-       68,   68, 1049, 1055,   68,   68, 1051,   68,   68,   68,
-     1050, 1052, 1053,   68, 1056,   68,   68,   68, 1054,   68,
-     1059, 1063, 1064, 1065,   68,   68, 1067, 1057, 1058, 1061,
-       68, 1062,   68, 1060, 1068,   68,   68, 1066,   68, 1069,
-       68, 1074,   68, 1075,   68,   68,   68,   68,   68,   68,
-     1070,   68, 1080,   68, 1071,   68, 1072, 1073,   68, 1076,
-     1081,   68, 1084,   68, 1077,  119, 1078, 1079, 1082, 1083,
-     1086,   68,   68, 1087, 1085,   68,   68,   68,   68,   68,
-     1088, 1090, 1091,   68, 1089,   68, 1092,   68, 1094,  117,
-
-     1095, 1097,   68, 1099, 1093, 1098,   68,   68,   68, 1100,
-       68,   68, 1096, 1101,   68,   68, 1102,   68, 1104, 1103,
-       68,   68, 1107,   68,   68,   68, 1105, 1111,   68, 1106,
-       68,   68, 1108,   68,   68,   68, 1114,   68,   68, 1112,
-       68, 1113,   68, 1109, 1110, 1120, 1115, 1116, 1117,   68,
-       68, 1119, 1121,   68,   68, 1118, 1122,   68, 1123, 1125,
-     1126,   68,   68,   68,   68,   68, 1127,   68, 1124, 1128,
-       68,   68,   68,   68,   68, 1130,   68, 1133,   68,   68,
-       68,   68, 1138, 1208, 1129, 1136,   68, 1132,   68, 1131,
-     1140,   68, 1141, 1134,   68, 1142,   68,   68, 1137, 1139,
-
-     1135,   68, 1146, 1143,   68, 1145,   68, 1147, 1144, 1149,
-     1148,   68,   68,   68, 1153,   68,   68,   68,   68,   68,
-     1150,   68,   68,   68, 1157, 1208, 1156,   68, 1152, 1160,
-       68, 1151, 1154,   68, 1162,   68, 1155,   68, 1161, 1165,
-       68, 1159,   68, 1163, 1166,   68,   68, 1158,   68, 1164,
-     1170,   68, 1172,   68, 1168,   68, 1167,   68, 1175,   68,
-     1171,   68, 1174, 1176,   68,   68, 1169, 1177,   68, 1183,
-     1178, 1179,   68,   68, 1173,   68, 1180, 1181,   68,   68,
-     1184,   68,   68,   68, 1182,   68,   68, 1185, 1186, 1188,
-     1189,   68,   68, 1187, 1191,   68, 1190,   68, 1194,   68,
-
-       68, 1192, 1195,   68, 1196,   68, 1197,   68,   68, 1199,
-       68,   68, 1198,   68, 1200, 1193, 1202,   68,   68,   68,
-       68, 1208, 1203, 1207,   68, 1208, 1208, 1208, 1208, 1208,
-     1208, 1201, 1208, 1204, 1205, 1208, 1208, 1208, 1206,   40,
-       40,   40,   40,   40,   40,   40,   45,   45,   45,   45,
-       45,   45,   45,   50,   50,   50,   50,   50,   50,   50,
-       56,   56,   56,   56,   56,   56,   56,   61,   61,   61,
-       61,   61,   61,   61,   71,   71, 1208,   71,   71,   71,
-       71,  116,  116, 1208, 1208, 1208,  116,  116,  118,  118,
-     1208, 1208,  118, 1208,  118,  120, 1208, 1208, 1208, 1208,
-
-     1208,  120,  123,  123, 1208, 1208, 1208,  123,  123,  125,
-     1208, 1208, 1208, 1208, 1208,  125,  127,  127, 1208,  127,
-      127,  127,  127,   72,   72, 1208,   72,   72,   72,   72,
-       13, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208,
-     1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208,
-     1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208,
-     1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208
+       68,  558,  117,   68,   68,  562,   68,  565,   68,  568,
+      564,  569,   68,  570,  567,   68,  572,  573,   68,  574,
+      580,  571,   68,  575,   68,   68,  576,   68,   68,  577,
+      578,  581,   68,  579,   68,   68,   68,  582,   68,  583,
+       68,  584,   68,  585,   68,   68,   68,  593,   68,  589,
+
+      590,  591,   68,   68,  586,  588,  594,  592,  587,  596,
+       68,   68,   68,   68,   68,  600,   68,   68,  595,   68,
+       68,   68,   68,   68,   68,  608,  599,  598,  609,  602,
+       68,  597,   68,   68,  601,   68,  603,  605,   68,  606,
+      610,   68,  607,   68,   68,   68,  604,  614,  613,  616,
+       68,   68,  611,   68,   68,  612,   68,   68,  619,  615,
+      618,  621,   68,  617,   68,   68,  623,   68,   68,   68,
+       68,   68,   68,  620,  629,   68,  622,   68,   68,  624,
+      625,  632,   68,  636,   68,  630,  626,  628,  637,  633,
+      634,  631,  638,   68,   68,   68,  641,  635,   68,  642,
+
+       68,   68,   68,  644,  640,  643,   68,  639,   68,  647,
+      648,   68,   68,   68,   68,   68,  649,  650,   68,   68,
+      645,   68,   68,  655,   68,  656,  646,  651,   68,   68,
+       68,   68,  652,  659,  653,   68,  654,  657,  661,  664,
+       68,   68,  658,  666,   68,  667,   68,  660,   68,  662,
+      669,   68,   68,  668,  663,  670,   68,  672,   68,   68,
+      665,   68,  676,   68,  671,  674,  677,   68,  675,   68,
+      679,   68,  680,   68,  678,   68,  673,   68,  683,   68,
+       68,   68,  686,   68,   68,   68,   68,   68,  682,   68,
+      690,   68,  681,   68,   68,   68,   68,   68,   68,  764,
+
+      684,   68,  689,  687,  685,  688,  691,   68,  695,   68,
+       68,  693,  696,   68,  698,  699,  692,  694,  701,  700,
+       68,  697,   68,  704,  702,   68,  703,   68,   68,   68,
+      706,   68,   68,  708,  707,   68,   68,   68,  714,  715,
+      710,  705,  713,   68,   68,   68,  716,  709,   68,   68,
+      711,   68,  720,  712,  717,  719,  721,   68,  722,   68,
+       68,   68,  718,  725,   68,   68,  724,   68,   68,   68,
+      723,   68,   68,   68,  733,   68,   68,  126,   68,  735,
+      726,  734,   68,  727,  728,  730,  729,  732,   68,   68,
+      731,  736,  739,   68,  740,   68,  742,  737,  743,  744,
+
+       68,   68,  738,   68,   68,   68,   68,  745,   68,   68,
+      750,   68,   68,  748,   68,  741,   68,  752,   68,   68,
+      746,   68,   68,  755,  749,   68,   68,  757,   68,  754,
+       68,  747,  751,   68,  760,   68,  753,   68,   68,   68,
+      756,  124,  759,  758,  765,   68,  761,  766,   68,   68,
+      762,   68,   68,   68,  769,  763,  770,  767,   68,  768,
+      773,  772,   68,  771,   68,   68,   68,  774,   68,  776,
+       68,  775,   68,  777,   68,  778,  779,   68,   68,  780,
+      781,   68,  786,   68,  782,   68,   68,   68,   68,   68,
+       68,  785,  783,   68,   68,  784,  122,  791,   68,   68,
+
+       68,  795,  806,  787,  790,  788,   68,  789,  792,  794,
+       68,  793,   68,  797,   68,  796,  802,   68,  801,  798,
+      803,  800,  799,   68,   68,   68,   68,  804,   68,  809,
+       68,   68,  812,  813,   68,   68,   68,   68,   68,  815,
+      814,   68,  805,  817,  808,  816,  810,   68,   68,  811,
+      807,   68,   68,   68,   68,   68,   68,  823,   68,  818,
+      824,  825,   68,  826,  820,   68,  819,  830,   68,  821,
+       68,  827,  822,   68,   68,   68,  834,  828,   68,   68,
+      829,   68,   68,   68,  831,  832,  833,  835,  837,  838,
+       68,  839,   68,   68,  841,   68,  836,   68,  842,   68,
+
+      843,  851,  840,   68,  846,   68,  847,   68,  848,   68,
+       68,   68,  850,  849,   68,  852,  844,   68,  855,  845,
+       68,  854,   68,   68,   68,   68,  856,   68,  857,   68,
+      863,   68,   68,  858,   68,  865,  853,   68,   68,   68,
+       68,  871,   68,   68,  859,  860,   68,  861,  867,  868,
+      862,   68,  869,   68,   68,  875,   68,  866,  864,  874,
+       68,  878,   68,  877,  870,   68,   68,  873,   68,   68,
+      879,   68,  872,  876,   68,  880,   68,   68,   68,   68,
+      884,  888,  891,   68,  882,  885,   68,   68,  881,  889,
+      883,  892,  887,  890,   68,  893,   68,   68,  886,   68,
+
+       68,  895,   68,   68,  898,  899,  121,  900,  894,   68,
+       68,  896,   68,  902,   68,  901,  903,   68,  904,   68,
+      905,   68,   68,   68,   68,   68,  906,  897,  907,   68,
+      910,   68,  908,   68,  915,   68,  909,   68,  917,   68,
+      913,  911,  914,  912,   68,   68,  918,  919,   68,   68,
+      921,   68,  916,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,  929,   68,  928,  920,  923,  924,  925,  119,
+      931,  930,  922,  926,  932,   68,   68,  927,   68,   68,
+      935,  934,   68,   68,  936,   68,  940,  937,   68,  933,
+       68,   68,   68,  941,  944,   68,   68,   68,   68,   68,
+
+       68,  938,   68,   68,   68,  939,  943,  946,  945,  942,
+      947,  948,  949,   68,   68,  952,  950,  951,   68,  953,
+      954,  957,   68,   68,  959,   68,   68,  956,   68,  955,
+       68,   68,  958,  962,  961,  964,   68,   68,   68,   68,
+      967,   68,   68,  968,  963,  960,  965,   68,  966,  969,
+       68,   68,  970,   68,  971,   68,   68,   68,  973,   68,
+       68,   68,   68,   68,   68,  980,  972,   68,  983,  997,
+       68,   68,  978,  984,   68,  975,  976,  981,  985,   68,
+      977,  974,  979,  982,  986,  987,   68,  988,   68,   68,
+      990,   68,  991,   68,   68,  993,   68,   68,   68,  992,
+
+      995,   68,   68,   68, 1001,   68,  998,   68,  989,   68,
+      999, 1003,   68, 1004,   68,   68,  994, 1002,   68, 1006,
+      996,   68,   68,   68,   68, 1000, 1008, 1007, 1010,   68,
+     1014,   68,   68, 1005,   68,   68, 1015,   68, 1012, 1011,
+     1013,   68, 1018, 1009, 1019,   68, 1017,   68, 1020,   68,
+       68,   68,   68,   68, 1016, 1024, 1021,   68, 1025,   68,
+     1022, 1027, 1023, 1026,   68,   68, 1029,   68, 1028,   68,
+       68, 1031, 1034,   68, 1030, 1033,   68,   68,   68, 1032,
+       68,  117, 1035, 1037,   68,   68, 1039,   68, 1038, 1036,
+       68, 1040, 1041,   68, 1042,   68, 1043,   68, 1044,   68,
+
+     1045, 1046,   68,   68, 1049,   68,   68, 1048,   68, 1047,
+     1051, 1050,   68, 1053,   68,   68,   68, 1052,   68,   68,
+       68,   68, 1060,   68,   68,   68,   68, 1054,   68,   68,
+     1056, 1057, 1058, 1061, 1055,   68,   68,   68,   68,   68,
+       68, 1059, 1064, 1068, 1069,   68, 1063, 1070,   68, 1066,
+       68, 1062, 1065,   68, 1067, 1071,   68, 1072, 1073,   68,
+       68,   68, 1074, 1075, 1079,   68, 1080,   68, 1076,   68,
+       68,   68,   68,   68,   68,   68, 1077, 1085, 1086,   68,
+     1078,   68, 1081, 1089,   68, 1091,   68,   68, 1082,   68,
+     1083, 1088, 1084,   68, 1090,   68, 1087,   68, 1092,   68,
+
+     1095,   68, 1094,   68, 1096,   68,   68,   68, 1114, 1093,
+     1099, 1097, 1100, 1102,   68, 1104, 1098, 1103,   68,   68,
+       68, 1101, 1105,   68, 1106,   68,   68,   68, 1110,   68,
+       68, 1107, 1109,   68,   68, 1112,   68, 1116,   68, 1108,
+       68,   68, 1111,   68,   68, 1113,   68,   68, 1118, 1115,
+     1117, 1119, 1120, 1122,   68,   68, 1124, 1121,   68, 1126,
+       68, 1125, 1127,   68,   68,   68, 1130, 1123, 1131,   68,
+       68,   68,   68,   68, 1132,   68,   68,   68, 1133, 1129,
+       68,   68, 1128, 1135,   68, 1138,   68,   68,   68,   68,
+       68, 1143, 1134, 1137, 1146, 1136, 1141, 1145,   68,   68,
+
+       68, 1139,   68,   68,   68, 1152, 1142, 1144, 1147, 1148,
+     1140,   68,   68,   68, 1149,   68, 1151,   68, 1154,   68,
+       68, 1153, 1158,   68, 1155,   68,   68,   68, 1150,   68,
+       68, 1162, 1165,   68, 1157, 1161, 1156,   68,   68, 1160,
+       68, 1159, 1166, 1167,   68, 1170,   68, 1171,   68, 1164,
+       68,   68,   68, 1175,   68, 1163,   68,   68, 1168, 1177,
+       68,   68, 1169, 1173, 1180,   68, 1179, 1213, 1176, 1172,
+     1181,   68, 1174, 1182,   68,   68, 1178, 1184,   68,   68,
+     1183,   68, 1185, 1186,   68,   68,   68, 1188, 1189,   68,
+     1187, 1190,   68,   68,   68, 1194,   68, 1191, 1193,   68,
+
+     1196,   68,   68, 1195,   68, 1199,   68, 1200,   68, 1201,
+       68, 1202,   68, 1192,   68,   68, 1204, 1197,   68,   68,
+     1207,   68, 1198, 1205,   68,   68, 1203,   68,   68, 1212,
+       68, 1213, 1213, 1208, 1213, 1213, 1213, 1213, 1206, 1213,
+     1209, 1210, 1213, 1213, 1213, 1213, 1213, 1211,   40,   40,
+       40,   40,   40,   40,   40,   45,   45,   45,   45,   45,
+       45,   45,   50,   50,   50,   50,   50,   50,   50,   56,
+       56,   56,   56,   56,   56,   56,   61,   61,   61,   61,
+       61,   61,   61,   71,   71, 1213,   71,   71,   71,   71,
+      116,  116, 1213, 1213, 1213,  116,  116,  118,  118, 1213,
+
+     1213,  118, 1213,  118,  120, 1213, 1213, 1213, 1213, 1213,
+      120,  123,  123, 1213, 1213, 1213,  123,  123,  125, 1213,
+     1213, 1213, 1213, 1213,  125,  127,  127, 1213,  127,  127,
+      127,  127,   72,   72, 1213,   72,   72,   72,   72,   13,
+     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
+     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
+     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
+     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213
     } ;
 
-static yyconst flex_int16_t yy_chk[2471] =
+static yyconst flex_int16_t yy_chk[2480] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1112,7 +1114,7 @@ static yyconst flex_int16_t yy_chk[2471] =
         9,  112,   33,    6,    7,    7,    7,    7,    9,    7,
        10,   10,   10,   44,   44,    7,    8,    8,    8,    8,
        10,    8,   21,   33,  112,   21,   21,    8,   11,   11,
-       11,   11,   11,   11, 1214,   20,   29,   20,   20,   11,
+       11,   11,   11,   11, 1219,   20,   29,   20,   20,   11,
 
        20,   29,   24,   21,   25,   20,   24,   28,   11,   12,
        12,   12,   12,   12,   12,   74,   22,   22,   74,   25,
@@ -1218,162 +1220,163 @@ static yyconst flex_int16_t yy_chk[2471] =
       470,  471,  549,  466,  472,  470,  473,  474,  474,  471,
       476,  477,  478,  479,  477,  476,  482,  480,  481,  483,
       484,  466,  480,  485,  483,  473,  479,  481,  486,  488,
-      688,  478,  688,  486,  489,  482,  490,  485,  491,  489,
-      484,  490,  492,  491,  488,  493,  493,  494,  496,  496,
-      499,  492,  494,  497,  497,  498,  500,  497,  498,  501,
-      506,  502,  501,  503,  504,  499,  502,  507,  503,  505,
-      504,  508,  505,  517,  509,  510,  500,  512,  506,  509,
-
-      510,  513,  511,  515,  508,  511,  513,  507,  512,  514,
-      516,  516,  517,  518,  514,  520,  519,  521,  515,  520,
-      522,  523,  524,  527,  528,  529,  530,  518,  519,  522,
-      533,  530,  534,  531,  536,  521,  532,  527,  531,  528,
-      523,  532,  537,  535,  533,  529,  534,  524,  535,  536,
-      538,  538,  539,  540,  541,  542,  543,  537,  544,  541,
-      545,  543,  540,  546,  545,  547,  548,  551,  550,  552,
-      539,  553,  554,  551,  542,  556,  558,  544,  546,  557,
-      547,  554,  116,  559,  552,  548,  550,  557,  559,  556,
-      560,  553,  561,  562,  560,  560,  558,  567,  563,  564,
-
-      564,  565,  562,  563,  568,  561,  565,  566,  566,  569,
-      570,  567,  571,  576,  569,  570,  572,  571,  573,  575,
-      572,  577,  568,  575,  578,  579,  582,  573,  576,  580,
-      581,  584,  573,   67,  573,  589,  573,  580,  578,  577,
-      583,  583,  585,  585,  579,  586,  586,  587,  581,  590,
-      584,  582,  587,  588,  588,  589,  591,  590,  592,  593,
-      594,  591,  604,  596,  597,  593,  598,  594,  596,  597,
-      599,  598,  600,  601,  602,  599,  592,  603,  603,  605,
-      607,  600,  604,  606,  608,  602,  611,  609,  606,  610,
-      610,  612,  601,  613,  614,  617,  618,  848,  621,  848,
-
-      607,  620,  605,  616,  608,  609,  611,  616,  616,  622,
-      619,  613,  623,  622,  618,  619,  612,  614,  621,  620,
-      624,  617,  625,  626,  628,  627,  629,  630,  626,  628,
-      631,  623,  627,  632,  624,  633,  630,  634,  635,  640,
-      633,  625,  634,  635,  629,  631,  636,  636,  638,  639,
-      643,  641,  645,  638,  632,  641,  641,  645,  640,  642,
-      642,  644,  646,  639,  647,  648,  649,  644,  650,  643,
-      651,  652,  653,  653,  654,  655,  657,  660,  654,   61,
-      656,  646,  650,  647,  648,  649,  652,  670,  655,  656,
-      659,  651,  658,  658,  661,  659,  657,  660,  663,  661,
-
-      666,  666,  668,  663,  669,  668,  671,  672,  673,  673,
-      674,  671,  670,  675,  675,  676,  677,  678,  680,  669,
-      679,  678,  672,  680,  682,  685,  683,  677,  684,  684,
-      674,  686,  687,  689,  691,  692,  690,  676,  689,  679,
-      683,  690,  682,  695,  693,  685,  696,  700,  695,  692,
-      693,  686,  687,  697,  691,  698,  697,  699,  699,  701,
-      698,  702,  703,  704,  704,  700,  702,  703,  705,  706,
-      707,  696,  708,  705,  709,  711,  710,  712,  713,  701,
-      711,  714,  717,   56,  715,  718,  716,  706,  709,  710,
-      707,  717,  708,  716,  717,  722,  723,  712,  713,  715,
-
-      721,  718,  714,  721,  722,  724,  726,  725,  727,  727,
-      728,  726,  729,  730,  724,  723,  725,  724,  731,  732,
-      733,  733,  734,  735,  737,  729,  743,  742,  738,  737,
-      728,  730,  731,  738,  739,  742,  740,  732,  734,  740,
-      739,  735,  744,  745,  743,  740,  746,  748,  749,  750,
-      751,  752,  749,  753,  750,  751,  752,  754,  755,  745,
-      757,  744,  753,  758,  746,  756,  756,  748,  762,  759,
-      761,  760,  763,  755,  757,  758,  760,  769,  763,  771,
-      754,  759,  761,  764,  764,  766,  762,  765,  765,  767,
-      767,  768,  770,  780,  766,  778,  768,   51,  769,  771,
-
-      772,  772,  773,  773,  774,  774,  775,  777,  783,  775,
-      779,  770,  777,  778,  782,  779,  781,  781,  780,  782,
-      783,  784,  783,  785,  786,  787,  789,  783,  788,  788,
-      790,  790,  793,  791,  795,  797,  792,  800,  794,  793,
-      798,  784,  800,  785,  786,  792,  787,  794,  796,  796,
-      801,  802,  789,  791,  804,  801,  798,  803,  805,  804,
-      795,  797,  806,  807,  803,  808,  809,  805,  810,  811,
-      813,  802,  809,  812,  815,  813,  814,  810,  807,  815,
-      814,  814,  806,  816,  808,  818,  817,  812,  819,  820,
-      811,  817,  819,  821,  822,  816,  825,  818,  823,  822,
-
-      824,  820,  861,  827,  861,  824,  827,  830,  825,  828,
-      828,  829,  829,  830,  831,  832,  833,  836,  821,  831,
-      823,  832,  838,  838,  839,  833,  840,  841,  845,  836,
-      846,  847,  847,  845,  838,  840,  841,  849,  849,  851,
-      852,  852,  839,  853,  854,  855,  856,  846,  857,  858,
-      860,  863,  862,  864,  864,  860,  854,  855,  856,  851,
-      863,  865,  866,  857,  853,  870,  867,  866,  867,  858,
-      862,  868,  869,  871,  872,  873,  868,  869,  874,  872,
-      873,  875,  877,  870,  876,  876,  882,  865,  880,  878,
-      879,  881,  883,  871,  877,  875,  884,  874,  878,  879,
-
-      880,  878,  884,  886,  881,  887,  882,  888,  883,  886,
-      889,  889,  890,  891,  891,  892,  888,   50,  893,  894,
-      895,  890,  893,  897,  894,  896,  896,  900,  901,  901,
-      887,  897,  903,  895,  892,  904,  900,  902,  902,  905,
-      904,  906,  907,  905,  903,  908,  909,  907,  910,  911,
-      912,  913,  915,  916,  928,  915,  906,  918,  918,  928,
-      917,  921,  912,  919,  919,  909,  916,  910,  920,  920,
-      911,  908,  913,  917,  921,  922,  922,  923,  923,  924,
-      925,  925,  926,  926,  929,  929,  930,  931,  931,  932,
-      933,  934,  935,  935,  934,  937,  933,  941,  924,  936,
-
-      936,  938,  938,  940,  940,  930,  943,  932,  935,  942,
-      942,  944,  945,  947,  937,  946,  944,  948,  943,  950,
-      946,  949,  953,  941,  950,  951,  948,  955,  947,  951,
-      949,  956,  956,  945,  957,  960,  955,  958,  958,  957,
-      961,  963,  953,  964,  963,  966,  958,  970,  964,  966,
-      960,  971,  961,  965,  965,  967,  968,  968,  967,  969,
-      972,  973,  974,  975,  969,  972,  973,  970,  974,  976,
-      977,  971,  994,  978,  976,  978,  981,  981,  977,  975,
-      984,  984,  987,  987,  989,  989,  991,  992,  992,  993,
-      995,  991,  997,  997,  994,  995, 1000, 1001, 1002, 1001,
-
-     1004, 1000, 1005, 1002, 1006,  993, 1003, 1003, 1009, 1007,
-     1008, 1012, 1004, 1010, 1010, 1011, 1006, 1014, 1013, 1015,
-     1005, 1007, 1008, 1017, 1011, 1016, 1018, 1019, 1009, 1022,
-     1014, 1018, 1019, 1020, 1020, 1023, 1023, 1012, 1013, 1016,
-     1026, 1017, 1027, 1015, 1025, 1025, 1028, 1022, 1030, 1026,
-     1029, 1031, 1031, 1032, 1033, 1034, 1035, 1039, 1032, 1040,
-     1027, 1043, 1040, 1042, 1028, 1046, 1029, 1030, 1050, 1033,
-     1041, 1041, 1045, 1045, 1034,   45, 1035, 1039, 1042, 1043,
-     1047, 1047, 1049, 1049, 1046, 1051, 1052, 1053, 1054, 1056,
-     1050, 1052, 1053, 1057, 1051, 1058, 1054, 1059, 1057,   40,
-
-     1058, 1060, 1060, 1062, 1056, 1061, 1061, 1067, 1062, 1063,
-     1063, 1066, 1059, 1064, 1064, 1069, 1066, 1070, 1069, 1067,
-     1071, 1072, 1072, 1073, 1075, 1076, 1070, 1077, 1077, 1071,
-     1078, 1080, 1073, 1079, 1083, 1087, 1080, 1082,   14, 1078,
-     1092, 1079, 1089, 1075, 1076, 1089, 1082, 1083, 1085, 1085,
-     1088, 1088, 1090, 1090, 1093, 1087, 1091, 1091, 1092, 1094,
-     1095, 1095, 1096, 1099, 1094, 1102, 1096, 1103, 1093, 1099,
-     1104, 1105, 1106, 1107, 1108, 1103, 1109, 1106, 1110, 1112,
-     1120, 1113, 1112,   13, 1102, 1109, 1116, 1105, 1115, 1104,
-     1114, 1114, 1115, 1107, 1118, 1116, 1119, 1123, 1110, 1113,
-
-     1108, 1125, 1123, 1118, 1127, 1120, 1124, 1124, 1119, 1127,
-     1125, 1128, 1129, 1130, 1131, 1131, 1132, 1133, 1134, 1135,
-     1128, 1136, 1137, 1142, 1135,    0, 1134, 1143, 1130, 1138,
-     1138, 1129, 1132, 1139, 1141, 1141, 1133, 1146, 1139, 1144,
-     1144, 1137, 1147, 1142, 1145, 1145, 1148, 1136, 1150, 1143,
-     1149, 1149, 1151, 1151, 1147, 1152, 1146, 1154, 1155, 1155,
-     1150, 1167, 1154, 1156, 1156, 1158, 1148, 1157, 1157, 1167,
-     1158, 1159, 1159, 1173, 1152, 1161, 1161, 1163, 1163, 1164,
-     1168, 1168, 1169, 1171, 1164, 1174, 1183, 1169, 1171, 1174,
-     1178, 1178, 1180, 1173, 1182, 1182, 1180, 1185, 1186, 1186,
-
-     1192, 1183, 1187, 1187, 1188, 1188, 1190, 1190, 1193, 1193,
-     1198, 1199, 1192, 1201, 1198, 1185, 1200, 1200, 1203, 1205,
-     1204,    0, 1201, 1206, 1206,    0,    0,    0,    0,    0,
-        0, 1199,    0, 1203, 1204,    0,    0,    0, 1205, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1210, 1210, 1210, 1210,
-     1210, 1210, 1210, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1212, 1212, 1212, 1212, 1212, 1212, 1212, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1215, 1215,    0, 1215, 1215, 1215,
-     1215, 1216, 1216,    0,    0,    0, 1216, 1216, 1217, 1217,
-        0,    0, 1217,    0, 1217, 1218,    0,    0,    0,    0,
-
-        0, 1218, 1219, 1219,    0,    0,    0, 1219, 1219, 1220,
-        0,    0,    0,    0,    0, 1220, 1221, 1221,    0, 1221,
-     1221, 1221, 1221, 1222, 1222,    0, 1222, 1222, 1222, 1222,
-     1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208,
-     1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208,
-     1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208,
-     1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208
+      500,  478,  116,  486,  489,  482,  490,  485,  491,  489,
+      484,  490,  492,  491,  488,  493,  493,  494,  499,  496,
+      500,  492,  494,  496,  496,  497,  497,  498,  501,  497,
+      498,  501,  502,  499,  503,  504,  506,  502,  507,  503,
+      505,  504,  508,  505,  509,  510,  512,  513,  511,  509,
+
+      510,  511,  513,  515,  506,  508,  514,  512,  507,  516,
+      516,  514,  517,  518,  519,  520,  521,  523,  515,  520,
+      522,  524,  529,  527,  528,  530,  519,  518,  531,  522,
+      530,  517,  536,  531,  521,  532,  523,  527,  533,  528,
+      532,  534,  529,  535,  537,  539,  524,  536,  535,  538,
+      538,  540,  533,  541,  542,  534,  543,  544,  541,  537,
+      540,  543,  545,  539,  546,  547,  545,  548,  551,  550,
+      552,  553,  554,  542,  551,  556,  544,  558,  559,  546,
+      547,  554,  557,  559,   67,  552,  548,  550,  560,  556,
+      557,  553,  560,  560,  561,  562,  563,  558,  564,  564,
+
+      565,  563,  566,  566,  562,  565,  567,  561,  568,  569,
+      570,  571,  574,  572,  569,  570,  571,  572,  573,  579,
+      567,  576,  577,  574,  578,  576,  568,  573,  580,  583,
+      581,  582,  573,  579,  573,  590,  573,  577,  581,  584,
+      584,  585,  578,  586,  586,  587,  587,  580,  588,  582,
+      589,  589,  592,  588,  583,  590,  591,  592,  593,  594,
+      585,  595,  597,  601,  591,  594,  598,  597,  595,  599,
+      600,  598,  601,  602,  599,  600,  593,  603,  604,  604,
+      605,  606,  607,  608,  610,  609,  612,  607,  603,  611,
+      611,  613,  602,  614,  615,  618,  619,  690,  622,  690,
+
+      605,  621,  610,  608,  606,  609,  612,  624,  617,  625,
+      620,  614,  617,  617,  619,  620,  613,  615,  622,  621,
+      623,  618,  626,  625,  623,  627,  624,  628,  629,  630,
+      627,  631,  633,  629,  628,  632,  641,  634,  635,  636,
+      631,  626,  634,  635,  636,  637,  637,  630,  640,  639,
+      632,  644,  642,  633,  639,  641,  642,  642,  643,  643,
+      645,  647,  640,  646,  648,  649,  645,  650,  646,  652,
+      644,  651,  653,  654,  654,  656,  655,   61,  657,  656,
+      647,  655,  659,  648,  649,  651,  650,  653,  658,  661,
+      652,  657,  660,  660,  661,  662,  663,  658,  665,  668,
+
+      668,  663,  659,  665,  670,  671,  672,  670,  673,  674,
+      675,  675,  676,  673,  678,  662,  677,  677,  679,  680,
+      671,  681,  682,  680,  674,  684,  687,  682,  685,  679,
+      688,  672,  676,  686,  686,  689,  678,  693,  698,  691,
+      681,   56,  685,  684,  691,  694,  687,  692,  695,  703,
+      688,  697,  692,  702,  695,  689,  697,  693,  699,  694,
+      700,  699,  708,  698,  709,  700,  701,  701,  704,  703,
+      705,  702,  710,  704,  707,  705,  706,  706,  712,  707,
+      708,  711,  713,  714,  709,  715,  716,  713,  733,  717,
+      718,  712,  710,  720,  725,  711,   51,  718,  723,  719,
+
+      730,  723,  733,  714,  717,  715,  724,  716,  719,  720,
+      726,  719,  727,  725,  731,  724,  729,  729,  728,  726,
+      730,  727,  726,  728,  732,  734,  735,  731,  736,  736,
+      737,  738,  740,  741,  742,  745,  743,  740,  741,  743,
+      742,  746,  732,  745,  735,  743,  737,  747,  748,  738,
+      734,  749,  751,  752,  757,  753,  754,  752,  755,  746,
+      753,  754,  756,  755,  748,  758,  747,  759,  759,  749,
+      760,  756,  751,  761,  762,  764,  763,  757,  765,  772,
+      758,  763,  766,  781,  760,  761,  762,  764,  766,  767,
+      767,  768,  768,  769,  770,  770,  765,  773,  771,  774,
+
+      772,  781,  769,  771,  775,  775,  776,  776,  777,  777,
+      778,  783,  780,  778,  786,  782,  773,  780,  785,  774,
+      782,  784,  784,  785,  787,  788,  786,  789,  786,  790,
+      791,  791,  792,  786,  793,  793,  783,  794,  798,  795,
+      799,  799,  796,  797,  787,  788,  800,  789,  795,  796,
+      790,  801,  797,  805,  803,  804,  806,  794,  792,  803,
+      804,  807,  807,  806,  798,  808,  809,  801,  810,  811,
+      808,  812,  800,  805,  813,  809,  814,  815,  816,  820,
+      813,  817,  819,  827,  811,  814,  817,  819,  810,  818,
+      812,  820,  816,  818,  818,  821,  822,  823,  815,  824,
+
+      821,  823,  825,  829,  826,  827,   50,  828,  822,  826,
+      831,  824,  828,  831,  834,  829,  832,  832,  833,  833,
+      834,  835,  836,  837,  840,  843,  835,  825,  836,  842,
+      842,  844,  837,  845,  849,  850,  840,  851,  851,  849,
+      844,  842,  845,  843,  852,  855,  852,  853,  853,  856,
+      856,  857,  850,  866,  858,  859,  860,  862,  861,  864,
+      865,  867,  865,  869,  864,  855,  858,  859,  860,   45,
+      867,  866,  857,  861,  868,  868,  870,  862,  871,  872,
+      871,  870,  873,  874,  872,  875,  876,  873,  877,  869,
+      879,  876,  880,  877,  881,  881,  882,  887,  883,  888,
+
+      885,  874,  884,  886,  892,  875,  880,  883,  882,  879,
+      883,  884,  885,  889,  891,  888,  886,  887,  893,  889,
+      891,  894,  894,  895,  896,  896,  897,  893,  899,  892,
+      898,  900,  895,  899,  898,  901,  901,  908,  902,  905,
+      906,  906,  907,  907,  900,  897,  902,  909,  905,  908,
+      910,  911,  909,  912,  910,  913,  914,  915,  912,  916,
+      917,  918,  920,  938,  921,  920,  911,  923,  923,  938,
+      922,  926,  917,  924,  924,  914,  915,  921,  925,  925,
+      916,  913,  918,  922,  926,  927,  927,  928,  928,  929,
+      930,  930,  931,  931,  933,  934,  934,  935,  942,  933,
+
+      936,  936,  937,  939,  941,  941,  939,  946,  929,  940,
+      940,  943,  943,  945,  945,  948,  935,  942,  947,  947,
+      937,  949,  950,  951,  952,  940,  949,  948,  951,  953,
+      955,  954,  956,  946,  958,  955,  956,  960,  953,  952,
+      954,  961,  961,  950,  962,  965,  960,  963,  963,  962,
+      966,  975,  968,  969,  958,  968,  963,  971,  969,  976,
+      965,  971,  966,  970,  970,  972,  973,  973,  972,  974,
+      977,  975,  978,  980,  974,  977,  979,  978,  981,  976,
+      982,   40,  979,  981,  983,  998,  983,  999,  982,  980,
+      986,  986,  989,  989,  992,  992,  994,  994,  996,  997,
+
+      997,  998, 1000,  996, 1002, 1002, 1005, 1000, 1006,  999,
+     1006, 1005, 1007, 1008, 1008, 1009, 1010, 1007, 1011, 1012,
+     1013, 1014, 1015, 1015, 1016, 1017, 1018, 1009, 1020, 1019,
+     1011, 1012, 1013, 1016, 1010, 1021, 1022, 1027, 1023, 1024,
+       14, 1014, 1019, 1023, 1024, 1032, 1018, 1025, 1025, 1021,
+     1033, 1017, 1020, 1031, 1022, 1027, 1028, 1028, 1030, 1030,
+     1034, 1035, 1031, 1032, 1036, 1036, 1037, 1038, 1033, 1039,
+     1040, 1037, 1044, 1048, 1045, 1051, 1034, 1045, 1046, 1046,
+     1035, 1047, 1038, 1050, 1050, 1052, 1052, 1055, 1039, 1080,
+     1040, 1048, 1044, 1056, 1051, 1057, 1047, 1054, 1054, 1058,
+
+     1057, 1061, 1056, 1059, 1058, 1062, 1064, 1063, 1080, 1055,
+     1062, 1059, 1063, 1065, 1065, 1067, 1061, 1066, 1066, 1075,
+     1067, 1064, 1068, 1068, 1069, 1069, 1071, 1072, 1075, 1074,
+     1081, 1071, 1074, 1076, 1077, 1077, 1078, 1082, 1082, 1072,
+     1084, 1083, 1076, 1087, 1088, 1078, 1085, 1092, 1084, 1081,
+     1083, 1085, 1087, 1090, 1090, 1093, 1093, 1088, 1094, 1095,
+     1095, 1094, 1096, 1096, 1097, 1098, 1099, 1092, 1100, 1100,
+     1101, 1099, 1104, 1107, 1101, 1108, 1109, 1110, 1104, 1098,
+     1111, 1112, 1097, 1108, 1113, 1111, 1115, 1114, 1117, 1118,
+     1120, 1117, 1107, 1110, 1120, 1109, 1114, 1119, 1119, 1121,
+
+     1123, 1112, 1124, 1125, 1129, 1129, 1115, 1118, 1121, 1123,
+     1113, 1128, 1130, 1132, 1124, 1133, 1128, 1134, 1132, 1135,
+     1138, 1130, 1136, 1136, 1133, 1137, 1140, 1139, 1125, 1141,
+     1142, 1140, 1143, 1143, 1135, 1139, 1134, 1144, 1147, 1138,
+     1148, 1137, 1144, 1146, 1146, 1149, 1149, 1150, 1150, 1142,
+     1151, 1152, 1153, 1154, 1154, 1141, 1155, 1157, 1147, 1156,
+     1156, 1159, 1148, 1152, 1160, 1160, 1159,   13, 1155, 1151,
+     1161, 1161, 1153, 1162, 1162, 1163, 1157, 1164, 1164, 1172,
+     1163, 1166, 1166, 1168, 1168, 1169, 1174, 1172, 1173, 1173,
+     1169, 1174, 1176, 1178, 1179, 1183, 1183, 1176, 1179, 1185,
+
+     1187, 1187, 1188, 1185, 1190, 1191, 1191, 1192, 1192, 1193,
+     1193, 1195, 1195, 1178, 1197, 1198, 1198, 1188, 1204, 1203,
+     1205, 1205, 1190, 1203, 1206, 1208, 1197, 1209, 1210, 1211,
+     1211,    0,    0, 1206,    0,    0,    0,    0, 1204,    0,
+     1208, 1209,    0,    0,    0,    0,    0, 1210, 1214, 1214,
+     1214, 1214, 1214, 1214, 1214, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1217,
+     1217, 1217, 1217, 1217, 1217, 1217, 1218, 1218, 1218, 1218,
+     1218, 1218, 1218, 1220, 1220,    0, 1220, 1220, 1220, 1220,
+     1221, 1221,    0,    0,    0, 1221, 1221, 1222, 1222,    0,
+
+        0, 1222,    0, 1222, 1223,    0,    0,    0,    0,    0,
+     1223, 1224, 1224,    0,    0,    0, 1224, 1224, 1225,    0,
+        0,    0,    0,    0, 1225, 1226, 1226,    0, 1226, 1226,
+     1226, 1226, 1227, 1227,    0, 1227, 1227, 1227, 1227, 1213,
+     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
+     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
+     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
+     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1500,7 +1503,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 1502 "<stdout>"
+#line 1505 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -1687,7 +1690,7 @@ YY_DECL
     
 #line 123 "util/configlexer.lex"
 
-#line 1689 "<stdout>"
+#line 1692 "<stdout>"
 
        if ( !(yy_init) )
                {
@@ -1746,13 +1749,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 >= 1209 )
+                               if ( yy_current_state >= 1214 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 2431 );
+               while ( yy_base[yy_current_state] != 2440 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -2037,319 +2040,324 @@ YY_RULE_SETUP
 case 52:
 YY_RULE_SETUP
 #line 178 "util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH) }
+{ YDVAR(1, VAR_PREFETCH_KEY) }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 179 "util/configlexer.lex"
-{ YDVAR(0, VAR_STUB_ZONE) }
+{ YDVAR(1, VAR_PREFETCH) }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 180 "util/configlexer.lex"
-{ YDVAR(1, VAR_NAME) }
+{ YDVAR(0, VAR_STUB_ZONE) }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 181 "util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_ADDR) }
+{ YDVAR(1, VAR_NAME) }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 182 "util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_HOST) }
+{ YDVAR(1, VAR_STUB_ADDR) }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 183 "util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_PRIME) }
+{ YDVAR(1, VAR_STUB_HOST) }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 184 "util/configlexer.lex"
-{ YDVAR(0, VAR_FORWARD_ZONE) }
+{ YDVAR(1, VAR_STUB_PRIME) }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 185 "util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_ADDR) }
+{ YDVAR(0, VAR_FORWARD_ZONE) }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 186 "util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_HOST) }
+{ YDVAR(1, VAR_FORWARD_ADDR) }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 187 "util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
+{ YDVAR(1, VAR_FORWARD_HOST) }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 188 "util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 189 "util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 190 "util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_IDENTITY) }
+{ YDVAR(2, VAR_ACCESS_CONTROL) }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 191 "util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_VERSION) }
+{ YDVAR(1, VAR_HIDE_IDENTITY) }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 192 "util/configlexer.lex"
-{ YDVAR(1, VAR_IDENTITY) }
+{ YDVAR(1, VAR_HIDE_VERSION) }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 193 "util/configlexer.lex"
-{ YDVAR(1, VAR_VERSION) }
+{ YDVAR(1, VAR_IDENTITY) }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 194 "util/configlexer.lex"
-{ YDVAR(1, VAR_MODULE_CONF) }
+{ YDVAR(1, VAR_VERSION) }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 195 "util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR) }
+{ YDVAR(1, VAR_MODULE_CONF) }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 196 "util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR) }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 197 "util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 198 "util/configlexer.lex"
-{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 199 "util/configlexer.lex"
-{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
+{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 200 "util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR) }
+{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 201 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR) }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 202 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
+{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 203 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 204 "util/configlexer.lex"
-{ YDVAR(1, VAR_BOGUS_TTL) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 205 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
+{ YDVAR(1, VAR_BOGUS_TTL) }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 206 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
+{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 207 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
+{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 208 "util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
+{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 209 "util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
+{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 210 "util/configlexer.lex"
-{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
+{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 211 "util/configlexer.lex"
-{ 
-                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
+{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 213 "util/configlexer.lex"
-{ YDVAR(1, VAR_ADD_HOLDDOWN) }
+#line 212 "util/configlexer.lex"
+{ 
+                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 214 "util/configlexer.lex"
-{ YDVAR(1, VAR_DEL_HOLDDOWN) }
+{ YDVAR(1, VAR_ADD_HOLDDOWN) }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 215 "util/configlexer.lex"
-{ YDVAR(1, VAR_KEEP_MISSING) }
+{ YDVAR(1, VAR_DEL_HOLDDOWN) }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 216 "util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSLOG) }
+{ YDVAR(1, VAR_KEEP_MISSING) }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 217 "util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TIME_ASCII) }
+{ YDVAR(1, VAR_USE_SYSLOG) }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 218 "util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 219 "util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 220 "util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 221 "util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 222 "util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 223 "util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 224 "util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 225 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 226 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 227 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 228 "util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 229 "util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 230 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 231 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 232 "util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 233 "util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
        YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 234 "util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_PYTHON) }
        YY_BREAK
 case 108:
-/* rule 108 can match eol */
 YY_RULE_SETUP
 #line 235 "util/configlexer.lex"
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+       YY_BREAK
+case 109:
+/* rule 109 can match eol */
+YY_RULE_SETUP
+#line 236 "util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 238 "util/configlexer.lex"
+#line 239 "util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 239 "util/configlexer.lex"
+#line 240 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 244 "util/configlexer.lex"
+#line 245 "util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 111:
-/* rule 111 can match eol */
+case 112:
+/* rule 112 can match eol */
 YY_RULE_SETUP
-#line 245 "util/configlexer.lex"
+#line 246 "util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 247 "util/configlexer.lex"
+#line 248 "util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2362,34 +2370,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 259 "util/configlexer.lex"
+#line 260 "util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 260 "util/configlexer.lex"
+#line 261 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 265 "util/configlexer.lex"
+#line 266 "util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 115:
-/* rule 115 can match eol */
+case 116:
+/* rule 116 can match eol */
 YY_RULE_SETUP
-#line 266 "util/configlexer.lex"
+#line 267 "util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 268 "util/configlexer.lex"
+#line 269 "util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2402,38 +2410,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 280 "util/configlexer.lex"
+#line 281 "util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 282 "util/configlexer.lex"
+#line 283 "util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 118:
-YY_RULE_SETUP
-#line 286 "util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 119:
-/* rule 119 can match eol */
 YY_RULE_SETUP
 #line 287 "util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 120:
+/* rule 120 can match eol */
 YY_RULE_SETUP
 #line 288 "util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 289 "util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 122:
+YY_RULE_SETUP
+#line 290 "util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include(yytext);
@@ -2441,27 +2449,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 294 "util/configlexer.lex"
+#line 295 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 122:
+case 123:
 YY_RULE_SETUP
-#line 298 "util/configlexer.lex"
+#line 299 "util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 123:
-/* rule 123 can match eol */
+case 124:
+/* rule 124 can match eol */
 YY_RULE_SETUP
-#line 299 "util/configlexer.lex"
+#line 300 "util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 124:
+case 125:
 YY_RULE_SETUP
-#line 301 "util/configlexer.lex"
+#line 302 "util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -2471,7 +2479,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 307 "util/configlexer.lex"
+#line 308 "util/configlexer.lex"
 {
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
        if (config_include_stack_ptr == 0) {
@@ -2482,33 +2490,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 317 "util/configlexer.lex"
+#line 318 "util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 321 "util/configlexer.lex"
+#line 322 "util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 325 "util/configlexer.lex"
+#line 326 "util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 329 "util/configlexer.lex"
+#line 330 "util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 2510 "<stdout>"
+#line 2518 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -2798,7 +2806,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 >= 1209 )
+                       if ( yy_current_state >= 1214 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2826,11 +2834,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 >= 1209 )
+               if ( yy_current_state >= 1214 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 1208);
+       yy_is_jam = (yy_current_state == 1213);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3467,7 +3475,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 329 "util/configlexer.lex"
+#line 330 "util/configlexer.lex"
 
 
 
index f3616ff8427d2f81e5e6baacae8078aa4aaf3459..bcb8343a239e845238166cac52f8760d54333811 100644 (file)
@@ -175,6 +175,7 @@ use-caps-for-id{COLON}              { YDVAR(1, VAR_USE_CAPS_FOR_ID) }
 unwanted-reply-threshold{COLON}        { YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
 private-address{COLON}         { YDVAR(1, VAR_PRIVATE_ADDRESS) }
 private-domain{COLON}          { YDVAR(1, VAR_PRIVATE_DOMAIN) }
+prefetch-key{COLON}            { YDVAR(1, VAR_PREFETCH_KEY) }
 prefetch{COLON}                        { YDVAR(1, VAR_PREFETCH) }
 stub-zone{COLON}               { YDVAR(0, VAR_STUB_ZONE) }
 name{COLON}                    { YDVAR(1, VAR_NAME) }
index 9436b3df22d0b62f87a41914300c0daf6b80a6f7..f420a9b3b0c22427e1ca6ed20f94d13a9d0ff297 100644 (file)
@@ -236,7 +236,8 @@ extern struct config_parser_state* cfg_parser;
      VAR_DEL_HOLDDOWN = 367,
      VAR_SO_RCVBUF = 368,
      VAR_EDNS_BUFFER_SIZE = 369,
-     VAR_PREFETCH = 370
+     VAR_PREFETCH = 370,
+     VAR_PREFETCH_KEY = 371
    };
 #endif
 /* Tokens.  */
@@ -353,6 +354,7 @@ extern struct config_parser_state* cfg_parser;
 #define VAR_SO_RCVBUF 368
 #define VAR_EDNS_BUFFER_SIZE 369
 #define VAR_PREFETCH 370
+#define VAR_PREFETCH_KEY 371
 
 
 
@@ -369,7 +371,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 373 "util/configparser.c"
+#line 375 "util/configparser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -381,7 +383,7 @@ typedef union YYSTYPE
 
 
 /* Line 264 of yacc.c  */
-#line 385 "util/configparser.c"
+#line 387 "util/configparser.c"
 
 #ifdef short
 # undef short
@@ -596,20 +598,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   209
+#define YYLAST   212
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  116
+#define YYNTOKENS  117
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  119
+#define YYNNTS  120
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  225
+#define YYNRULES  227
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  329
+#define YYNSTATES  332
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   370
+#define YYMAXUTOK   371
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -654,7 +656,7 @@ static const yytype_uint8 yytranslate[] =
       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
+     115,   116
 };
 
 #if YYDEBUG
@@ -672,108 +674,109 @@ static const yytype_uint16 yyprhs[] =
      144,   146,   148,   150,   152,   154,   156,   158,   160,   162,
      164,   166,   168,   170,   172,   174,   176,   178,   180,   182,
      184,   186,   188,   190,   192,   194,   196,   198,   200,   202,
-     205,   206,   208,   210,   212,   214,   216,   219,   220,   222,
-     224,   226,   229,   232,   235,   238,   241,   244,   247,   250,
-     253,   256,   259,   262,   265,   268,   271,   274,   277,   280,
-     283,   286,   289,   292,   295,   298,   301,   304,   307,   310,
-     313,   316,   319,   322,   325,   328,   331,   334,   337,   340,
-     343,   346,   349,   352,   355,   358,   361,   364,   367,   370,
-     373,   376,   379,   382,   385,   388,   391,   394,   397,   400,
-     403,   406,   409,   412,   415,   418,   421,   425,   428,   431,
-     434,   437,   440,   443,   446,   449,   452,   455,   458,   461,
-     464,   467,   470,   473,   476,   480,   483,   486,   489,   492,
-     495,   498,   501,   504,   507,   509,   512,   513,   515,   517,
-     519,   521,   523,   525,   527,   530,   533,   536,   539,   542,
-     545,   548,   550,   553,   554,   556
+     204,   207,   208,   210,   212,   214,   216,   218,   221,   222,
+     224,   226,   228,   231,   234,   237,   240,   243,   246,   249,
+     252,   255,   258,   261,   264,   267,   270,   273,   276,   279,
+     282,   285,   288,   291,   294,   297,   300,   303,   306,   309,
+     312,   315,   318,   321,   324,   327,   330,   333,   336,   339,
+     342,   345,   348,   351,   354,   357,   360,   363,   366,   369,
+     372,   375,   378,   381,   384,   387,   390,   393,   396,   399,
+     402,   405,   408,   411,   414,   417,   420,   423,   426,   430,
+     433,   436,   439,   442,   445,   448,   451,   454,   457,   460,
+     463,   466,   469,   472,   475,   478,   481,   485,   488,   491,
+     494,   497,   500,   503,   506,   509,   512,   514,   517,   518,
+     520,   522,   524,   526,   528,   530,   532,   535,   538,   541,
+     544,   547,   550,   553,   555,   558,   559,   561
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     117,     0,    -1,    -1,   117,   118,    -1,   119,   120,    -1,
-     122,   123,    -1,   125,   126,    -1,   231,   232,    -1,   221,
-     222,    -1,    11,    -1,   120,   121,    -1,    -1,   128,    -1,
-     129,    -1,   133,    -1,   136,    -1,   142,    -1,   143,    -1,
-     144,    -1,   145,    -1,   134,    -1,   149,    -1,   150,    -1,
-     151,    -1,   152,    -1,   153,    -1,   169,    -1,   170,    -1,
-     171,    -1,   173,    -1,   174,    -1,   139,    -1,   175,    -1,
-     176,    -1,   179,    -1,   177,    -1,   178,    -1,   180,    -1,
-     181,    -1,   182,    -1,   191,    -1,   162,    -1,   163,    -1,
-     164,    -1,   165,    -1,   183,    -1,   194,    -1,   158,    -1,
-     160,    -1,   195,    -1,   200,    -1,   201,    -1,   202,    -1,
-     140,    -1,   168,    -1,   208,    -1,   209,    -1,   159,    -1,
-     204,    -1,   147,    -1,   135,    -1,   154,    -1,   192,    -1,
-     198,    -1,   184,    -1,   193,    -1,   211,    -1,   212,    -1,
-     141,    -1,   130,    -1,   146,    -1,   186,    -1,   131,    -1,
-     137,    -1,   138,    -1,   155,    -1,   156,    -1,   210,    -1,
-     185,    -1,   187,    -1,   188,    -1,   132,    -1,   213,    -1,
-     172,    -1,   190,    -1,   148,    -1,   161,    -1,   196,    -1,
-     197,    -1,   199,    -1,   203,    -1,   157,    -1,   205,    -1,
-     206,    -1,   207,    -1,   166,    -1,   167,    -1,   189,    -1,
-      38,    -1,   123,   124,    -1,    -1,   214,    -1,   215,    -1,
-     216,    -1,   217,    -1,    44,    -1,   126,   127,    -1,    -1,
-     218,    -1,   219,    -1,   220,    -1,    13,    10,    -1,    12,
-      10,    -1,    76,    10,    -1,    79,    10,    -1,    96,    10,
-      -1,    14,    10,    -1,    16,    10,    -1,    67,    10,    -1,
-      15,    10,    -1,    80,    10,    -1,    81,    10,    -1,    31,
-      10,    -1,    60,    10,    -1,    75,    10,    -1,    17,    10,
-      -1,    18,    10,    -1,    19,    10,    -1,    20,    10,    -1,
-      77,    10,    -1,    66,    10,    -1,   101,    10,    -1,    21,
-      10,    -1,    22,    10,    -1,    23,    10,    -1,    24,    10,
-      -1,    25,    10,    -1,    68,    10,    -1,    82,    10,    -1,
-      83,    10,    -1,   109,    10,    -1,    54,    10,    -1,    64,
-      10,    -1,    55,    10,    -1,   102,    10,    -1,    48,    10,
-      -1,    49,    10,    -1,    50,    10,    -1,    51,    10,    -1,
-     113,    10,    -1,   114,    10,    -1,    61,    10,    -1,    26,
-      10,    -1,    27,    10,    -1,    28,    10,    -1,    98,    10,
-      -1,    29,    10,    -1,    30,    10,    -1,    32,    10,    -1,
-      33,    10,    -1,    35,    10,    -1,    36,    10,    -1,    34,
-      10,    -1,    41,    10,    -1,    42,    10,    -1,    43,    10,
-      -1,    52,    10,    -1,    71,    10,    -1,    85,    10,    -1,
-      78,    10,    -1,    86,    10,    -1,    87,    10,    -1,   115,
-      10,    -1,   100,    10,    -1,    47,    10,    -1,    69,    10,
-      -1,    72,    10,    10,    -1,    53,    10,    -1,    56,    10,
-      -1,   105,    10,    -1,   106,    10,    -1,    70,    10,    -1,
-     107,    10,    -1,    57,    10,    -1,    58,    10,    -1,    59,
-      10,    -1,   108,    10,    -1,    65,    10,    -1,   111,    10,
-      -1,   112,    10,    -1,   110,    10,    -1,    62,    10,    -1,
-      63,    10,    -1,    84,    10,    -1,    73,    10,    10,    -1,
-      74,    10,    -1,    97,    10,    -1,    37,    10,    -1,    39,
-      10,    -1,    40,    10,    -1,    99,    10,    -1,    37,    10,
-      -1,    45,    10,    -1,    46,    10,    -1,    88,    -1,   222,
-     223,    -1,    -1,   224,    -1,   226,    -1,   225,    -1,   227,
-      -1,   228,    -1,   229,    -1,   230,    -1,    89,    10,    -1,
-      91,    10,    -1,    90,    10,    -1,    92,    10,    -1,    93,
-      10,    -1,    94,    10,    -1,    95,    10,    -1,   103,    -1,
-     232,   233,    -1,    -1,   234,    -1,   104,    10,    -1
+     118,     0,    -1,    -1,   118,   119,    -1,   120,   121,    -1,
+     123,   124,    -1,   126,   127,    -1,   233,   234,    -1,   223,
+     224,    -1,    11,    -1,   121,   122,    -1,    -1,   129,    -1,
+     130,    -1,   134,    -1,   137,    -1,   143,    -1,   144,    -1,
+     145,    -1,   146,    -1,   135,    -1,   150,    -1,   151,    -1,
+     152,    -1,   153,    -1,   154,    -1,   170,    -1,   171,    -1,
+     172,    -1,   174,    -1,   175,    -1,   140,    -1,   176,    -1,
+     177,    -1,   180,    -1,   178,    -1,   179,    -1,   181,    -1,
+     182,    -1,   183,    -1,   193,    -1,   163,    -1,   164,    -1,
+     165,    -1,   166,    -1,   184,    -1,   196,    -1,   159,    -1,
+     161,    -1,   197,    -1,   202,    -1,   203,    -1,   204,    -1,
+     141,    -1,   169,    -1,   210,    -1,   211,    -1,   160,    -1,
+     206,    -1,   148,    -1,   136,    -1,   155,    -1,   194,    -1,
+     200,    -1,   185,    -1,   195,    -1,   213,    -1,   214,    -1,
+     142,    -1,   131,    -1,   147,    -1,   187,    -1,   132,    -1,
+     138,    -1,   139,    -1,   156,    -1,   157,    -1,   212,    -1,
+     186,    -1,   188,    -1,   189,    -1,   133,    -1,   215,    -1,
+     173,    -1,   192,    -1,   149,    -1,   162,    -1,   198,    -1,
+     199,    -1,   201,    -1,   205,    -1,   158,    -1,   207,    -1,
+     208,    -1,   209,    -1,   167,    -1,   168,    -1,   190,    -1,
+     191,    -1,    38,    -1,   124,   125,    -1,    -1,   216,    -1,
+     217,    -1,   218,    -1,   219,    -1,    44,    -1,   127,   128,
+      -1,    -1,   220,    -1,   221,    -1,   222,    -1,    13,    10,
+      -1,    12,    10,    -1,    76,    10,    -1,    79,    10,    -1,
+      96,    10,    -1,    14,    10,    -1,    16,    10,    -1,    67,
+      10,    -1,    15,    10,    -1,    80,    10,    -1,    81,    10,
+      -1,    31,    10,    -1,    60,    10,    -1,    75,    10,    -1,
+      17,    10,    -1,    18,    10,    -1,    19,    10,    -1,    20,
+      10,    -1,    77,    10,    -1,    66,    10,    -1,   101,    10,
+      -1,    21,    10,    -1,    22,    10,    -1,    23,    10,    -1,
+      24,    10,    -1,    25,    10,    -1,    68,    10,    -1,    82,
+      10,    -1,    83,    10,    -1,   109,    10,    -1,    54,    10,
+      -1,    64,    10,    -1,    55,    10,    -1,   102,    10,    -1,
+      48,    10,    -1,    49,    10,    -1,    50,    10,    -1,    51,
+      10,    -1,   113,    10,    -1,   114,    10,    -1,    61,    10,
+      -1,    26,    10,    -1,    27,    10,    -1,    28,    10,    -1,
+      98,    10,    -1,    29,    10,    -1,    30,    10,    -1,    32,
+      10,    -1,    33,    10,    -1,    35,    10,    -1,    36,    10,
+      -1,    34,    10,    -1,    41,    10,    -1,    42,    10,    -1,
+      43,    10,    -1,    52,    10,    -1,    71,    10,    -1,    85,
+      10,    -1,    78,    10,    -1,    86,    10,    -1,    87,    10,
+      -1,   115,    10,    -1,   116,    10,    -1,   100,    10,    -1,
+      47,    10,    -1,    69,    10,    -1,    72,    10,    10,    -1,
+      53,    10,    -1,    56,    10,    -1,   105,    10,    -1,   106,
+      10,    -1,    70,    10,    -1,   107,    10,    -1,    57,    10,
+      -1,    58,    10,    -1,    59,    10,    -1,   108,    10,    -1,
+      65,    10,    -1,   111,    10,    -1,   112,    10,    -1,   110,
+      10,    -1,    62,    10,    -1,    63,    10,    -1,    84,    10,
+      -1,    73,    10,    10,    -1,    74,    10,    -1,    97,    10,
+      -1,    37,    10,    -1,    39,    10,    -1,    40,    10,    -1,
+      99,    10,    -1,    37,    10,    -1,    45,    10,    -1,    46,
+      10,    -1,    88,    -1,   224,   225,    -1,    -1,   226,    -1,
+     228,    -1,   227,    -1,   229,    -1,   230,    -1,   231,    -1,
+     232,    -1,    89,    10,    -1,    91,    10,    -1,    90,    10,
+      -1,    92,    10,    -1,    93,    10,    -1,    94,    10,    -1,
+      95,    10,    -1,   103,    -1,   234,   235,    -1,    -1,   236,
+      -1,   104,    10,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   106,   106,   106,   107,   107,   108,   108,   109,   113,
-     118,   119,   120,   120,   120,   121,   121,   122,   122,   122,
-     123,   123,   123,   124,   124,   124,   125,   125,   126,   126,
-     127,   127,   128,   128,   129,   129,   130,   130,   131,   131,
-     132,   132,   133,   133,   133,   134,   134,   134,   135,   135,
-     135,   136,   136,   137,   137,   138,   138,   139,   139,   140,
-     140,   140,   141,   141,   142,   142,   143,   143,   143,   144,
-     144,   145,   145,   146,   146,   147,   147,   147,   148,   148,
-     149,   149,   150,   150,   151,   151,   152,   152,   153,   153,
-     153,   154,   154,   155,   155,   155,   156,   156,   158,   170,
-     171,   172,   172,   172,   172,   174,   186,   187,   188,   188,
-     188,   190,   199,   208,   219,   228,   237,   246,   259,   274,
-     283,   292,   301,   310,   319,   328,   337,   346,   355,   364,
-     373,   387,   396,   403,   410,   417,   425,   432,   439,   446,
-     453,   461,   469,   477,   484,   491,   500,   509,   516,   523,
-     531,   544,   555,   563,   576,   585,   594,   602,   615,   624,
-     633,   642,   651,   664,   671,   681,   691,   701,   711,   721,
-     731,   738,   745,   754,   763,   770,   780,   794,   801,   819,
-     832,   845,   854,   863,   872,   882,   892,   901,   908,   917,
-     926,   935,   943,   956,   964,   984,   991,  1006,  1013,  1020,
-    1027,  1037,  1044,  1051,  1058,  1063,  1064,  1065,  1065,  1065,
-    1066,  1066,  1066,  1067,  1069,  1079,  1088,  1095,  1102,  1109,
-    1116,  1123,  1128,  1129,  1130,  1132
+       0,   107,   107,   107,   108,   108,   109,   109,   110,   114,
+     119,   120,   121,   121,   121,   122,   122,   123,   123,   123,
+     124,   124,   124,   125,   125,   125,   126,   126,   127,   127,
+     128,   128,   129,   129,   130,   130,   131,   131,   132,   132,
+     133,   133,   134,   134,   134,   135,   135,   135,   136,   136,
+     136,   137,   137,   138,   138,   139,   139,   140,   140,   141,
+     141,   141,   142,   142,   143,   143,   144,   144,   144,   145,
+     145,   146,   146,   147,   147,   148,   148,   148,   149,   149,
+     150,   150,   151,   151,   152,   152,   153,   153,   154,   154,
+     154,   155,   155,   156,   156,   156,   157,   157,   157,   159,
+     171,   172,   173,   173,   173,   173,   175,   187,   188,   189,
+     189,   189,   191,   200,   209,   220,   229,   238,   247,   260,
+     275,   284,   293,   302,   311,   320,   329,   338,   347,   356,
+     365,   374,   388,   397,   404,   411,   418,   426,   433,   440,
+     447,   454,   462,   470,   478,   485,   492,   501,   510,   517,
+     524,   532,   545,   556,   564,   577,   586,   595,   603,   616,
+     625,   634,   643,   652,   665,   672,   682,   692,   702,   712,
+     722,   732,   739,   746,   755,   764,   773,   780,   790,   804,
+     811,   829,   842,   855,   864,   873,   882,   892,   902,   911,
+     918,   927,   936,   945,   953,   966,   974,   994,  1001,  1016,
+    1023,  1030,  1037,  1047,  1054,  1061,  1068,  1073,  1074,  1075,
+    1075,  1075,  1076,  1076,  1076,  1077,  1079,  1089,  1098,  1105,
+    1112,  1119,  1126,  1133,  1138,  1139,  1140,  1142
 };
 #endif
 
@@ -818,11 +821,11 @@ static const char *const yytname[] =
   "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", "$accept", "toplevelvars",
-  "toplevelvar", "serverstart", "contents_server", "content_server",
-  "stubstart", "contents_stub", "content_stub", "forwardstart",
-  "contents_forward", "content_forward", "server_num_threads",
-  "server_verbosity", "server_statistics_interval",
+  "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", "VAR_PREFETCH_KEY", "$accept",
+  "toplevelvars", "toplevelvar", "serverstart", "contents_server",
+  "content_server", "stubstart", "contents_stub", "content_stub",
+  "forwardstart", "contents_forward", "content_forward",
+  "server_num_threads", "server_verbosity", "server_statistics_interval",
   "server_statistics_cumulative", "server_extended_statistics",
   "server_port", "server_interface", "server_outgoing_interface",
   "server_outgoing_range", "server_outgoing_port_permit",
@@ -847,11 +850,12 @@ static const char *const yytname[] =
   "server_harden_glue", "server_harden_dnssec_stripped",
   "server_harden_referral_path", "server_use_caps_for_id",
   "server_private_address", "server_private_domain", "server_prefetch",
-  "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_min_ttl", "server_bogus_ttl",
+  "server_prefetch_key", "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_min_ttl", "server_bogus_ttl",
   "server_val_clean_additional", "server_val_permissive_mode",
   "server_val_log_level", "server_val_nsec3_keysize_iterations",
   "server_add_holddown", "server_del_holddown", "server_keep_missing",
@@ -882,25 +886,25 @@ static const yytype_uint16 yytoknum[] =
      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
+     365,   366,   367,   368,   369,   370,   371
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   116,   117,   117,   118,   118,   118,   118,   118,   119,
-     120,   120,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   122,   123,
-     123,   124,   124,   124,   124,   125,   126,   126,   127,   127,
-     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+       0,   117,   118,   118,   119,   119,   119,   119,   119,   120,
+     121,   121,   122,   122,   122,   122,   122,   122,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   122,   122,   123,
+     124,   124,   125,   125,   125,   125,   126,   127,   127,   128,
+     128,   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,
@@ -909,9 +913,9 @@ static const yytype_uint8 yyr1[] =
      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,   222,   223,   223,   223,
-     223,   223,   223,   223,   224,   225,   226,   227,   228,   229,
-     230,   231,   232,   232,   233,   234
+     217,   218,   219,   220,   221,   222,   223,   224,   224,   225,
+     225,   225,   225,   225,   225,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   234,   235,   236
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -926,20 +930,20 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     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,     2,     0,     1,     1,
-       1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     0,     1,     1,     1,     1,     1,     2,     0,     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,     3,     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,     3,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     1,     2,     0,     1,     1,     1,
-       1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
-       2,     1,     2,     0,     1,     2
+       2,     2,     2,     2,     2,     2,     3,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
+       1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
+       2,     2,     2,     1,     2,     0,     1,     2
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -947,8 +951,8 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     0,     1,     9,    98,   105,   204,   221,     3,    11,
-     100,   107,   206,   223,     4,     5,     6,     8,     7,     0,
+       2,     0,     1,     9,    99,   106,   206,   223,     3,    11,
+     101,   108,   208,   225,     4,     5,     6,     8,     7,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -957,46 +961,47 @@ static const yytype_uint8 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    10,    12,    13,    69,    72,
-      81,    14,    20,    60,    15,    73,    74,    31,    53,    68,
-      16,    17,    18,    19,    70,    59,    85,    21,    22,    23,
-      24,    25,    61,    75,    76,    91,    47,    57,    48,    86,
-      41,    42,    43,    44,    95,    96,    54,    26,    27,    28,
-      83,    29,    30,    32,    33,    35,    36,    34,    37,    38,
-      39,    45,    64,    78,    71,    79,    80,    97,    84,    40,
-      62,    65,    46,    49,    87,    88,    63,    89,    50,    51,
-      52,    90,    58,    92,    93,    94,    55,    56,    77,    66,
-      67,    82,     0,     0,     0,     0,    99,   101,   102,   103,
-     104,     0,     0,     0,   106,   108,   109,   110,     0,     0,
-       0,     0,     0,     0,     0,   205,   207,   209,   208,   210,
-     211,   212,   213,     0,   222,   224,   112,   111,   116,   119,
-     117,   125,   126,   127,   128,   132,   133,   134,   135,   136,
-     152,   153,   154,   156,   157,   122,   158,   159,   162,   160,
-     161,   163,   164,   165,   174,   145,   146,   147,   148,   166,
-     177,   141,   143,   178,   183,   184,   185,   123,   151,   191,
-     192,   142,   187,   130,   118,   137,   175,   181,   167,     0,
-       0,   195,   124,   113,   129,   169,   114,   120,   121,   138,
-     139,   193,   168,   170,   171,   115,   196,   155,   173,   131,
-     144,   179,   180,   182,   186,   140,   190,   188,   189,   149,
-     150,   172,   197,   198,   199,   200,   201,   202,   203,   214,
-     216,   215,   217,   218,   219,   220,   225,   176,   194
+       0,     0,     0,     0,     0,     0,    10,    12,    13,    69,
+      72,    81,    14,    20,    60,    15,    73,    74,    31,    53,
+      68,    16,    17,    18,    19,    70,    59,    85,    21,    22,
+      23,    24,    25,    61,    75,    76,    91,    47,    57,    48,
+      86,    41,    42,    43,    44,    95,    96,    54,    26,    27,
+      28,    83,    29,    30,    32,    33,    35,    36,    34,    37,
+      38,    39,    45,    64,    78,    71,    79,    80,    97,    98,
+      84,    40,    62,    65,    46,    49,    87,    88,    63,    89,
+      50,    51,    52,    90,    58,    92,    93,    94,    55,    56,
+      77,    66,    67,    82,     0,     0,     0,     0,   100,   102,
+     103,   104,   105,     0,     0,     0,   107,   109,   110,   111,
+       0,     0,     0,     0,     0,     0,     0,   207,   209,   211,
+     210,   212,   213,   214,   215,     0,   224,   226,   113,   112,
+     117,   120,   118,   126,   127,   128,   129,   133,   134,   135,
+     136,   137,   153,   154,   155,   157,   158,   123,   159,   160,
+     163,   161,   162,   164,   165,   166,   176,   146,   147,   148,
+     149,   167,   179,   142,   144,   180,   185,   186,   187,   124,
+     152,   193,   194,   143,   189,   131,   119,   138,   177,   183,
+     168,     0,     0,   197,   125,   114,   130,   170,   115,   121,
+     122,   139,   140,   195,   169,   171,   172,   116,   198,   156,
+     175,   132,   145,   181,   182,   184,   188,   141,   192,   190,
+     191,   150,   151,   173,   174,   199,   200,   201,   202,   203,
+     204,   205,   216,   218,   217,   219,   220,   221,   222,   227,
+     178,   196
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     8,     9,    14,   105,    10,    15,   196,    11,
-      16,   204,   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,   197,   198,
-     199,   200,   205,   206,   207,    12,    17,   215,   216,   217,
-     218,   219,   220,   221,   222,    13,    18,   224,   225
+      -1,     1,     8,     9,    14,   106,    10,    15,   198,    11,
+      16,   206,   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,   199,
+     200,   201,   202,   207,   208,   209,    12,    17,   217,   218,
+     219,   220,   221,   222,   223,   224,    13,    18,   226,   227
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -1005,38 +1010,39 @@ static const yytype_int16 yydefgoto[] =
 static const yytype_int16 yypact[] =
 {
      -80,    76,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   -80,   -12,    40,    46,    15,   -79,    16,
-      17,    18,    22,    23,    24,    68,    71,    72,   101,   102,
-     103,   105,   106,   107,   108,   109,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   155,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-     167,   168,   170,   171,   172,   173,   174,   175,   176,   177,
-     178,   179,   180,   181,   182,   -80,   -80,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,   -12,    40,    46,    16,   -79,    17,
+      18,    22,    23,    24,    68,    71,    72,   102,   103,   105,
+     106,   107,   108,   109,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+     127,   128,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   -80,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,   186,   187,   188,   189,   -80,   -80,
+     -80,   -80,   -80,   190,   191,   192,   -80,   -80,   -80,   -80,
+     193,   194,   195,   196,   197,   198,   199,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,   -80,   200,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   183,   184,   185,   186,   -80,   -80,   -80,   -80,
-     -80,   187,   188,   189,   -80,   -80,   -80,   -80,   190,   191,
-     192,   193,   194,   195,   196,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   197,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
+     -80,   201,   202,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   198,
-     199,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80
+     -80,   -80
 };
 
 /* YYPGOTO[NTERM-NUM].  */
@@ -1053,7 +1059,7 @@ static const yytype_int8 yypgoto[] =
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80
+     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1065,32 +1071,33 @@ static const yytype_uint16 yytable[] =
 {
       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,   223,   226,   227,   228,    44,
-      45,    46,   229,   230,   231,    47,    48,    49,    50,    51,
+      39,    40,    41,    42,    43,   225,     0,   228,   229,    44,
+      45,    46,   230,   231,   232,    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,     2,   192,   232,   193,
-     194,   233,   234,   201,    88,    89,    90,     3,    91,    92,
-      93,   202,   203,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,   208,   209,   210,   211,   212,   213,
-     214,   235,   236,   237,     4,   238,   239,   240,   241,   242,
+      82,    83,    84,    85,    86,    87,     2,   194,   233,   195,
+     196,   234,   235,   203,    88,    89,    90,     3,    91,    92,
+      93,   204,   205,    94,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   210,   211,   212,   213,   214,
+     215,   216,   236,   237,     4,   238,   239,   240,   241,   242,
        5,   243,   244,   245,   246,   247,   248,   249,   250,   251,
-     252,   253,   254,   255,   256,   257,   258,   259,   260,   195,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   197,
      261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
      271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
      281,   282,   283,   284,     6,   285,   286,   287,   288,   289,
      290,   291,   292,   293,   294,   295,   296,   297,   298,     7,
      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
+     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331
 };
 
-static const yytype_uint8 yycheck[] =
+static const yytype_int8 yycheck[] =
 {
       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,   104,    10,    10,    10,    41,
+      32,    33,    34,    35,    36,   104,    -1,    10,    10,    41,
       42,    43,    10,    10,    10,    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,
@@ -1098,8 +1105,8 @@ static const yytype_uint8 yycheck[] =
       82,    83,    84,    85,    86,    87,     0,    37,    10,    39,
       40,    10,    10,    37,    96,    97,    98,    11,   100,   101,
      102,    45,    46,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,   114,   115,    89,    90,    91,    92,    93,    94,
-      95,    10,    10,    10,    38,    10,    10,    10,    10,    10,
+     112,   113,   114,   115,   116,    89,    90,    91,    92,    93,
+      94,    95,    10,    10,    38,    10,    10,    10,    10,    10,
       44,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    99,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1108,15 +1115,16 @@ static const yytype_uint8 yycheck[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,   103,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10
+      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,    10
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,   117,     0,    11,    38,    44,    88,   103,   118,   119,
-     122,   125,   221,   231,   120,   123,   126,   222,   232,    12,
+       0,   118,     0,    11,    38,    44,    88,   103,   119,   120,
+     123,   126,   223,   233,   121,   124,   127,   224,   234,    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,    41,    42,    43,    47,    48,    49,
@@ -1125,7 +1133,7 @@ static const yytype_uint8 yystos[] =
       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
       80,    81,    82,    83,    84,    85,    86,    87,    96,    97,
       98,   100,   101,   102,   105,   106,   107,   108,   109,   110,
-     111,   112,   113,   114,   115,   121,   128,   129,   130,   131,
+     111,   112,   113,   114,   115,   116,   122,   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,
@@ -1134,10 +1142,11 @@ static const yytype_uint8 yystos[] =
      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,    37,    39,    40,    99,   124,   214,   215,   216,
-     217,    37,    45,    46,   127,   218,   219,   220,    89,    90,
-      91,    92,    93,    94,    95,   223,   224,   225,   226,   227,
-     228,   229,   230,   104,   233,   234,    10,    10,    10,    10,
+     212,   213,   214,   215,    37,    39,    40,    99,   125,   216,
+     217,   218,   219,    37,    45,    46,   128,   220,   221,   222,
+      89,    90,    91,    92,    93,    94,    95,   225,   226,   227,
+     228,   229,   230,   231,   232,   104,   235,   236,    10,    10,
+      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1147,7 +1156,7 @@ static const yytype_uint8 yystos[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10
+      10,    10
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1961,16 +1970,16 @@ yyreduce:
         case 9:
 
 /* Line 1455 of yacc.c  */
-#line 114 "util/configparser.y"
+#line 115 "util/configparser.y"
     { 
                OUTYY(("\nP(server:)\n")); 
        }
     break;
 
-  case 98:
+  case 99:
 
 /* Line 1455 of yacc.c  */
-#line 159 "util/configparser.y"
+#line 160 "util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -1983,10 +1992,10 @@ yyreduce:
        }
     break;
 
-  case 105:
+  case 106:
 
 /* Line 1455 of yacc.c  */
-#line 175 "util/configparser.y"
+#line 176 "util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -1999,10 +2008,10 @@ yyreduce:
        }
     break;
 
-  case 111:
+  case 112:
 
 /* Line 1455 of yacc.c  */
-#line 191 "util/configparser.y"
+#line 192 "util/configparser.y"
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2012,10 +2021,10 @@ yyreduce:
        }
     break;
 
-  case 112:
+  case 113:
 
 /* Line 1455 of yacc.c  */
-#line 200 "util/configparser.y"
+#line 201 "util/configparser.y"
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2025,10 +2034,10 @@ yyreduce:
        }
     break;
 
-  case 113:
+  case 114:
 
 /* Line 1455 of yacc.c  */
-#line 209 "util/configparser.y"
+#line 210 "util/configparser.y"
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0)
@@ -2040,10 +2049,10 @@ yyreduce:
        }
     break;
 
-  case 114:
+  case 115:
 
 /* Line 1455 of yacc.c  */
-#line 220 "util/configparser.y"
+#line 221 "util/configparser.y"
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2053,10 +2062,10 @@ yyreduce:
        }
     break;
 
-  case 115:
+  case 116:
 
 /* Line 1455 of yacc.c  */
-#line 229 "util/configparser.y"
+#line 230 "util/configparser.y"
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2066,10 +2075,10 @@ yyreduce:
        }
     break;
 
-  case 116:
+  case 117:
 
 /* Line 1455 of yacc.c  */
-#line 238 "util/configparser.y"
+#line 239 "util/configparser.y"
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2079,10 +2088,10 @@ yyreduce:
        }
     break;
 
-  case 117:
+  case 118:
 
 /* Line 1455 of yacc.c  */
-#line 247 "util/configparser.y"
+#line 248 "util/configparser.y"
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2096,10 +2105,10 @@ yyreduce:
        }
     break;
 
-  case 118:
+  case 119:
 
 /* Line 1455 of yacc.c  */
-#line 260 "util/configparser.y"
+#line 261 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2115,10 +2124,10 @@ yyreduce:
        }
     break;
 
-  case 119:
+  case 120:
 
 /* Line 1455 of yacc.c  */
-#line 275 "util/configparser.y"
+#line 276 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2128,10 +2137,10 @@ yyreduce:
        }
     break;
 
-  case 120:
+  case 121:
 
 /* Line 1455 of yacc.c  */
-#line 284 "util/configparser.y"
+#line 285 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, 
@@ -2141,10 +2150,10 @@ yyreduce:
        }
     break;
 
-  case 121:
+  case 122:
 
 /* Line 1455 of yacc.c  */
-#line 293 "util/configparser.y"
+#line 294 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, 
@@ -2154,10 +2163,10 @@ yyreduce:
        }
     break;
 
-  case 122:
+  case 123:
 
 /* Line 1455 of yacc.c  */
-#line 302 "util/configparser.y"
+#line 303 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2167,10 +2176,10 @@ yyreduce:
        }
     break;
 
-  case 123:
+  case 124:
 
 /* Line 1455 of yacc.c  */
-#line 311 "util/configparser.y"
+#line 312 "util/configparser.y"
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2180,10 +2189,10 @@ yyreduce:
        }
     break;
 
-  case 124:
+  case 125:
 
 /* Line 1455 of yacc.c  */
-#line 320 "util/configparser.y"
+#line 321 "util/configparser.y"
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2193,10 +2202,10 @@ yyreduce:
        }
     break;
 
-  case 125:
+  case 126:
 
 /* Line 1455 of yacc.c  */
-#line 329 "util/configparser.y"
+#line 330 "util/configparser.y"
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2206,10 +2215,10 @@ yyreduce:
        }
     break;
 
-  case 126:
+  case 127:
 
 /* Line 1455 of yacc.c  */
-#line 338 "util/configparser.y"
+#line 339 "util/configparser.y"
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2219,10 +2228,10 @@ yyreduce:
        }
     break;
 
-  case 127:
+  case 128:
 
 /* Line 1455 of yacc.c  */
-#line 347 "util/configparser.y"
+#line 348 "util/configparser.y"
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2232,10 +2241,10 @@ yyreduce:
        }
     break;
 
-  case 128:
+  case 129:
 
 /* Line 1455 of yacc.c  */
-#line 356 "util/configparser.y"
+#line 357 "util/configparser.y"
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2245,10 +2254,10 @@ yyreduce:
        }
     break;
 
-  case 129:
+  case 130:
 
 /* Line 1455 of yacc.c  */
-#line 365 "util/configparser.y"
+#line 366 "util/configparser.y"
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2258,10 +2267,10 @@ yyreduce:
        }
     break;
 
-  case 130:
+  case 131:
 
 /* Line 1455 of yacc.c  */
-#line 374 "util/configparser.y"
+#line 375 "util/configparser.y"
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2276,10 +2285,10 @@ yyreduce:
        }
     break;
 
-  case 131:
+  case 132:
 
 /* Line 1455 of yacc.c  */
-#line 388 "util/configparser.y"
+#line 389 "util/configparser.y"
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2289,10 +2298,10 @@ yyreduce:
        }
     break;
 
-  case 132:
+  case 133:
 
 /* Line 1455 of yacc.c  */
-#line 397 "util/configparser.y"
+#line 398 "util/configparser.y"
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->chrootdir);
@@ -2300,10 +2309,10 @@ yyreduce:
        }
     break;
 
-  case 133:
+  case 134:
 
 /* Line 1455 of yacc.c  */
-#line 404 "util/configparser.y"
+#line 405 "util/configparser.y"
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->username);
@@ -2311,10 +2320,10 @@ yyreduce:
        }
     break;
 
-  case 134:
+  case 135:
 
 /* Line 1455 of yacc.c  */
-#line 411 "util/configparser.y"
+#line 412 "util/configparser.y"
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->directory);
@@ -2322,10 +2331,10 @@ yyreduce:
        }
     break;
 
-  case 135:
+  case 136:
 
 /* Line 1455 of yacc.c  */
-#line 418 "util/configparser.y"
+#line 419 "util/configparser.y"
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->logfile);
@@ -2334,10 +2343,10 @@ yyreduce:
        }
     break;
 
-  case 136:
+  case 137:
 
 /* Line 1455 of yacc.c  */
-#line 426 "util/configparser.y"
+#line 427 "util/configparser.y"
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->pidfile);
@@ -2345,10 +2354,10 @@ yyreduce:
        }
     break;
 
-  case 137:
+  case 138:
 
 /* Line 1455 of yacc.c  */
-#line 433 "util/configparser.y"
+#line 434 "util/configparser.y"
     {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str)))
@@ -2356,10 +2365,10 @@ yyreduce:
        }
     break;
 
-  case 138:
+  case 139:
 
 /* Line 1455 of yacc.c  */
-#line 440 "util/configparser.y"
+#line 441 "util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
@@ -2367,10 +2376,10 @@ yyreduce:
        }
     break;
 
-  case 139:
+  case 140:
 
 /* Line 1455 of yacc.c  */
-#line 447 "util/configparser.y"
+#line 448 "util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2378,10 +2387,10 @@ yyreduce:
        }
     break;
 
-  case 140:
+  case 141:
 
 /* Line 1455 of yacc.c  */
-#line 454 "util/configparser.y"
+#line 455 "util/configparser.y"
     {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2390,10 +2399,10 @@ yyreduce:
        }
     break;
 
-  case 141:
+  case 142:
 
 /* Line 1455 of yacc.c  */
-#line 462 "util/configparser.y"
+#line 463 "util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2402,10 +2411,10 @@ yyreduce:
        }
     break;
 
-  case 142:
+  case 143:
 
 /* Line 1455 of yacc.c  */
-#line 470 "util/configparser.y"
+#line 471 "util/configparser.y"
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2414,10 +2423,10 @@ yyreduce:
        }
     break;
 
-  case 143:
+  case 144:
 
 /* Line 1455 of yacc.c  */
-#line 478 "util/configparser.y"
+#line 479 "util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2425,10 +2434,10 @@ yyreduce:
        }
     break;
 
-  case 144:
+  case 145:
 
 /* Line 1455 of yacc.c  */
-#line 485 "util/configparser.y"
+#line 486 "util/configparser.y"
     {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str)))
@@ -2436,10 +2445,10 @@ yyreduce:
        }
     break;
 
-  case 145:
+  case 146:
 
 /* Line 1455 of yacc.c  */
-#line 492 "util/configparser.y"
+#line 493 "util/configparser.y"
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2449,10 +2458,10 @@ yyreduce:
        }
     break;
 
-  case 146:
+  case 147:
 
 /* Line 1455 of yacc.c  */
-#line 501 "util/configparser.y"
+#line 502 "util/configparser.y"
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2462,10 +2471,10 @@ yyreduce:
        }
     break;
 
-  case 147:
+  case 148:
 
 /* Line 1455 of yacc.c  */
-#line 510 "util/configparser.y"
+#line 511 "util/configparser.y"
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->identity);
@@ -2473,10 +2482,10 @@ yyreduce:
        }
     break;
 
-  case 148:
+  case 149:
 
 /* Line 1455 of yacc.c  */
-#line 517 "util/configparser.y"
+#line 518 "util/configparser.y"
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->version);
@@ -2484,10 +2493,10 @@ yyreduce:
        }
     break;
 
-  case 149:
+  case 150:
 
 /* Line 1455 of yacc.c  */
-#line 524 "util/configparser.y"
+#line 525 "util/configparser.y"
     {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->socket_rcvbuf))
@@ -2496,10 +2505,10 @@ yyreduce:
        }
     break;
 
-  case 150:
+  case 151:
 
 /* Line 1455 of yacc.c  */
-#line 532 "util/configparser.y"
+#line 533 "util/configparser.y"
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2513,10 +2522,10 @@ yyreduce:
        }
     break;
 
-  case 151:
+  case 152:
 
 /* Line 1455 of yacc.c  */
-#line 545 "util/configparser.y"
+#line 546 "util/configparser.y"
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2528,10 +2537,10 @@ yyreduce:
        }
     break;
 
-  case 152:
+  case 153:
 
 /* Line 1455 of yacc.c  */
-#line 556 "util/configparser.y"
+#line 557 "util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size))
@@ -2540,10 +2549,10 @@ yyreduce:
        }
     break;
 
-  case 153:
+  case 154:
 
 /* Line 1455 of yacc.c  */
-#line 564 "util/configparser.y"
+#line 565 "util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2557,10 +2566,10 @@ yyreduce:
        }
     break;
 
-  case 154:
+  case 155:
 
 /* Line 1455 of yacc.c  */
-#line 577 "util/configparser.y"
+#line 578 "util/configparser.y"
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2570,10 +2579,10 @@ yyreduce:
        }
     break;
 
-  case 155:
+  case 156:
 
 /* Line 1455 of yacc.c  */
-#line 586 "util/configparser.y"
+#line 587 "util/configparser.y"
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2583,10 +2592,10 @@ yyreduce:
        }
     break;
 
-  case 156:
+  case 157:
 
 /* Line 1455 of yacc.c  */
-#line 595 "util/configparser.y"
+#line 596 "util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size))
@@ -2595,10 +2604,10 @@ yyreduce:
        }
     break;
 
-  case 157:
+  case 158:
 
 /* Line 1455 of yacc.c  */
-#line 603 "util/configparser.y"
+#line 604 "util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2612,10 +2621,10 @@ yyreduce:
        }
     break;
 
-  case 158:
+  case 159:
 
 /* Line 1455 of yacc.c  */
-#line 616 "util/configparser.y"
+#line 617 "util/configparser.y"
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2625,10 +2634,10 @@ yyreduce:
        }
     break;
 
-  case 159:
+  case 160:
 
 /* Line 1455 of yacc.c  */
-#line 625 "util/configparser.y"
+#line 626 "util/configparser.y"
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2638,10 +2647,10 @@ yyreduce:
        }
     break;
 
-  case 160:
+  case 161:
 
 /* Line 1455 of yacc.c  */
-#line 634 "util/configparser.y"
+#line 635 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2651,10 +2660,10 @@ yyreduce:
        }
     break;
 
-  case 161:
+  case 162:
 
 /* Line 1455 of yacc.c  */
-#line 643 "util/configparser.y"
+#line 644 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->
@@ -2664,10 +2673,10 @@ yyreduce:
        }
     break;
 
-  case 162:
+  case 163:
 
 /* Line 1455 of yacc.c  */
-#line 652 "util/configparser.y"
+#line 653 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2681,10 +2690,10 @@ yyreduce:
        }
     break;
 
-  case 163:
+  case 164:
 
 /* Line 1455 of yacc.c  */
-#line 665 "util/configparser.y"
+#line 666 "util/configparser.y"
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->target_fetch_policy);
@@ -2692,10 +2701,10 @@ yyreduce:
        }
     break;
 
-  case 164:
+  case 165:
 
 /* Line 1455 of yacc.c  */
-#line 672 "util/configparser.y"
+#line 673 "util/configparser.y"
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2706,10 +2715,10 @@ yyreduce:
        }
     break;
 
-  case 165:
+  case 166:
 
 /* Line 1455 of yacc.c  */
-#line 682 "util/configparser.y"
+#line 683 "util/configparser.y"
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2720,10 +2729,10 @@ yyreduce:
        }
     break;
 
-  case 166:
+  case 167:
 
 /* Line 1455 of yacc.c  */
-#line 692 "util/configparser.y"
+#line 693 "util/configparser.y"
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2734,10 +2743,10 @@ yyreduce:
        }
     break;
 
-  case 167:
+  case 168:
 
 /* Line 1455 of yacc.c  */
-#line 702 "util/configparser.y"
+#line 703 "util/configparser.y"
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2748,10 +2757,10 @@ yyreduce:
        }
     break;
 
-  case 168:
+  case 169:
 
 /* Line 1455 of yacc.c  */
-#line 712 "util/configparser.y"
+#line 713 "util/configparser.y"
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2762,10 +2771,10 @@ yyreduce:
        }
     break;
 
-  case 169:
+  case 170:
 
 /* Line 1455 of yacc.c  */
-#line 722 "util/configparser.y"
+#line 723 "util/configparser.y"
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2776,10 +2785,10 @@ yyreduce:
        }
     break;
 
-  case 170:
+  case 171:
 
 /* Line 1455 of yacc.c  */
-#line 732 "util/configparser.y"
+#line 733 "util/configparser.y"
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str)))
@@ -2787,10 +2796,10 @@ yyreduce:
        }
     break;
 
-  case 171:
+  case 172:
 
 /* Line 1455 of yacc.c  */
-#line 739 "util/configparser.y"
+#line 740 "util/configparser.y"
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str)))
@@ -2798,10 +2807,10 @@ yyreduce:
        }
     break;
 
-  case 172:
+  case 173:
 
 /* Line 1455 of yacc.c  */
-#line 746 "util/configparser.y"
+#line 747 "util/configparser.y"
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2811,10 +2820,23 @@ yyreduce:
        }
     break;
 
-  case 173:
+  case 174:
 
 /* Line 1455 of yacc.c  */
-#line 755 "util/configparser.y"
+#line 756 "util/configparser.y"
+    {
+               OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
+       }
+    break;
+
+  case 175:
+
+/* Line 1455 of yacc.c  */
+#line 765 "util/configparser.y"
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2824,10 +2846,10 @@ yyreduce:
        }
     break;
 
-  case 174:
+  case 176:
 
 /* Line 1455 of yacc.c  */
-#line 764 "util/configparser.y"
+#line 774 "util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str)))
@@ -2835,10 +2857,10 @@ yyreduce:
        }
     break;
 
-  case 175:
+  case 177:
 
 /* Line 1455 of yacc.c  */
-#line 771 "util/configparser.y"
+#line 781 "util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2849,10 +2871,10 @@ yyreduce:
        }
     break;
 
-  case 176:
+  case 178:
 
 /* Line 1455 of yacc.c  */
-#line 781 "util/configparser.y"
+#line 791 "util/configparser.y"
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 &&
@@ -2867,10 +2889,10 @@ yyreduce:
        }
     break;
 
-  case 177:
+  case 179:
 
 /* Line 1455 of yacc.c  */
-#line 795 "util/configparser.y"
+#line 805 "util/configparser.y"
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->module_conf);
@@ -2878,10 +2900,10 @@ yyreduce:
        }
     break;
 
-  case 178:
+  case 180:
 
 /* Line 1455 of yacc.c  */
-#line 802 "util/configparser.y"
+#line 812 "util/configparser.y"
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -2900,10 +2922,10 @@ yyreduce:
        }
     break;
 
-  case 179:
+  case 181:
 
 /* Line 1455 of yacc.c  */
-#line 820 "util/configparser.y"
+#line 830 "util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -2917,10 +2939,10 @@ yyreduce:
        }
     break;
 
-  case 180:
+  case 182:
 
 /* Line 1455 of yacc.c  */
-#line 833 "util/configparser.y"
+#line 843 "util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -2934,10 +2956,10 @@ yyreduce:
        }
     break;
 
-  case 181:
+  case 183:
 
 /* Line 1455 of yacc.c  */
-#line 846 "util/configparser.y"
+#line 856 "util/configparser.y"
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2947,10 +2969,10 @@ yyreduce:
        }
     break;
 
-  case 182:
+  case 184:
 
 /* Line 1455 of yacc.c  */
-#line 855 "util/configparser.y"
+#line 865 "util/configparser.y"
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2960,10 +2982,10 @@ yyreduce:
        }
     break;
 
-  case 183:
+  case 185:
 
 /* Line 1455 of yacc.c  */
-#line 864 "util/configparser.y"
+#line 874 "util/configparser.y"
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2973,10 +2995,10 @@ yyreduce:
        }
     break;
 
-  case 184:
+  case 186:
 
 /* Line 1455 of yacc.c  */
-#line 873 "util/configparser.y"
+#line 883 "util/configparser.y"
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2987,10 +3009,10 @@ yyreduce:
        }
     break;
 
-  case 185:
+  case 187:
 
 /* Line 1455 of yacc.c  */
-#line 883 "util/configparser.y"
+#line 893 "util/configparser.y"
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3001,10 +3023,10 @@ yyreduce:
        }
     break;
 
-  case 186:
+  case 188:
 
 /* Line 1455 of yacc.c  */
-#line 893 "util/configparser.y"
+#line 903 "util/configparser.y"
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3014,10 +3036,10 @@ yyreduce:
        }
     break;
 
-  case 187:
+  case 189:
 
 /* Line 1455 of yacc.c  */
-#line 902 "util/configparser.y"
+#line 912 "util/configparser.y"
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
@@ -3025,10 +3047,10 @@ yyreduce:
        }
     break;
 
-  case 188:
+  case 190:
 
 /* Line 1455 of yacc.c  */
-#line 909 "util/configparser.y"
+#line 919 "util/configparser.y"
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3038,10 +3060,10 @@ yyreduce:
        }
     break;
 
-  case 189:
+  case 191:
 
 /* Line 1455 of yacc.c  */
-#line 918 "util/configparser.y"
+#line 928 "util/configparser.y"
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3051,10 +3073,10 @@ yyreduce:
        }
     break;
 
-  case 190:
+  case 192:
 
 /* Line 1455 of yacc.c  */
-#line 927 "util/configparser.y"
+#line 937 "util/configparser.y"
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3064,10 +3086,10 @@ yyreduce:
        }
     break;
 
-  case 191:
+  case 193:
 
 /* Line 1455 of yacc.c  */
-#line 936 "util/configparser.y"
+#line 946 "util/configparser.y"
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size))
@@ -3076,10 +3098,10 @@ yyreduce:
        }
     break;
 
-  case 192:
+  case 194:
 
 /* Line 1455 of yacc.c  */
-#line 944 "util/configparser.y"
+#line 954 "util/configparser.y"
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3093,10 +3115,10 @@ yyreduce:
        }
     break;
 
-  case 193:
+  case 195:
 
 /* Line 1455 of yacc.c  */
-#line 957 "util/configparser.y"
+#line 967 "util/configparser.y"
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size))
@@ -3105,10 +3127,10 @@ yyreduce:
        }
     break;
 
-  case 194:
+  case 196:
 
 /* Line 1455 of yacc.c  */
-#line 965 "util/configparser.y"
+#line 975 "util/configparser.y"
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 &&
@@ -3129,10 +3151,10 @@ yyreduce:
        }
     break;
 
-  case 195:
+  case 197:
 
 /* Line 1455 of yacc.c  */
-#line 985 "util/configparser.y"
+#line 995 "util/configparser.y"
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str)))
@@ -3140,10 +3162,10 @@ yyreduce:
        }
     break;
 
-  case 196:
+  case 198:
 
 /* Line 1455 of yacc.c  */
-#line 992 "util/configparser.y"
+#line 1002 "util/configparser.y"
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -3159,10 +3181,10 @@ yyreduce:
        }
     break;
 
-  case 197:
+  case 199:
 
 /* Line 1455 of yacc.c  */
-#line 1007 "util/configparser.y"
+#line 1017 "util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->stubs->name);
@@ -3170,10 +3192,10 @@ yyreduce:
        }
     break;
 
-  case 198:
+  case 200:
 
 /* Line 1455 of yacc.c  */
-#line 1014 "util/configparser.y"
+#line 1024 "util/configparser.y"
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str)))
@@ -3181,10 +3203,10 @@ yyreduce:
        }
     break;
 
-  case 199:
+  case 201:
 
 /* Line 1455 of yacc.c  */
-#line 1021 "util/configparser.y"
+#line 1031 "util/configparser.y"
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str)))
@@ -3192,10 +3214,10 @@ yyreduce:
        }
     break;
 
-  case 200:
+  case 202:
 
 /* Line 1455 of yacc.c  */
-#line 1028 "util/configparser.y"
+#line 1038 "util/configparser.y"
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3206,10 +3228,10 @@ yyreduce:
        }
     break;
 
-  case 201:
+  case 203:
 
 /* Line 1455 of yacc.c  */
-#line 1038 "util/configparser.y"
+#line 1048 "util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->forwards->name);
@@ -3217,10 +3239,10 @@ yyreduce:
        }
     break;
 
-  case 202:
+  case 204:
 
 /* Line 1455 of yacc.c  */
-#line 1045 "util/configparser.y"
+#line 1055 "util/configparser.y"
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str)))
@@ -3228,10 +3250,10 @@ yyreduce:
        }
     break;
 
-  case 203:
+  case 205:
 
 /* Line 1455 of yacc.c  */
-#line 1052 "util/configparser.y"
+#line 1062 "util/configparser.y"
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str)))
@@ -3239,19 +3261,19 @@ yyreduce:
        }
     break;
 
-  case 204:
+  case 206:
 
 /* Line 1455 of yacc.c  */
-#line 1059 "util/configparser.y"
+#line 1069 "util/configparser.y"
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
     break;
 
-  case 214:
+  case 216:
 
 /* Line 1455 of yacc.c  */
-#line 1070 "util/configparser.y"
+#line 1080 "util/configparser.y"
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3262,10 +3284,10 @@ yyreduce:
        }
     break;
 
-  case 215:
+  case 217:
 
 /* Line 1455 of yacc.c  */
-#line 1080 "util/configparser.y"
+#line 1090 "util/configparser.y"
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3275,10 +3297,10 @@ yyreduce:
        }
     break;
 
-  case 216:
+  case 218:
 
 /* Line 1455 of yacc.c  */
-#line 1089 "util/configparser.y"
+#line 1099 "util/configparser.y"
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str)))
@@ -3286,10 +3308,10 @@ yyreduce:
        }
     break;
 
-  case 217:
+  case 219:
 
 /* Line 1455 of yacc.c  */
-#line 1096 "util/configparser.y"
+#line 1106 "util/configparser.y"
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_key_file);
@@ -3297,10 +3319,10 @@ yyreduce:
        }
     break;
 
-  case 218:
+  case 220:
 
 /* Line 1455 of yacc.c  */
-#line 1103 "util/configparser.y"
+#line 1113 "util/configparser.y"
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_cert_file);
@@ -3308,10 +3330,10 @@ yyreduce:
        }
     break;
 
-  case 219:
+  case 221:
 
 /* Line 1455 of yacc.c  */
-#line 1110 "util/configparser.y"
+#line 1120 "util/configparser.y"
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_key_file);
@@ -3319,10 +3341,10 @@ yyreduce:
        }
     break;
 
-  case 220:
+  case 222:
 
 /* Line 1455 of yacc.c  */
-#line 1117 "util/configparser.y"
+#line 1127 "util/configparser.y"
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_cert_file);
@@ -3330,19 +3352,19 @@ yyreduce:
        }
     break;
 
-  case 221:
+  case 223:
 
 /* Line 1455 of yacc.c  */
-#line 1124 "util/configparser.y"
+#line 1134 "util/configparser.y"
     { 
                OUTYY(("\nP(python:)\n")); 
        }
     break;
 
-  case 225:
+  case 227:
 
 /* Line 1455 of yacc.c  */
-#line 1133 "util/configparser.y"
+#line 1143 "util/configparser.y"
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->python_script);
@@ -3353,7 +3375,7 @@ yyreduce:
 
 
 /* Line 1455 of yacc.c  */
-#line 3357 "util/configparser.c"
+#line 3379 "util/configparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3565,7 +3587,7 @@ yyreturn:
 
 
 /* Line 1675 of yacc.c  */
-#line 1138 "util/configparser.y"
+#line 1148 "util/configparser.y"
 
 
 /* parse helper routines could be here */
index b89b7225da0de1f0f5a19bdd196543ebc746c996..fe2f2a0897425340469c34fa2560d4a39e5b121d 100644 (file)
      VAR_DEL_HOLDDOWN = 367,
      VAR_SO_RCVBUF = 368,
      VAR_EDNS_BUFFER_SIZE = 369,
-     VAR_PREFETCH = 370
+     VAR_PREFETCH = 370,
+     VAR_PREFETCH_KEY = 371
    };
 #endif
 /* Tokens.  */
 #define VAR_SO_RCVBUF 368
 #define VAR_EDNS_BUFFER_SIZE 369
 #define VAR_PREFETCH 370
+#define VAR_PREFETCH_KEY 371
 
 
 
@@ -284,7 +286,7 @@ typedef union YYSTYPE
 
 
 /* Line 1676 of yacc.c  */
-#line 288 "util/configparser.h"
+#line 290 "util/configparser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index b21dd340a09ef6f11da314902ba671fd124a7d57..9194868380161208f3759955da16500b5b39dd52 100644 (file)
@@ -101,6 +101,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_VAL_SIG_SKEW_MAX VAR_CACHE_MIN_TTL VAR_VAL_LOG_LEVEL
 %token VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING VAR_ADD_HOLDDOWN 
 %token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE VAR_PREFETCH
+%token VAR_PREFETCH_KEY
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -153,7 +154,7 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_val_sig_skew_max | server_cache_min_ttl | server_val_log_level |
        server_auto_trust_anchor_file | server_add_holddown | 
        server_del_holddown | server_keep_missing | server_so_rcvbuf |
-       server_edns_buffer_size | server_prefetch
+       server_edns_buffer_size | server_prefetch | server_prefetch_key
        ;
 stubstart: VAR_STUB_ZONE
        {
@@ -751,6 +752,15 @@ server_prefetch: VAR_PREFETCH STRING_ARG
                free($2);
        }
        ;
+server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG
+       {
+               OUTYY(("P(server_prefetch_key:%s)\n", $2));
+               if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->prefetch_key = (strcmp($2, "yes")==0);
+               free($2);
+       }
+       ;
 server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG
        {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", $2));