From: Ralph Dolmans Date: Wed, 30 Sep 2020 21:17:53 +0000 (+0200) Subject: Replace edns-client-tag with edns-client-string option X-Git-Tag: release-1.13.0rc1~7^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=eb799026ff15fa4ae2cfaf6949fbcf74b6736fbf;p=thirdparty%2Funbound.git Replace edns-client-tag with edns-client-string option --- diff --git a/daemon/daemon.c b/daemon/daemon.c index f480c94e6..a11d50a9b 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -291,7 +291,7 @@ daemon_init(void) free(daemon); return NULL; } - if(!(daemon->env->edns_tags = edns_tags_create())) { + if(!(daemon->env->edns_strings = edns_strings_create())) { auth_zones_delete(daemon->env->auth_zones); acl_list_delete(daemon->acl); tcl_list_delete(daemon->tcl); @@ -638,9 +638,9 @@ daemon_fork(struct daemon* daemon) &daemon->use_rpz)) fatal_exit("auth_zones could not be setup"); - /* Set-up EDNS tags */ - if(!edns_tags_apply_cfg(daemon->env->edns_tags, daemon->cfg)) - fatal_exit("Could not set up EDNS tags"); + /* Set-up EDNS strings */ + if(!edns_strings_apply_cfg(daemon->env->edns_strings, daemon->cfg)) + fatal_exit("Could not set up EDNS strings"); /* setup modules */ daemon_setup_modules(daemon); @@ -773,7 +773,7 @@ daemon_delete(struct daemon* daemon) rrset_cache_delete(daemon->env->rrset_cache); infra_delete(daemon->env->infra_cache); edns_known_options_delete(daemon->env); - edns_tags_delete(daemon->env->edns_tags); + edns_strings_delete(daemon->env->edns_strings); auth_zones_delete(daemon->env->auth_zones); } ub_randfree(daemon->rand); diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 95c4aaa99..8a4f5349a 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1535,15 +1535,14 @@ Set the number of servers that should be used for fast server selection. Only use the fastest specified number of servers with the fast\-server\-permil option, that turns this on or off. The default is to use the fastest 3 servers. .TP 5 -.B edns\-client\-tag: \fI -Include an edns-client-tag option in queries with destination address matching -the configured IP netblock. This configuration option can be used multiple -times. The most specific match will be used. The tag data is configured in -decimal format, from 0 to 65535. +.B edns\-client\-string: \fI +Include an EDNS0 option containing configured ascii string in queries with +destination address matching the configured IP netblock. This configuration +option can be used multiple times. The most specific match will be used. .TP 5 -.B edns\-client\-tag\-opcode: \fI -EDNS0 option code for the edns-client-tag option, from 0 to 65535. Default is -16, as assigned by IANA. +.B edns\-client\-string\-opcode: \fI +EDNS0 option code for the edns-client-string option, from 0 to 65535. Default is +65001. .SS "Remote Control Options" In the .B remote\-control: diff --git a/libunbound/context.c b/libunbound/context.c index 713259c71..cff2831a7 100644 --- a/libunbound/context.c +++ b/libunbound/context.c @@ -80,7 +80,7 @@ context_finalize(struct ub_ctx* ctx) return UB_INITFAIL; if(!auth_zones_apply_cfg(ctx->env->auth_zones, cfg, 1, &is_rpz)) return UB_INITFAIL; - if(!edns_tags_apply_cfg(ctx->env->edns_tags, cfg)) + if(!edns_strings_apply_cfg(ctx->env->edns_strings, cfg)) return UB_INITFAIL; if(!slabhash_is_size(ctx->env->msg_cache, cfg->msg_cache_size, cfg->msg_cache_slabs)) { diff --git a/libunbound/libunbound.c b/libunbound/libunbound.c index 3922eb041..c9e24ba8d 100644 --- a/libunbound/libunbound.c +++ b/libunbound/libunbound.c @@ -154,8 +154,8 @@ static struct ub_ctx* ub_ctx_create_nopipe(void) errno = ENOMEM; return NULL; } - ctx->env->edns_tags = edns_tags_create(); - if(!ctx->env->edns_tags) { + ctx->env->edns_strings = edns_strings_create(); + if(!ctx->env->edns_strings) { auth_zones_delete(ctx->env->auth_zones); edns_known_options_delete(ctx->env); config_delete(ctx->env->cfg); @@ -186,7 +186,7 @@ ub_ctx_create(void) config_delete(ctx->env->cfg); modstack_desetup(&ctx->mods, ctx->env); edns_known_options_delete(ctx->env); - edns_tags_delete(ctx->env->edns_tags); + edns_strings_delete(ctx->env->edns_strings); free(ctx->env); free(ctx); errno = e; @@ -199,7 +199,7 @@ ub_ctx_create(void) config_delete(ctx->env->cfg); modstack_desetup(&ctx->mods, ctx->env); edns_known_options_delete(ctx->env); - edns_tags_delete(ctx->env->edns_tags); + edns_strings_delete(ctx->env->edns_strings); free(ctx->env); free(ctx); errno = e; @@ -338,7 +338,7 @@ ub_ctx_delete(struct ub_ctx* ctx) infra_delete(ctx->env->infra_cache); config_delete(ctx->env->cfg); edns_known_options_delete(ctx->env); - edns_tags_delete(ctx->env->edns_tags); + edns_strings_delete(ctx->env->edns_strings); auth_zones_delete(ctx->env->auth_zones); free(ctx->env); } diff --git a/services/outside_network.c b/services/outside_network.c index 41a1d83f1..a682739cb 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -2097,18 +2097,18 @@ outnet_serviced_query(struct outside_network* outnet, { struct serviced_query* sq; struct service_callback* cb; - struct edns_tag_addr* client_tag_addr; + struct edns_string_addr* client_string_addr; if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, zone, zonelen, qstate, qstate->region)) return NULL; - if((client_tag_addr = edns_tag_addr_lookup(&env->edns_tags->client_tags, - addr, addrlen))) { - uint16_t client_tag = htons(client_tag_addr->tag_data); + if((client_string_addr = edns_string_addr_lookup( + &env->edns_strings->client_strings, addr, addrlen))) { edns_opt_list_append(&qstate->edns_opts_back_out, - env->edns_tags->client_tag_opcode, 2, - (uint8_t*)&client_tag, qstate->region); + env->edns_strings->client_string_opcode, + client_string_addr->string_len, + client_string_addr->string, qstate->region); } serviced_gen_query(buff, qinfo->qname, qinfo->qname_len, qinfo->qtype, diff --git a/testcode/fake_event.c b/testcode/fake_event.c index d8df76492..558c592a7 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1213,7 +1213,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, sldns_buffer_flip(pend->buffer); if(1) { struct edns_data edns; - struct edns_tag_addr* client_tag_addr; + struct edns_string_addr* client_string_addr; if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, zone, zonelen, qstate, qstate->region)) { free(pend); @@ -1227,13 +1227,13 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, edns.bits = 0; if(dnssec) edns.bits = EDNS_DO; - if((client_tag_addr = edns_tag_addr_lookup( - &env->edns_tags->client_tags, + if((client_string_addr = edns_string_addr_lookup( + &env->edns_strings->client_strings, addr, addrlen))) { - uint16_t client_tag = htons(client_tag_addr->tag_data); edns_opt_list_append(&qstate->edns_opts_back_out, - env->edns_tags->client_tag_opcode, 2, - (uint8_t*)&client_tag, qstate->region); + env->edns_strings->client_string_opcode, + client_string_addr->string_len, + client_string_addr->string, qstate->region); } edns.opt_list = qstate->edns_opts_back_out; attach_edns_record(pend->buffer, &edns); diff --git a/testdata/edns_client_tag.rpl b/testdata/edns_client_string.rpl similarity index 72% rename from testdata/edns_client_tag.rpl rename to testdata/edns_client_string.rpl index 767652c26..1822f7898 100644 --- a/testdata/edns_client_tag.rpl +++ b/testdata/edns_client_string.rpl @@ -1,14 +1,14 @@ ; config options server: - edns-client-tag: 10.0.0.0/24 1234 - edns-client-tag: 10.0.0.10/32 5678 + edns-client-string: 10.0.0.0/24 "abc d" + edns-client-string: 10.0.0.10/32 "123AbC!" stub-zone: - name: "tag1234." + name: "edns-string-abc." stub-addr: 10.0.0.1 stub-zone: - name: "tag5678." + name: "edns-string-123." stub-addr: 10.0.0.10 stub-zone: @@ -17,7 +17,7 @@ stub-zone: CONFIG_END -SCENARIO_BEGIN Test EDNS client tag option +SCENARIO_BEGIN Test EDNS string tag option RANGE_BEGIN 0 1000 ADDRESS 10.0.0.1 @@ -26,9 +26,9 @@ MATCH opcode qtype qname ADJUST copy_id REPLY QR NOERROR SECTION QUESTION -tag1234. IN A +edns-string-abc. IN A SECTION ANSWER -tag1234. IN A 10.20.30.40 +edns-string-abc. IN A 10.20.30.40 SECTION ADDITIONAL ENTRY_END RANGE_END @@ -40,9 +40,9 @@ MATCH opcode qtype qname ADJUST copy_id REPLY QR NOERROR SECTION QUESTION -tag5678. IN A +edns-string-123. IN A SECTION ANSWER -tag5678. IN A 10.20.30.40 +edns-string-123. IN A 10.20.30.40 SECTION ADDITIONAL ENTRY_END RANGE_END @@ -65,19 +65,19 @@ STEP 10 QUERY ENTRY_BEGIN REPLY RD SECTION QUESTION -tag1234. IN A +edns-string-abc. IN A ENTRY_END STEP 20 CHECK_OUT_QUERY ENTRY_BEGIN MATCH qname qtype opcode ednsdata SECTION QUESTION -tag1234. IN A +edns-string-abc. IN A SECTION ADDITIONAL HEX_EDNSDATA_BEGIN - 00 10 ; Opcode 16 - 00 02 ; Length 2 - 04 d2 ; 1234 + fd e9 ; Opcode 65001 + 00 05 ; Length 5 + 61 62 63 20 64 ; "abc d" HEX_EDNSDATA_END ENTRY_END @@ -86,28 +86,29 @@ ENTRY_BEGIN MATCH all REPLY QR RD RA NOERROR SECTION QUESTION -tag1234. IN A +edns-string-abc. IN A SECTION ANSWER -tag1234. IN A 10.20.30.40 +edns-string-abc. IN A 10.20.30.40 ENTRY_END STEP 110 QUERY ENTRY_BEGIN REPLY RD SECTION QUESTION -tag5678. IN A +edns-string-123. IN A ENTRY_END STEP 120 CHECK_OUT_QUERY ENTRY_BEGIN MATCH qname qtype opcode ednsdata SECTION QUESTION -tag5678. IN A +edns-string-123. IN A SECTION ADDITIONAL HEX_EDNSDATA_BEGIN - 00 10 ; Opcode 16 - 00 02 ; Length 2 - 16 2e ; 5678 + fd e9 ; Opcode 65001 + 00 07 ; Length 7 + 31 32 33 41 62 ; "123Ab" + 43 21 ; "C!" HEX_EDNSDATA_END ENTRY_END @@ -116,9 +117,9 @@ ENTRY_BEGIN MATCH all REPLY QR RD RA NOERROR SECTION QUESTION -tag5678. IN A +edns-string-123. IN A SECTION ANSWER -tag5678. IN A 10.20.30.40 +edns-string-123. IN A 10.20.30.40 ENTRY_END STEP 210 QUERY diff --git a/testdata/edns_client_string_opcode.rpl b/testdata/edns_client_string_opcode.rpl new file mode 100644 index 000000000..3bd6dda4e --- /dev/null +++ b/testdata/edns_client_string_opcode.rpl @@ -0,0 +1,153 @@ +; config options +server: + edns-client-string: 10.0.0.0/24 "abc d" + edns-client-string: 10.0.0.10/32 "123AbC!" + edns-client-string-opcode: 65432 + +stub-zone: + name: "edns-string-abc." + stub-addr: 10.0.0.1 + +stub-zone: + name: "edns-string-123." + stub-addr: 10.0.0.10 + +stub-zone: + name: "notag." + stub-addr: 10.10.0.1 + +CONFIG_END + +SCENARIO_BEGIN Test EDNS string tag option + +RANGE_BEGIN 0 1000 + ADDRESS 10.0.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +edns-string-abc. IN A +SECTION ANSWER +edns-string-abc. IN A 10.20.30.40 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +RANGE_BEGIN 0 1000 + ADDRESS 10.0.0.10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +edns-string-123. IN A +SECTION ANSWER +edns-string-123. IN A 10.20.30.40 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +RANGE_BEGIN 0 1000 + ADDRESS 10.10.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +notag. IN A +SECTION ANSWER +notag. IN A 10.20.30.40 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +edns-string-abc. IN A +ENTRY_END + +STEP 20 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +edns-string-abc. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ff 98 ; Opcode 65432 + 00 05 ; Length 5 + 61 62 63 20 64 ; "abc d" + HEX_EDNSDATA_END +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +edns-string-abc. IN A +SECTION ANSWER +edns-string-abc. IN A 10.20.30.40 +ENTRY_END + +STEP 110 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +edns-string-123. IN A +ENTRY_END + +STEP 120 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +edns-string-123. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ff 98 ; Opcode 65432 + 00 07 ; Length 7 + 31 32 33 41 62 ; "123Ab" + 43 21 ; "C!" + HEX_EDNSDATA_END +ENTRY_END + +STEP 130 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +edns-string-123. IN A +SECTION ANSWER +edns-string-123. IN A 10.20.30.40 +ENTRY_END + +STEP 210 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +notag. IN A +ENTRY_END + +STEP 220 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +notag. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + HEX_EDNSDATA_END +ENTRY_END + +STEP 230 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +notag. IN A +SECTION ANSWER +notag. IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END diff --git a/util/config_file.c b/util/config_file.c index b789c3359..ca8a7060f 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -321,8 +321,8 @@ config_create(void) cfg->qname_minimisation_strict = 0; cfg->shm_enable = 0; cfg->shm_key = 11777; - cfg->edns_client_tags = NULL; - cfg->edns_client_tag_opcode = LDNS_EDNS_CLIENT_TAG; + cfg->edns_client_strings = NULL; + cfg->edns_client_string_opcode = 65001; cfg->dnscrypt = 0; cfg->dnscrypt_port = 0; cfg->dnscrypt_provider = NULL; @@ -1150,7 +1150,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LS3(opt, "access-control-tag-action", acl_tag_actions) else O_LS3(opt, "access-control-tag-data", acl_tag_datas) else O_LS2(opt, "access-control-view", acl_view) - else O_LS2(opt, "edns-client-tags", edns_client_tags) + else O_LS2(opt, "edns-client-strings", edns_client_strings) #ifdef USE_IPSECMOD else O_YNO(opt, "ipsecmod-enabled", ipsecmod_enabled) else O_YNO(opt, "ipsecmod-ignore-bogus", ipsecmod_ignore_bogus) @@ -1519,7 +1519,7 @@ config_delete(struct config_file* cfg) config_deldblstrlist(cfg->ratelimit_below_domain); config_delstrlist(cfg->python_script); config_delstrlist(cfg->dynlib_file); - config_deldblstrlist(cfg->edns_client_tags); + config_deldblstrlist(cfg->edns_client_strings); #ifdef USE_IPSECMOD free(cfg->ipsecmod_hook); config_delstrlist(cfg->ipsecmod_whitelist); diff --git a/util/config_file.h b/util/config_file.h index 7750eaa0e..401d9d70f 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -562,10 +562,10 @@ struct config_file { /** SHM data - key for the shm */ int shm_key; - /** list of EDNS client tag entries, linked list */ - struct config_str2list* edns_client_tags; - /** EDNS opcode to use for EDNS client tags */ - uint16_t edns_client_tag_opcode; + /** list of EDNS client string entries, linked list */ + struct config_str2list* edns_client_strings; + /** EDNS opcode to use for EDNS client strings */ + uint16_t edns_client_string_opcode; /** DNSCrypt */ /** true to enable dnscrypt */ diff --git a/util/configlexer.c b/util/configlexer.c index a00f50b74..8db2f8b20 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -363,7 +363,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3253] = +static const flex_int16_t yy_accept[3256] = { 0, 1, 1, 308, 308, 312, 312, 316, 316, 320, 320, 1, 1, 324, 324, 328, 328, 335, 332, 1, 306, @@ -632,46 +632,46 @@ static const flex_int16_t yy_accept[3253] = 332, 332, 332, 332, 332, 332, 332, 332, 158, 332, 275, 332, 332, 332, 332, 332, 247, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 220, 332, - 332, 304, 332, 332, 332, 267, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 291, 332, 182, 332, 332, 332, - 332, 332, 332, 332, 71, 73, 332, 332, 332, 332, - 332, 332, 332, 100, 332, 332, 332, 332, 259, 332, - 332, 332, 332, 271, 332, 332, 332, 332, 332, 332, - - 332, 332, 332, 332, 332, 212, 34, 28, 30, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 35, 332, - 29, 31, 332, 332, 332, 332, 332, 332, 332, 332, - 96, 332, 332, 332, 332, 332, 332, 331, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 214, - 211, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 70, - 332, 332, 332, 135, 332, 118, 332, 332, 332, 332, - 332, 332, 332, 332, 153, 47, 332, 332, 323, 13, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 285, - - 332, 288, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 12, 332, 332, 22, 332, 332, 332, 265, - 332, 332, 332, 332, 273, 332, 332, 332, 74, 332, - 222, 332, 332, 332, 332, 213, 332, 332, 69, 332, - 332, 332, 332, 23, 332, 43, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 167, 166, - 323, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 215, 209, 332, 227, 332, 332, 277, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - - 332, 332, 332, 332, 332, 332, 332, 332, 81, 332, - 332, 332, 260, 332, 332, 332, 332, 195, 332, 332, - 332, 332, 221, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 295, 296, 164, 332, 332, 75, 332, 332, - 332, 332, 174, 332, 332, 112, 113, 332, 332, 332, - 332, 159, 332, 161, 332, 200, 332, 332, 332, 332, - 165, 332, 332, 230, 332, 332, 332, 332, 332, 332, - 332, 142, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 238, 332, 332, 332, 332, 332, - 332, 332, 332, 24, 332, 270, 332, 332, 332, 332, + 332, 332, 332, 332, 267, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 291, 332, 182, 332, 332, 332, 332, + 332, 332, 332, 71, 73, 332, 332, 332, 332, 332, + 332, 332, 100, 332, 332, 332, 332, 259, 332, 332, + 332, 332, 271, 332, 332, 332, 332, 332, 332, 332, + + 332, 332, 332, 332, 212, 34, 28, 30, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 35, 332, 29, + 31, 332, 332, 332, 332, 332, 332, 332, 332, 96, + 332, 332, 332, 332, 332, 332, 331, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 214, 211, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 70, 332, + 332, 332, 135, 332, 118, 332, 332, 332, 332, 332, + 332, 332, 332, 153, 47, 332, 332, 323, 13, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 285, 332, + + 288, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 12, 332, 332, 22, 332, 332, 332, 265, 332, + 332, 332, 332, 273, 332, 332, 332, 74, 332, 222, + 332, 332, 332, 332, 213, 332, 332, 69, 332, 332, + 332, 332, 23, 332, 43, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 167, 166, 323, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 215, + 209, 332, 227, 332, 332, 277, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + + 332, 332, 332, 332, 332, 332, 332, 81, 332, 332, + 332, 260, 332, 332, 332, 332, 195, 332, 332, 332, + 332, 221, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 295, 296, 164, 332, 332, 75, 332, 332, 332, + 332, 174, 332, 332, 112, 113, 332, 332, 332, 332, + 159, 332, 161, 332, 200, 332, 332, 332, 332, 165, + 332, 332, 230, 332, 332, 332, 332, 332, 332, 332, + 142, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 238, 332, 332, 332, 332, 332, 332, + 332, 304, 332, 24, 332, 270, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 201, 332, 332, 258, 332, 289, 332, 194, 332, 332, 332, @@ -700,29 +700,29 @@ static const flex_int16_t yy_accept[3253] = 332, 332, 188, 332, 332, 332, 332, 332, 203, 332, 332, 332, 332, 332, 332, 332, 332, 160, 77, 332, 332, 332, 332, 332, 279, 332, 332, 332, 332, 332, - 332, 332, 242, 332, 332, 241, 139, 305, 332, 92, + 332, 332, 242, 332, 332, 241, 139, 332, 332, 92, 48, 332, 145, 146, 149, 150, 147, 148, 85, 332, 263, 332, 332, 332, 332, 163, 332, 332, 332, 332, 332, 232, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 176, 175, 41, 332, 332, 332, 332, 332, 332, 332, + 332, 176, 175, 41, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 99, 332, - 231, 332, 255, 283, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 49, 5, 332, 332, - 223, 332, 332, 284, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 243, 25, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 244, 332, 332, - 332, 143, 332, 332, 332, 332, 332, 332, 332, 332, - 177, 332, 184, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 99, 332, 231, 332, 255, 283, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 305, 332, 49, + 5, 332, 332, 223, 332, 332, 284, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 243, 25, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 244, 332, 332, 332, 143, 332, 332, 332, 332, 332, + 332, 332, 332, 177, 332, 184, 332, 332, 332, 332, - 332, 332, 280, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 280, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 302, 332, 332, 251, 332, 332, 332, 332, 332, 281, - 332, 332, 332, 332, 332, 332, 282, 332, 332, 332, - 249, 332, 252, 253, 332, 332, 332, 332, 332, 250, - 254, 0 + 332, 332, 332, 302, 332, 332, 251, 332, 332, 332, + 332, 332, 281, 332, 332, 332, 332, 332, 332, 282, + 332, 332, 332, 249, 332, 252, 253, 332, 332, 332, + 332, 332, 250, 254, 0 } ; static const YY_CHAR yy_ec[256] = @@ -765,17 +765,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3271] = +static const flex_int16_t yy_base[3274] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 3165, 3121, 81, 6365, - 6365, 6365, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3165, 3121, 81, 6361, + 6361, 6361, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 184, 145, - 185, 205, 194, 204, 178, 123, 3093, 6365, 6365, 6365, - 107, 2724, 6365, 6365, 6365, 154, 2535, 2515, 6365, 6365, - 6365, 226, 2454, 6365, 6365, 6365, 163, 2353, 6365, 238, - 6365, 242, 148, 2067, 1986, 6365, 6365, 6365, 246, 1743, - 6365, 6365, 6365, 250, 1651, 254, 219, 0, 258, 0, + 185, 205, 194, 204, 178, 123, 3093, 6361, 6361, 6361, + 107, 2724, 6361, 6361, 6361, 154, 2535, 2515, 6361, 6361, + 6361, 226, 2454, 6361, 6361, 6361, 163, 2353, 6361, 238, + 6361, 242, 148, 2067, 1986, 6361, 6361, 6361, 246, 1743, + 6361, 6361, 6361, 250, 1651, 254, 219, 0, 258, 0, 0, 165, 250, 191, 215, 243, 252, 256, 92, 260, 261, 262, 264, 265, 266, 273, 270, 277, 278, 281, @@ -805,9 +805,9 @@ static const flex_int16_t yy_base[3271] = 745, 743, 747, 749, 750, 766, 754, 739, 759, 767, 758, 760, 768, 774, 793, 779, 781, 789, 790, 791, 795, 797, 805, 807, 796, 809, 803, 810, 812, 813, - 822, 818, 6365, 817, 820, 833, 826, 834, 835, 836, + 822, 818, 6361, 817, 820, 833, 826, 834, 835, 836, 841, 842, 823, 849, 847, 848, 852, 874, 856, 858, - 854, 863, 866, 6365, 864, 868, 898, 870, 872, 892, + 854, 863, 866, 6361, 864, 868, 898, 870, 872, 892, 888, 884, 887, 889, 899, 896, 909, 902, 907, 911, 922, 918, 919, 920, 921, 924, 930, 937, 932, 934, @@ -817,21 +817,21 @@ static const flex_int16_t yy_base[3271] = 1006, 1007, 1013, 1009, 1008, 1017, 1019, 1021, 1022, 1023, 1024, 1035, 1030, 1031, 1033, 1037, 1038, 1039, 1041, 1044, 1045, 1047, 1049, 1051, 1050, 1056, 1060, 1058, 1066, 1061, - 6365, 1068, 1070, 1072, 1073, 1074, 1075, 6365, 1077, 1071, + 6361, 1068, 1070, 1072, 1073, 1074, 1075, 6361, 1077, 1071, 1076, 1078, 1090, 1093, 1104, 1081, 1085, 1100, 1103, 1101, 1105, 1113, 1109, 1114, 1116, 1112, 1118, 1119, 1121, 1124, - 1122, 1125, 1130, 1131, 1132, 1133, 1152, 6365, 1136, 1139, + 1122, 1125, 1130, 1131, 1132, 1133, 1152, 6361, 1136, 1139, 1144, 1138, 1143, 1145, 1164, 1150, 1162, 1161, 1170, 1181, 1174, 1182, 1176, 1163, 1187, 1184, 1191, 1189, 1193, 1195, - 1194, 1196, 1197, 1198, 1200, 1201, 1206, 6365, 1208, 1211, + 1194, 1196, 1197, 1198, 1200, 1201, 1206, 6361, 1208, 1211, 1220, 1221, 1222, 1223, 1224, 1225, 1137, 1226, 1228, 1227, 1231, 1235, 1245, 1252, 1236, 1253, 1239, 1254, 1249, 1250, 1256, 1259, 1258, 1260, 1270, 1266, 1272, 1281, 1284, 1283, 1286, 1293, 1295, 1275, 1288, 1298, 1268, 1290, 1291, 1302, 1292, 1303, 1304, 1306, 1313, 1308, 1311, 1314, 1316, 1317, 1320, 1315, 1322, 1321, 1324, 1331, 1328, 1332, 1339, 1334, - 1340, 1338, 1343, 1345, 1348, 1349, 1354, 6365, 1361, 1357, + 1340, 1338, 1343, 1345, 1348, 1349, 1354, 6361, 1361, 1357, 1362, 1360, 1367, 1368, 1370, 1358, 1373, 1376, 1377, 1379, 1378, 1381, 1385, 1382, 1387, 1388, 1392, 1395, 1393, 1402, @@ -845,653 +845,655 @@ static const flex_int16_t yy_base[3271] = 1545, 1546, 1555, 1547, 1556, 1558, 1548, 1559, 1561, 1564, 1571, 1566, 1572, 1575, 1576, 1578, 1577, 1580, 1581, 1588, - 1589, 1593, 6365, 1585, 1601, 1583, 1596, 1597, 1599, 1605, - 1612, 1607, 1610, 1608, 1611, 1613, 1637, 6365, 1614, 6365, - 6365, 315, 6365, 6365, 1616, 1621, 6365, 1622, 1631, 1618, + 1589, 1593, 6361, 1585, 1601, 1583, 1596, 1597, 1599, 1605, + 1612, 1607, 1610, 1608, 1611, 1613, 1637, 6361, 1614, 6361, + 6361, 315, 6361, 6361, 1616, 1621, 6361, 1622, 1631, 1618, 1641, 1619, 1643, 1647, 1630, 1638, 1635, 1660, 1661, 1664, 1632, 1666, 1667, 1650, 1672, 1670, 1677, 1678, 1681, 1682, 1689, 1687, 1690, 1686, 1697, 1695, 1699, 1703, 1705, 1707, 1710, 1692, 1712, 1713, 1715, 1717, 1718, 1714, 1721, 1723, - 1720, 1727, 1726, 1736, 1732, 1741, 1750, 6365, 1742, 1751, + 1720, 1727, 1726, 1736, 1732, 1741, 1750, 6361, 1742, 1751, 1752, 1753, 1760, 1728, 1755, 1756, 1763, 1766, 1759, 1757, - 1768, 1769, 1770, 1772, 1774, 1777, 1779, 1786, 1781, 6365, + 1768, 1769, 1770, 1772, 1774, 1777, 1779, 1786, 1781, 6361, 1782, 1784, 1787, 1790, 1788, 1796, 1798, 1792, 1794, 1801, - 1802, 1813, 1804, 1808, 1809, 1816, 1814, 1818, 6365, 1820, + 1802, 1813, 1804, 1808, 1809, 1816, 1814, 1818, 6361, 1820, 1827, 1824, 1830, 1831, 1817, 1833, 1832, 1836, 1834, 1839, 1840, 1841, 1842, 1855, 1848, 1846, 1847, 1850, 1863, 1851, 1867, 1871, 1860, 1868, 1873, 1874, 1875, 1876, 1878, 1879, 1887, 1889, 1886, 1890, 1885, 1894, 1902, 1903, 1891, 1892, 1901, 1908, 1913, 1915, 1916, 1917, 1911, 1926, 1918, 1922, 1923, 1925, 1933, 1928, 1936, 1944, 1931, 1934, 1937, 1939, - 6365, 1946, 1947, 6365, 1949, 1948, 1950, 1972, 1951, 1955, + 6361, 1946, 1947, 6361, 1949, 1948, 1950, 1972, 1951, 1955, 1963, 1957, 1960, 1965, 1964, 1966, 1982, 1976, 1992, 1989, 1994, 1995, 1997, 2000, 1984, 2001, 2002, 2003, 2004, 2010, 1967, 2009, 2013, 2023, 2021, 2027, 2031, 2026, 2028, 2032, 2051, 2029, 2030, 2039, 2033, 2036, 2038, 2034, 2040, 2044, 2049, 2046, 2061, 2064, 2056, 2060, 2066, 2073, 2075, 2058, - 6365, 2086, 2082, 2081, 2083, 2093, 2089, 2088, 6365, 2090, + 6361, 2086, 2082, 2081, 2083, 2093, 2089, 2088, 6361, 2090, 2092, 2095, 2097, 2103, 2098, 2104, 2102, 2105, 2106, 2108, - 2114, 2115, 2110, 2113, 2127, 6365, 2118, 6365, 2125, 2128, - 2131, 2129, 2133, 2132, 2135, 2136, 6365, 6365, 2137, 2144, - 2145, 2155, 2152, 6365, 2138, 2162, 6365, 2159, 2164, 2157, + 2114, 2115, 2110, 2113, 2127, 6361, 2118, 6361, 2125, 2128, + 2131, 2129, 2133, 2132, 2135, 2136, 6361, 6361, 2137, 2144, + 2145, 2155, 2152, 6361, 2138, 2162, 6361, 2159, 2164, 2157, 2158, 2166, 2168, 2170, 2169, 2179, 2172, 2180, 2175, 2176, - 2177, 6365, 2185, 2187, 2189, 2193, 2195, 2196, 2197, 2200, - 6365, 2199, 2203, 2204, 2213, 2215, 2209, 2206, 2217, 2221, + 2177, 6361, 2185, 2187, 2189, 2193, 2195, 2196, 2197, 2200, + 6361, 2199, 2203, 2204, 2213, 2215, 2209, 2206, 2217, 2221, 2216, 2223, 2225, 2226, 2227, 2236, 2237, 2228, 2238, 2239, - 2241, 6365, 2232, 2246, 2253, 2249, 2252, 2248, 2255, 2256, + 2241, 6361, 2232, 2246, 2253, 2249, 2252, 2248, 2255, 2256, 2258, 2259, 2260, 2261, 2265, 2267, 2268, 2275, 2276, 2271, 2273, 2281, 2282, 2284, 2285, 2292, 2289, 2290, 2291, 2293, - 6365, 2294, 2296, 2300, 171, 2302, 2304, 2303, 2306, 2305, + 6361, 2294, 2296, 2300, 171, 2302, 2304, 2303, 2306, 2305, 2309, 2312, 2323, 2327, 2322, 2324, 2326, 2325, 2331, 2333, - 2334, 2335, 2336, 2337, 2341, 2340, 6365, 2343, 2346, 2348, + 2334, 2335, 2336, 2337, 2341, 2340, 6361, 2343, 2346, 2348, - 2349, 2351, 2352, 2362, 6365, 2354, 2368, 2365, 2374, 2375, + 2349, 2351, 2352, 2362, 6361, 2354, 2368, 2365, 2374, 2375, 2363, 2380, 2371, 2361, 2384, 2386, 2385, 2387, 2389, 2388, - 2392, 2395, 6365, 2397, 2400, 2401, 2398, 2407, 2409, 2408, + 2392, 2395, 6361, 2397, 2400, 2401, 2398, 2407, 2409, 2408, 2410, 2411, 2415, 2416, 2420, 2422, 2419, 2421, 2423, 2424, 2427, 2430, 2432, 2436, 2437, 2438, 2439, 2443, 2441, 2447, - 2448, 6365, 2457, 2449, 2459, 2461, 2450, 2460, 2463, 2477, + 2448, 6361, 2457, 2449, 2459, 2461, 2450, 2460, 2463, 2477, 2467, 2474, 2472, 2478, 2489, 2480, 2482, 2487, 2483, 2495, 2492, 2505, 2504, 2506, 2513, 2496, 2515, 2518, 2507, 2510, 2520, 2519, 2525, 2522, 2524, 2532, 2537, 2533, 2540, 2534, - 2545, 2558, 2549, 6365, 2547, 2553, 2541, 2557, 2570, 2562, + 2545, 2558, 2549, 6361, 2547, 2553, 2541, 2557, 2570, 2562, 2561, 2567, 2563, 2565, 2573, 2575, 2576, 2584, 2579, 2581, 2582, 2586, 2585, 2588, 2587, 2593, 2595, 2602, 2598, 2604, - 2606, 6365, 2607, 2609, 2611, 2612, 2616, 2617, 2620, 2622, + 2606, 6361, 2607, 2609, 2611, 2612, 2616, 2617, 2620, 2622, 2624, 2625, 2626, 2628, 2631, 2632, 2633, 2634, 2636, 2638, - 2641, 6365, 2649, 2642, 2643, 2644, 2650, 2654, 2656, 2660, - 2663, 2666, 2667, 2668, 2669, 2670, 6365, 2678, 2679, 2675, - 2687, 2677, 2682, 2684, 2689, 2690, 6365, 2691, 2692, 2693, - 2700, 2702, 2697, 6365, 2704, 2699, 2705, 2707, 2708, 2709, - 2711, 2714, 2717, 2718, 2721, 2726, 2733, 2722, 2730, 6365, + 2641, 6361, 2649, 2642, 2643, 2644, 2650, 2654, 2656, 2660, + 2663, 2666, 2667, 2668, 2669, 2670, 6361, 2678, 2679, 2675, + 2687, 2677, 2682, 2684, 2689, 2690, 6361, 2691, 2692, 2693, + 2700, 2702, 2697, 6361, 2704, 2699, 2705, 2707, 2708, 2709, + 2711, 2714, 2717, 2718, 2721, 2726, 2733, 2722, 2730, 6361, 2728, 2742, 2734, 2740, 2738, 2744, 2748, 2750, 2751, 2753, - 2755, 2760, 6365, 2767, 2766, 2764, 2777, 2754, 2769, 2772, - 2778, 2779, 2780, 2781, 2782, 2785, 6365, 2786, 2788, 2789, + 2755, 2760, 6361, 2767, 2766, 2764, 2777, 2754, 2769, 2772, + 2778, 2779, 2780, 2781, 2782, 2785, 6361, 2786, 2788, 2789, 2791, 2793, 2794, 2796, 2808, 2799, 2803, 2804, 2809, 2810, 2813, 2814, 2816, 2821, 2817, 2820, 2827, 2830, 2831, 2833, 2836, 2844, 2834, 2842, 2843, 2839, 2846, 2847, 2856, 2857, - 2858, 2860, 6365, 2863, 2864, 2865, 2854, 2866, 2869, 2870, + 2858, 2860, 6361, 2863, 2864, 2865, 2854, 2866, 2869, 2870, 2873, 2875, 2871, 2879, 2877, 2881, 2884, 2894, 2898, 2886, 2889, 2896, 2899, 2900, 2902, 2901, 2904, 2905, 2914, 2911, 2910, 2919, 2912, 2921, 2928, 2925, 2926, 2929, 2930, 2932, 2917, 2935, 2933, 2937, 2939, 2942, 2953, 2954, 2943, 2955, - 2956, 2957, 2958, 6365, 2961, 2962, 2963, 2966, 2969, 2972, + 2956, 2957, 2958, 6361, 2961, 2962, 2963, 2966, 2969, 2972, 2975, 2982, 2973, 2974, 2984, 2990, 2991, 2981, 2992, 2983, - 2999, 2997, 6365, 2998, 6365, 3000, 3002, 3004, 3012, 3008, - 6365, 3014, 6365, 3015, 3020, 3009, 3011, 6365, 3023, 3017, + 2999, 2997, 6361, 2998, 6361, 3000, 3002, 3004, 3012, 3008, + 6361, 3014, 6361, 3015, 3020, 3009, 3011, 6361, 3023, 3017, 3022, 3029, 3024, 3032, 3033, 3035, 3034, 3041, 3036, 3038, 3043, 3044, 3046, 3049, 3050, 3054, 3051, 3061, 3067, 3055, - 3064, 3057, 3062, 3070, 3072, 3076, 6365, 3078, 3080, 3082, + 3064, 3057, 3062, 3070, 3072, 3076, 6361, 3078, 3080, 3082, 3083, 3084, 3085, 3086, 3087, 3089, 3090, 3092, 3102, 3098, - 3108, 3095, 3114, 3117, 3124, 3105, 3126, 6365, 3109, 3128, - 3119, 3129, 6365, 3131, 3106, 3132, 3139, 3134, 3137, 3141, + 3108, 3095, 3114, 3117, 3124, 3105, 3126, 6361, 3109, 3128, + 3119, 3129, 6361, 3131, 3106, 3132, 3139, 3134, 3137, 3141, - 3142, 3143, 3146, 3147, 3149, 3154, 3158, 3161, 3162, 6365, + 3142, 3143, 3146, 3147, 3149, 3154, 3158, 3161, 3162, 6361, 3167, 3163, 3150, 3170, 3178, 3180, 3185, 3182, 3183, 3188, 3192, 3190, 3191, 3153, 3193, 3194, 3196, 3203, 3206, 3202, 3211, 3198, 3208, 3210, 3215, 3201, 3216, 3217, 3218, 3224, - 3225, 3222, 3223, 3226, 3227, 6365, 3229, 3230, 3231, 3249, - 3233, 3234, 3245, 3235, 6365, 3251, 3247, 3252, 3258, 3260, - 3262, 3255, 3263, 3264, 3265, 3266, 3268, 3271, 3272, 6365, - 3276, 6365, 3273, 3286, 3279, 3285, 3290, 3292, 3294, 3300, + 3225, 3222, 3223, 3226, 3227, 6361, 3229, 3230, 3231, 3249, + 3233, 3234, 3245, 3235, 6361, 3251, 3247, 3252, 3258, 3260, + 3262, 3255, 3263, 3264, 3265, 3266, 3268, 3271, 3272, 6361, + 3276, 6361, 3273, 3286, 3279, 3285, 3290, 3292, 3294, 3300, 3293, 3295, 3303, 3304, 3301, 3305, 3307, 3311, 3313, 3315, - 3318, 3327, 3317, 3319, 3323, 3328, 3329, 3331, 6365, 6365, + 3318, 3327, 3317, 3319, 3323, 3328, 3329, 3331, 6361, 6361, 3333, 3334, 3335, 3338, 3339, 3344, 3346, 3350, 3351, 3353, - 3355, 3357, 3366, 6365, 3363, 3364, 3367, 3368, 3378, 3369, - 3381, 3388, 3385, 3392, 3391, 6365, 3374, 3370, 3399, 3383, - 3395, 3406, 6365, 3401, 6365, 3402, 3403, 3405, 3407, 3410, + 3355, 3357, 3366, 6361, 3363, 3364, 3367, 3368, 3378, 3369, + 3381, 3388, 3385, 3392, 3391, 6361, 3374, 3370, 3399, 3383, + 3395, 3406, 6361, 3401, 6361, 3402, 3403, 3405, 3407, 3410, 3411, 3412, 3414, 3418, 3425, 3433, 3429, 3431, 3415, 3420, - 3432, 3434, 3443, 3436, 3440, 3441, 6365, 3445, 3446, 3448, - 3449, 3450, 3457, 3460, 3453, 6365, 3461, 3463, 3465, 3467, - 3468, 3470, 3472, 3474, 3475, 3479, 3481, 6365, 3477, 3483, - 3490, 3485, 3487, 3492, 3495, 3499, 3501, 6365, 3504, 3506, + 3432, 3434, 3443, 3436, 3440, 3441, 6361, 3445, 3446, 3448, + 3449, 3450, 3457, 3460, 3453, 6361, 3461, 3463, 3465, 3467, + 3468, 3470, 3472, 3474, 3475, 3479, 3481, 6361, 3477, 3483, + 3490, 3485, 3487, 3492, 3495, 3499, 3501, 6361, 3504, 3506, 3513, 3511, 3508, 3512, 3516, 3517, 3518, 3521, 3523, 3522, 3524, 3525, 3526, 3528, 3530, 3533, 3531, 3544, 3545, 3532, - 3553, 3554, 3536, 6365, 3546, 3558, 3559, 3560, 3561, 3567, - 3568, 3571, 3573, 3562, 3577, 3584, 3566, 3574, 3589, 3586, - 3597, 3593, 6365, 3598, 3594, 3605, 3579, 3600, 3602, 3606, - 3608, 3610, 3607, 3611, 3614, 3617, 3624, 3619, 3620, 3621, - 3629, 3625, 6365, 3636, 3634, 3627, 3637, 3643, 3644, 3652, - 3647, 3649, 3650, 3658, 3651, 3660, 3653, 3662, 3663, 3666, - 3655, 6365, 6365, 3668, 3670, 3672, 6365, 3674, 3676, 3685, - 3687, 3678, 3688, 3682, 3691, 3680, 3692, 3690, 3694, 6365, - 3696, 3704, 3702, 3705, 3713, 3714, 3718, 3715, 3719, 3709, - - 3711, 3721, 3723, 3724, 3725, 3731, 3740, 3741, 3727, 3737, - 3739, 6365, 3736, 3738, 3744, 3746, 3748, 3750, 6365, 3753, - 3754, 3755, 3757, 3763, 3764, 3769, 3771, 3773, 3774, 3776, - 3777, 3778, 3779, 3781, 3786, 3784, 3791, 3792, 3783, 6365, - 3796, 3797, 3800, 3803, 6365, 3807, 3810, 3817, 3818, 3814, - 3816, 3815, 3825, 6365, 3822, 3824, 3823, 3826, 3836, 3831, - 3838, 3837, 3829, 6365, 3833, 3839, 3843, 6365, 3844, 3849, - 3855, 3857, 3846, 3865, 3861, 3863, 3864, 3860, 6365, 3871, - 6365, 3872, 3862, 3877, 6365, 3873, 3879, 3881, 3883, 3880, - 3887, 3888, 3894, 3896, 3884, 3890, 3898, 3900, 3901, 3902, - - 3909, 3906, 3908, 3910, 3911, 6365, 3914, 3912, 3913, 3920, - 3931, 3918, 3923, 3929, 3933, 3934, 6365, 6365, 3937, 6365, - 3939, 3940, 3941, 6365, 3943, 3945, 3952, 3944, 3948, 3951, - 3955, 3960, 6365, 3963, 3964, 6365, 3966, 3973, 3969, 3970, - 3971, 3974, 3977, 3978, 3981, 3982, 3983, 3979, 3985, 3984, - 6365, 3987, 3988, 3989, 3997, 3980, 4002, 4006, 4008, 4004, - 6365, 4010, 4012, 4016, 4018, 4019, 6365, 4020, 6365, 4017, - 4021, 4025, 4031, 4027, 6365, 4036, 4028, 4040, 4032, 4043, - 4045, 4044, 4050, 4041, 4051, 4060, 4052, 4053, 4056, 6365, - 4061, 4062, 4068, 4069, 4063, 4065, 4079, 4072, 4081, 4074, - - 4082, 4087, 4084, 4088, 4093, 4091, 4097, 4095, 6365, 4099, - 4101, 4104, 4115, 4107, 4105, 6365, 4106, 4119, 4121, 6365, - 4110, 4112, 4120, 4128, 4122, 4130, 4131, 4135, 4136, 6365, - 4133, 4134, 4137, 4138, 4139, 4141, 6365, 6365, 4152, 6365, - 4153, 4142, 4154, 4155, 4156, 4161, 4163, 4166, 4168, 4160, - 4172, 4177, 4174, 4164, 4184, 4191, 4194, 4189, 4190, 4180, - 6365, 6365, 4196, 4201, 4197, 4204, 4207, 4193, 4199, 4215, - 4213, 4210, 4220, 4221, 4228, 6365, 4225, 4212, 4230, 4223, - 6365, 4214, 4231, 4224, 4233, 4235, 4237, 4238, 4241, 4244, - 4242, 4246, 4252, 4250, 4253, 4251, 4259, 4257, 4260, 4262, - - 4263, 4268, 4271, 6365, 4272, 4273, 4274, 4275, 4278, 4281, - 4282, 4283, 4284, 6365, 4289, 6365, 4288, 4285, 4294, 4307, - 4308, 4287, 4297, 4309, 4299, 4314, 4317, 4319, 4311, 4320, - 4321, 4325, 4328, 4330, 4331, 6365, 4335, 4324, 4332, 4338, - 4342, 4346, 4339, 4348, 4343, 4354, 4349, 4351, 4360, 4363, - 4355, 4357, 4365, 4367, 6365, 4368, 4371, 4372, 4375, 4376, - 4377, 4378, 4384, 4388, 4380, 4382, 4389, 4393, 6365, 4390, - 4395, 4396, 4398, 4404, 4401, 4407, 4406, 4409, 6365, 4414, - 4405, 4415, 4416, 4417, 4419, 4423, 4426, 4429, 4431, 4436, - 6365, 4428, 4441, 4442, 4432, 4445, 4434, 4443, 4444, 6365, - - 4459, 4460, 4451, 4467, 4450, 4468, 4469, 4472, 4453, 4463, - 4479, 4475, 4480, 4481, 4483, 4473, 4491, 4494, 4493, 6365, - 4486, 6365, 4495, 4498, 4502, 4500, 4503, 4505, 6365, 4507, - 4510, 4512, 4513, 4515, 6365, 4517, 4514, 4516, 4520, 6365, - 4518, 4533, 4519, 4522, 4536, 4540, 6365, 4543, 4544, 4545, - 4552, 4554, 4549, 4556, 4537, 4559, 4553, 4557, 4561, 4562, - 4570, 4567, 4568, 6365, 4572, 4566, 4575, 4577, 4584, 4579, - 4585, 4586, 4592, 4587, 6365, 4589, 4593, 4595, 4596, 4597, - 4598, 4599, 4608, 4603, 4606, 4607, 4611, 4612, 6365, 4617, - 4614, 4620, 4627, 4623, 4632, 6365, 6365, 4622, 4637, 4639, - - 4619, 4640, 6365, 6365, 4643, 4650, 4646, 4649, 4651, 6365, - 6365, 4653, 6365, 4654, 6365, 4655, 4657, 6365, 6365, 4656, - 4659, 4662, 4663, 4665, 6365, 4671, 6365, 4680, 4675, 4666, - 4677, 4678, 6365, 4679, 4681, 4687, 6365, 4688, 4690, 4689, - 4691, 6365, 4695, 4700, 4692, 4696, 6365, 4701, 4705, 4708, - 4709, 4710, 4712, 4716, 4715, 4720, 4721, 4723, 4722, 4725, - 4732, 4736, 4738, 4740, 4741, 4726, 4743, 4745, 4749, 4747, - 4751, 4752, 4754, 4756, 4757, 4761, 4765, 4758, 4762, 4628, - 4766, 4767, 4768, 4771, 4775, 4780, 4777, 4781, 4782, 4783, - 4784, 4785, 4788, 4789, 4792, 4794, 4797, 6365, 4793, 4798, - - 4803, 4810, 4804, 4814, 4816, 4806, 4823, 4824, 6365, 4827, - 6365, 4829, 4815, 4831, 4817, 4832, 6365, 4834, 4835, 4837, - 4838, 4839, 4840, 4841, 4844, 4845, 4849, 4850, 6365, 4856, - 4846, 6365, 4852, 4857, 4869, 6365, 4862, 4873, 4865, 4870, - 4875, 4876, 4877, 4878, 4881, 4879, 4885, 4887, 4889, 4893, - 4901, 4903, 4910, 4890, 4894, 4892, 4912, 4905, 4906, 4913, - 4914, 4920, 4921, 4928, 6365, 4915, 6365, 4922, 4924, 4929, - 4930, 4932, 4933, 4935, 6365, 6365, 4936, 4939, 4945, 4940, - 4946, 4948, 4957, 6365, 4951, 4958, 4960, 4952, 6365, 4963, - 4949, 4967, 4971, 6365, 4968, 4972, 4973, 4975, 4976, 4983, - - 4979, 4985, 4986, 4988, 4990, 6365, 6365, 6365, 6365, 4991, - 4993, 4997, 4998, 4999, 5001, 5004, 5006, 5003, 6365, 5008, - 6365, 6365, 5009, 5016, 5017, 5019, 5020, 5022, 5023, 5025, - 6365, 5027, 5029, 5030, 5036, 5038, 5040, 5044, 5045, 5048, - 5046, 5047, 5055, 5054, 5056, 5058, 5061, 5063, 5068, 6365, - 6365, 5069, 5071, 5072, 5080, 5076, 5078, 5077, 5090, 5085, - 5087, 5086, 5088, 5093, 5094, 5102, 5104, 5100, 5097, 6365, - 5106, 5107, 5108, 6365, 5113, 6365, 5114, 5116, 5099, 5110, - 5118, 5120, 5130, 5124, 6365, 6365, 5132, 5128, 6365, 6365, - 5135, 5136, 5138, 5140, 5141, 5137, 5143, 5145, 5142, 6365, - - 5147, 6365, 5148, 5149, 5151, 5152, 5165, 5169, 5170, 5167, - 5171, 5173, 6365, 5172, 5174, 6365, 5176, 5175, 5182, 6365, - 5183, 5185, 5191, 5193, 6365, 5195, 5196, 5199, 6365, 5202, - 6365, 5186, 5205, 5207, 5214, 6365, 5198, 5211, 6365, 5216, - 5221, 5222, 5217, 6365, 5209, 6365, 5223, 5229, 5231, 5234, - 5224, 5236, 5237, 5226, 5238, 5246, 5242, 5245, 6365, 6365, - 135, 5254, 5247, 5251, 5255, 5256, 5263, 5258, 5260, 5266, - 6365, 6365, 5267, 6365, 5261, 5273, 6365, 5259, 5274, 5278, - 5268, 5282, 5280, 5281, 5288, 5290, 5291, 5292, 5293, 5294, - 5296, 5297, 5312, 5299, 5309, 5314, 5316, 5319, 5321, 5310, - - 5323, 5324, 5325, 5327, 5329, 5330, 5332, 5333, 6365, 5336, - 5337, 5331, 6365, 5342, 5338, 5348, 5350, 6365, 5357, 5354, - 5358, 5359, 6365, 5343, 5365, 5362, 5360, 5370, 5377, 5373, - 5372, 5374, 6365, 6365, 6365, 5375, 5383, 6365, 5388, 5379, - 5384, 5389, 6365, 5390, 5391, 6365, 6365, 5392, 5395, 5394, - 5402, 6365, 5398, 6365, 5397, 6365, 5400, 5401, 5411, 5413, - 6365, 5415, 5423, 6365, 5426, 5429, 5431, 5432, 5416, 5419, - 5434, 6365, 5443, 5435, 5442, 5445, 5433, 5446, 5448, 5449, - 5450, 5459, 5452, 5456, 6365, 5457, 5460, 5462, 5463, 5466, - 5471, 5472, 5470, 6365, 5474, 6365, 5408, 5475, 5476, 5482, - - 5478, 5479, 5481, 5492, 5484, 5483, 5495, 5500, 5496, 6365, - 5503, 5505, 6365, 5506, 6365, 5508, 6365, 5509, 5510, 5512, - 5511, 6365, 5514, 5517, 5518, 5519, 6365, 5522, 5520, 5524, - 5530, 6365, 6365, 5531, 5539, 5535, 5532, 5545, 5547, 5536, - 5549, 5542, 5550, 5552, 5561, 5557, 5558, 5560, 5563, 5564, - 5565, 6365, 6365, 6365, 5569, 5571, 5579, 5575, 5582, 5583, - 5578, 6365, 5584, 5587, 5588, 5590, 5598, 5594, 5600, 6365, - 5595, 5597, 5601, 5603, 5605, 5602, 5606, 5608, 6365, 5614, - 5619, 5620, 5622, 5623, 5630, 5632, 5634, 5624, 5641, 5637, - 6365, 5639, 6365, 6365, 5627, 6365, 5640, 5643, 5644, 5647, - - 6365, 5652, 5645, 5649, 5654, 5656, 5658, 6365, 5667, 5653, - 5660, 5670, 6365, 6365, 5672, 6365, 5677, 5678, 5668, 5680, - 5681, 5684, 5686, 5689, 6365, 5687, 5688, 5690, 5691, 5696, - 6365, 5697, 5698, 5699, 5700, 6365, 5704, 5709, 5706, 5710, - 5711, 6365, 5713, 5701, 5732, 5728, 6365, 5714, 5730, 5727, - 6365, 6365, 5737, 5739, 5741, 6365, 6365, 6365, 5742, 5729, - 5744, 6365, 5750, 5754, 5758, 5762, 5753, 6365, 5764, 5761, - 5766, 6365, 6365, 5765, 5767, 5768, 5770, 6365, 6365, 5746, - 5774, 5772, 5775, 5777, 6365, 5778, 5782, 5788, 5794, 5798, - 5786, 5790, 5799, 5806, 5809, 5802, 5804, 5807, 5810, 5812, - - 5813, 5821, 5822, 5818, 5826, 5830, 5834, 5831, 6365, 6365, - 5838, 5840, 5814, 6365, 6365, 5842, 5844, 5846, 5848, 5850, - 5852, 5854, 6365, 5855, 5857, 5858, 5859, 5860, 6365, 5862, - 5866, 5861, 5869, 5863, 5872, 5868, 5878, 6365, 6365, 5870, - 5712, 5874, 5884, 5879, 6365, 5886, 5893, 5890, 5891, 5892, - 5894, 5898, 6365, 5895, 5899, 6365, 6365, 6365, 5902, 6365, - 6365, 5903, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 5906, - 6365, 5905, 5916, 5920, 5922, 6365, 5907, 5923, 5924, 5913, - 5925, 6365, 5926, 5927, 5931, 5935, 5940, 5941, 5934, 5943, - 5945, 5944, 5946, 5950, 5948, 5952, 5951, 5953, 5954, 5956, - - 6365, 6365, 6365, 5959, 5966, 5968, 5969, 5976, 5979, 5982, - 5984, 5970, 5977, 5985, 5987, 5990, 5991, 5993, 6000, 5996, - 5999, 5998, 6001, 6005, 6007, 6002, 6009, 6013, 6365, 6014, - 6365, 6015, 6365, 6365, 6019, 6022, 6024, 6020, 6031, 6036, - 6026, 6034, 6027, 6037, 6044, 6049, 6365, 6365, 6035, 6038, - 6365, 6041, 6050, 6365, 6045, 6052, 6051, 6053, 6059, 6060, - 6062, 6063, 6074, 6365, 6365, 6061, 6064, 6069, 6076, 6078, - 6077, 6084, 6086, 6087, 6089, 6080, 6096, 6365, 6098, 6095, - 6102, 6365, 6103, 6093, 6104, 6105, 6106, 6114, 6109, 6110, - 6365, 6115, 6365, 6118, 6120, 6121, 6119, 6122, 6127, 6130, - - 6134, 6133, 6365, 6135, 6136, 6143, 6144, 6147, 6149, 6150, - 6151, 6153, 6155, 6156, 6164, 6159, 6165, 6167, 6168, 6169, - 6365, 6175, 6171, 6365, 6176, 6177, 6178, 6179, 6183, 6365, - 6192, 6180, 6185, 6193, 6196, 6200, 6365, 6202, 6206, 6203, - 6365, 6208, 6365, 6365, 6209, 6211, 6212, 6216, 6218, 6365, - 6365, 6365, 6245, 6252, 6259, 6266, 6273, 6280, 6287, 88, - 6294, 6301, 6308, 6315, 6322, 6329, 6336, 6343, 6350, 6357 + 3553, 3554, 3536, 6361, 3546, 3558, 3559, 3560, 3561, 3562, + 3566, 3569, 3571, 3564, 3573, 3581, 3574, 3579, 3586, 3583, + 3594, 3589, 6361, 3596, 3591, 3599, 3597, 3598, 3603, 3604, + 3605, 3607, 3608, 3611, 3612, 3614, 3621, 3618, 3620, 3623, + 3633, 3625, 6361, 3642, 3634, 3635, 3626, 3638, 3639, 3652, + 3644, 3647, 3651, 3656, 3657, 3658, 3660, 3662, 3663, 3666, + 3661, 6361, 6361, 3669, 3670, 3673, 6361, 3676, 3671, 3693, + 3675, 3677, 3679, 3689, 3688, 3678, 3690, 3686, 3699, 6361, + 3700, 3707, 3702, 3703, 3714, 3717, 3719, 3716, 3720, 3706, + + 3709, 3713, 3724, 3723, 3730, 3731, 3739, 3740, 3735, 3736, + 3738, 6361, 3737, 3743, 3744, 3746, 3747, 3748, 6361, 3750, + 3760, 3753, 3752, 3768, 3770, 3762, 3772, 3754, 3776, 3777, + 3779, 3780, 3781, 3788, 3783, 3786, 3793, 3794, 3785, 6361, + 3797, 3799, 3787, 3803, 6361, 3805, 3814, 3817, 3818, 3809, + 3816, 3819, 3826, 6361, 3822, 3823, 3824, 3825, 3838, 3829, + 3839, 3837, 3828, 6361, 3841, 3830, 3843, 6361, 3844, 3845, + 3855, 3857, 3852, 3864, 3859, 3861, 3862, 3860, 6361, 3870, + 6361, 3871, 3867, 3876, 6361, 3873, 3878, 3881, 3883, 3880, + 3887, 3888, 3891, 3896, 3884, 3897, 3898, 3899, 3901, 3902, + + 3909, 3908, 3910, 3911, 3900, 6361, 3912, 3915, 3921, 3917, + 3922, 3925, 3920, 3927, 3931, 3928, 6361, 6361, 3939, 6361, + 3940, 3935, 3942, 6361, 3944, 3946, 3953, 3945, 3949, 3952, + 3956, 3957, 6361, 3964, 3966, 6361, 3968, 3975, 3970, 3961, + 3971, 3972, 3976, 3978, 3980, 3981, 3982, 3979, 3986, 3984, + 6361, 3987, 3988, 3996, 3998, 3995, 3989, 4012, 4014, 4000, + 6361, 4016, 4002, 4006, 4017, 4018, 6361, 4023, 6361, 4010, + 4026, 4027, 4029, 4030, 6361, 4034, 4033, 4038, 4040, 4041, + 4042, 4043, 4045, 4051, 4052, 4059, 4055, 4054, 4056, 6361, + 4057, 4061, 4063, 4070, 4058, 4065, 4074, 4077, 4078, 4079, + + 4083, 4087, 4081, 4088, 4094, 4092, 4098, 4084, 6361, 4096, + 4104, 4090, 4113, 4100, 4110, 6361, 4114, 4115, 4116, 6361, + 4117, 4118, 4119, 4124, 4125, 4127, 4131, 4132, 4129, 6361, + 4136, 4137, 4133, 4134, 4135, 4141, 6361, 6361, 4151, 6361, + 4152, 4142, 4154, 4155, 4156, 4159, 4161, 4162, 4164, 4166, + 4172, 4174, 4167, 4175, 4183, 4184, 4192, 4187, 4188, 4189, + 6361, 6361, 4194, 4198, 4191, 4202, 4203, 4195, 4205, 4212, + 4210, 4216, 4219, 4220, 4214, 6361, 4222, 4211, 4228, 4221, + 6361, 4227, 4229, 4230, 4233, 4235, 4236, 4239, 4237, 4238, + 4242, 4245, 4246, 4247, 4251, 4249, 4258, 4259, 4260, 4261, + + 4265, 4263, 4268, 6361, 4269, 4270, 4272, 4273, 4274, 4280, + 4282, 4283, 4284, 6361, 4285, 6361, 4288, 4286, 4302, 4294, + 4306, 4287, 4297, 4307, 4309, 4312, 4315, 4317, 4308, 4318, + 4319, 4324, 4326, 4328, 4329, 6361, 4330, 4332, 4337, 4338, + 4340, 4342, 4343, 4345, 4346, 4348, 4351, 4349, 4356, 4359, + 4353, 4360, 4361, 4363, 6361, 4365, 4372, 4368, 4374, 4376, + 4377, 4378, 4379, 4385, 4386, 4388, 4389, 4391, 6361, 4392, + 4393, 4396, 4397, 4399, 4400, 4402, 4406, 4409, 6361, 4414, + 4410, 4415, 4404, 4417, 4420, 4423, 4425, 4427, 4429, 4434, + 6361, 4428, 4439, 4441, 4432, 4442, 4443, 4445, 4433, 6361, + + 4448, 4451, 4447, 4466, 4458, 4467, 4463, 4465, 4469, 4471, + 4472, 4473, 4474, 4476, 4477, 4478, 4487, 4495, 4493, 6361, + 4480, 6361, 4490, 4501, 4504, 4505, 4491, 4488, 6361, 4503, + 4507, 4512, 4509, 4513, 6361, 4515, 4516, 4518, 4517, 6361, + 4525, 4521, 4520, 4530, 4535, 4536, 6361, 4539, 4541, 4543, + 4551, 4552, 4547, 4550, 4553, 4554, 4557, 4558, 4559, 4560, + 4568, 4563, 4565, 6361, 4571, 4573, 4580, 4581, 4574, 4582, + 4564, 4585, 4588, 4590, 6361, 4592, 4593, 4594, 4595, 4596, + 4598, 4599, 4607, 4602, 4605, 4606, 4610, 4611, 6361, 4612, + 4617, 4616, 4626, 4619, 4628, 6361, 6361, 4622, 4634, 4637, + + 4629, 4638, 6361, 6361, 4641, 4648, 4631, 4647, 4644, 6361, + 6361, 4650, 6361, 4651, 6361, 4652, 4654, 6361, 6361, 4656, + 4657, 4658, 4659, 4668, 6361, 4672, 6361, 4679, 4674, 4660, + 4662, 4677, 6361, 4678, 4680, 4686, 6361, 4681, 4693, 4688, + 4689, 6361, 4695, 4696, 4691, 4698, 6361, 4700, 4703, 4707, + 4705, 4708, 4709, 4711, 4715, 4718, 4719, 4720, 4721, 4722, + 4734, 4736, 4738, 4740, 4730, 4726, 4743, 4745, 4749, 4747, + 4751, 4752, 4753, 4755, 4756, 4758, 4761, 4762, 4764, 4767, + 4765, 4766, 4778, 4768, 4770, 4780, 4782, 4771, 4781, 4785, + 4784, 4789, 4787, 4792, 4795, 4794, 4796, 6361, 4800, 4802, + + 4805, 4807, 4806, 4812, 4814, 4816, 4822, 4825, 6361, 4829, + 6361, 4831, 4823, 4827, 4833, 4834, 6361, 4835, 4836, 4837, + 4840, 4839, 4842, 4843, 4844, 4847, 4850, 4856, 6361, 4867, + 4858, 4851, 4861, 4875, 6361, 4869, 4877, 4853, 4863, 4879, + 4880, 4882, 4883, 4887, 4885, 4889, 4891, 4884, 4892, 4894, + 4897, 4905, 4906, 4907, 4908, 4909, 4910, 4911, 4912, 4913, + 4919, 4921, 4926, 6361, 4916, 6361, 4920, 4928, 4932, 4933, + 4934, 4936, 4938, 6361, 6361, 4940, 4942, 4949, 4937, 4941, + 4951, 4724, 6361, 4943, 4961, 4955, 4962, 6361, 4963, 4946, + 4964, 4968, 6361, 4969, 4970, 4972, 4974, 4971, 4983, 4980, + + 4977, 4987, 4988, 4992, 6361, 6361, 6361, 6361, 4993, 4989, + 4996, 4997, 4999, 4998, 5004, 5002, 5005, 6361, 5009, 6361, + 6361, 5014, 5016, 5015, 5017, 5018, 5006, 5023, 5027, 6361, + 5024, 5028, 5031, 5030, 5038, 5041, 5043, 5044, 5047, 5046, + 5048, 5055, 5053, 5056, 5050, 5054, 5061, 5063, 6361, 6361, + 5067, 5069, 5070, 5077, 5074, 5078, 5072, 5081, 5084, 5082, + 5085, 5089, 5090, 5091, 5099, 5101, 5092, 5096, 6361, 5100, + 5105, 5103, 6361, 5102, 6361, 5111, 5113, 5109, 5115, 5117, + 5120, 5121, 5123, 6361, 6361, 5125, 5124, 6361, 6361, 5131, + 5133, 5135, 5137, 5138, 5134, 5140, 5142, 5139, 6361, 5144, + + 6361, 5145, 5147, 5149, 5146, 5162, 5166, 5167, 5164, 5168, + 5169, 6361, 5170, 5172, 6361, 5173, 5175, 5178, 6361, 5180, + 5182, 5184, 5187, 6361, 5191, 5188, 5194, 6361, 5196, 6361, + 5197, 5198, 5201, 5208, 6361, 5204, 5205, 6361, 5210, 5212, + 5215, 5214, 6361, 5216, 6361, 5219, 5221, 5222, 5226, 5228, + 5230, 5231, 5232, 5233, 5241, 5237, 5238, 6361, 6361, 135, + 5246, 5248, 5249, 5252, 5251, 5259, 5254, 5256, 5262, 6361, + 6361, 5258, 6361, 5265, 5264, 6361, 5255, 5274, 5275, 5266, + 5281, 5270, 5278, 5268, 5290, 5285, 5291, 5287, 5292, 5295, + 5306, 5310, 5293, 5297, 5307, 5313, 5315, 5317, 5319, 5320, + + 5321, 5322, 5323, 5324, 5327, 5326, 5330, 6361, 5332, 5334, + 5333, 6361, 5339, 5340, 5344, 5349, 6361, 5353, 5355, 5356, + 5357, 6361, 5345, 5359, 5367, 5360, 5361, 5374, 5362, 5370, + 5377, 6361, 6361, 6361, 5378, 5385, 6361, 5387, 5380, 5372, + 5382, 6361, 5389, 5390, 6361, 6361, 5388, 5392, 5391, 5399, + 6361, 5395, 6361, 5396, 6361, 5403, 5404, 5405, 5410, 6361, + 5415, 5421, 6361, 5424, 5427, 5429, 5430, 5412, 5414, 5431, + 6361, 5440, 5437, 5438, 5445, 5435, 5446, 5441, 5447, 5448, + 5455, 5450, 5457, 6361, 5459, 5460, 5464, 5467, 5451, 5461, + 5471, 6361, 5454, 6361, 5473, 6361, 5477, 5478, 5479, 5480, + + 5481, 5482, 5484, 5488, 5485, 5487, 5495, 5499, 5496, 6361, + 5503, 5507, 6361, 5504, 6361, 5509, 6361, 5500, 5510, 5511, + 5512, 6361, 5514, 5518, 5519, 5520, 6361, 5522, 5529, 5528, + 5531, 6361, 6361, 5524, 5540, 5532, 5533, 5536, 5546, 5541, + 5549, 5551, 5550, 5552, 5560, 5556, 5553, 5557, 5564, 5566, + 5570, 6361, 6361, 6361, 5567, 5558, 5580, 5582, 5573, 5589, + 5584, 6361, 5585, 5587, 5588, 5591, 5598, 5594, 5596, 6361, + 5597, 5599, 5600, 5601, 5604, 5605, 5606, 5607, 6361, 5619, + 5621, 5608, 5615, 5623, 5627, 5631, 5633, 5634, 5641, 5637, + 6361, 5639, 6361, 6361, 5636, 6361, 5640, 5643, 5644, 5645, + + 6361, 5648, 5649, 5650, 5652, 5654, 5657, 6361, 5664, 5651, + 5659, 5667, 6361, 6361, 5669, 6361, 5674, 5675, 5676, 5683, + 5679, 5681, 5685, 5682, 6361, 5686, 5688, 5692, 5693, 5694, + 6361, 5695, 5696, 5698, 5699, 6361, 5702, 5701, 5704, 5707, + 5709, 6361, 5711, 5710, 5729, 5726, 6361, 5712, 5724, 5725, + 6361, 6361, 5734, 5736, 5737, 6361, 6361, 6361, 5739, 5740, + 5743, 6361, 5746, 5750, 5754, 5758, 5749, 6361, 5761, 5757, + 5762, 6361, 6361, 5763, 5764, 5765, 5767, 6361, 6361, 5768, + 5771, 5769, 5772, 5774, 6361, 5777, 5779, 5785, 5791, 5797, + 5787, 5794, 5792, 5806, 5809, 5782, 5798, 5808, 5810, 5811, + + 5812, 5818, 5820, 5819, 5822, 5824, 5826, 5827, 6361, 6361, + 5834, 5836, 5828, 6361, 6361, 5839, 5843, 5845, 5847, 5849, + 5851, 5853, 6361, 5854, 5856, 5857, 5858, 5840, 6361, 5859, + 5862, 5864, 5867, 5865, 5868, 5871, 5873, 6361, 6361, 5874, + 5881, 5875, 5882, 5876, 6361, 5885, 5893, 5889, 5890, 5891, + 5896, 5897, 6361, 5898, 5899, 6361, 6361, 5902, 5900, 6361, + 6361, 5905, 6361, 6361, 6361, 6361, 6361, 6361, 6361, 5909, + 6361, 5907, 5917, 5919, 5922, 6361, 5911, 5923, 5924, 5925, + 5926, 6361, 5927, 5930, 5933, 5416, 5929, 5935, 5939, 5937, + 5942, 5943, 5946, 5947, 5948, 5949, 5953, 5951, 5963, 5954, + + 5964, 6361, 6361, 6361, 5965, 5955, 5967, 5973, 5977, 5980, + 5984, 5986, 5970, 5978, 5987, 5988, 5991, 5992, 5994, 6001, + 5997, 6000, 5999, 6003, 6005, 6007, 6014, 6008, 6010, 6016, + 6361, 6018, 6361, 6019, 6361, 6361, 6021, 6026, 6022, 6024, + 6034, 6038, 6031, 6035, 6036, 6039, 6041, 6361, 6047, 6361, + 6361, 6042, 6049, 6361, 6050, 6052, 6361, 6051, 6053, 6054, + 6057, 6059, 6060, 6061, 6062, 6075, 6361, 6361, 6065, 6068, + 6076, 6078, 6082, 6089, 6080, 6088, 6091, 6092, 6084, 6100, + 6361, 6099, 6101, 6105, 6361, 6107, 6090, 6108, 6102, 6110, + 6118, 6113, 6114, 6361, 6116, 6361, 6120, 6122, 6123, 6124, + + 6125, 6126, 6135, 6133, 6137, 6361, 6130, 6140, 6142, 6145, + 6147, 6149, 6151, 6152, 6160, 6157, 6153, 6164, 6165, 6166, + 6167, 6169, 6168, 6361, 6176, 6170, 6361, 6177, 6178, 6179, + 6180, 6184, 6361, 6191, 6181, 6188, 6192, 6195, 6196, 6361, + 6202, 6205, 6206, 6361, 6209, 6361, 6361, 6210, 6197, 6208, + 6212, 6218, 6361, 6361, 6361, 6241, 6248, 6255, 6262, 6269, + 6276, 6283, 88, 6290, 6297, 6304, 6311, 6318, 6325, 6332, + 6339, 6346, 6353 } ; -static const flex_int16_t yy_def[3271] = +static const flex_int16_t yy_def[3274] = { 0, - 3252, 1, 3253, 3253, 3254, 3254, 3255, 3255, 3256, 3256, - 3257, 3257, 3258, 3258, 3259, 3259, 3252, 3260, 3252, 3252, - 3252, 3252, 3261, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3262, 3252, 3252, 3252, - 3262, 3263, 3252, 3252, 3252, 3263, 3264, 3252, 3252, 3252, - 3252, 3264, 3265, 3252, 3252, 3252, 3265, 3266, 3252, 3267, - 3252, 3266, 3266, 3268, 3252, 3252, 3252, 3252, 3268, 3269, - 3252, 3252, 3252, 3269, 3260, 3260, 3252, 3270, 3261, 3270, - 3261, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3262, 3262, 3263, - 3263, 3264, 3264, 3252, 3265, 3265, 3266, 3266, 3267, 3267, - 3266, 3268, 3268, 3252, 3269, 3269, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3266, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3266, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3266, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, - 3252, 3260, 3252, 3252, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3266, 3266, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3266, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3266, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3266, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3266, 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3252, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3252, 3260, 3260, 3260, 3260, 3266, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, - - 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3252, - 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3266, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3252, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, - 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3252, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3252, 3252, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3252, 3260, 3260, 3260, - 3260, 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3252, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3252, 3252, 3260, 3260, 3260, 3252, 3252, 3252, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, - 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3252, 3252, 3260, 3252, - 3252, 3260, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3260, - 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3252, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3252, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3252, - 3252, 0, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252 + 3255, 1, 3256, 3256, 3257, 3257, 3258, 3258, 3259, 3259, + 3260, 3260, 3261, 3261, 3262, 3262, 3255, 3263, 3255, 3255, + 3255, 3255, 3264, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3265, 3255, 3255, 3255, + 3265, 3266, 3255, 3255, 3255, 3266, 3267, 3255, 3255, 3255, + 3255, 3267, 3268, 3255, 3255, 3255, 3268, 3269, 3255, 3270, + 3255, 3269, 3269, 3271, 3255, 3255, 3255, 3255, 3271, 3272, + 3255, 3255, 3255, 3272, 3263, 3263, 3255, 3273, 3264, 3273, + 3264, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3265, 3265, 3266, + 3266, 3267, 3267, 3255, 3268, 3268, 3269, 3269, 3270, 3270, + 3269, 3271, 3271, 3255, 3272, 3272, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3269, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3269, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3269, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3269, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3255, + 3255, 3263, 3255, 3255, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3269, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3255, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3269, 3269, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3269, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3269, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3269, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3255, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3269, 3263, 3255, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3255, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3263, 3255, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3269, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3255, 3263, 3263, 3263, 3263, 3269, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3263, 3263, 3263, + + 3263, 3263, 3255, 3255, 3263, 3263, 3263, 3263, 3263, 3255, + 3255, 3263, 3255, 3263, 3255, 3263, 3263, 3255, 3255, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3269, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3255, 3255, 3255, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3255, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3269, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3255, 3263, 3263, 3255, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3255, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3255, 3263, 3255, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3269, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3255, 3263, 3255, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3255, 3255, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3255, 3255, 3263, 3263, 3263, 3263, + 3255, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3255, 3263, 3255, 3263, 3255, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3255, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3255, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3255, 3255, 3263, 3255, 3263, 3263, 3263, 3263, + + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3255, 3255, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3255, 3255, 3263, 3263, 3263, 3255, 3255, 3255, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3255, 3255, 3263, 3263, 3263, 3263, 3255, 3255, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, + 3263, 3263, 3263, 3255, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3255, 3255, 3263, 3263, 3255, + 3255, 3263, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3263, + 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + + 3263, 3255, 3255, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3255, 3263, 3255, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3255, + 3255, 3263, 3263, 3255, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, + + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3255, 3263, 3255, 3255, 3263, 3263, 3263, + 3263, 3263, 3255, 3255, 0, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255 } ; -static const flex_int16_t yy_nxt[6406] = +static const flex_int16_t yy_nxt[6402] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1840,7 +1842,7 @@ static const flex_int16_t yy_nxt[6406] = 86, 1684, 86, 1686, 86, 1683, 1687, 86, 1685, 86, 1688, 86, 86, 1692, 86, 86, 1693, 86, 1690, 1691, 86, 1689, 86, 1694, 86, 86, 86, 1699, 1698, 86, - 86, 1695, 86, 86, 3252, 1706, 86, 86, 1696, 1697, + 86, 1695, 86, 86, 3255, 1706, 86, 86, 1696, 1697, 1703, 86, 1701, 1704, 86, 86, 86, 1700, 1708, 1707, 86, 1711, 1702, 86, 1723, 1705, 1713, 1715, 1712, 1710, 1714, 86, 1716, 86, 1709, 86, 86, 1718, 86, 1720, @@ -1861,7 +1863,7 @@ static const flex_int16_t yy_nxt[6406] = 86, 1780, 1781, 1775, 86, 1789, 86, 1779, 86, 1784, 86, 86, 86, 1782, 1783, 1786, 86, 1788, 1787, 1790, 86, 86, 86, 1785, 86, 1792, 86, 86, 86, 1799, - 1791, 86, 86, 3252, 1793, 1794, 1796, 86, 1795, 86, + 1791, 86, 86, 3255, 1793, 1794, 1796, 86, 1795, 86, 1803, 1801, 1802, 86, 86, 1798, 86, 1800, 86, 1807, 86, 1797, 1805, 1811, 1804, 1806, 86, 86, 1812, 86, 86, 86, 86, 86, 1808, 1817, 1816, 86, 1810, 1809, @@ -1869,7 +1871,7 @@ static const flex_int16_t yy_nxt[6406] = 1818, 86, 1815, 1821, 86, 86, 1826, 1824, 86, 1827, 1823, 1828, 86, 1830, 86, 86, 86, 1829, 86, 86, - 86, 3252, 1831, 86, 86, 86, 1834, 86, 86, 1835, + 86, 3255, 1831, 86, 86, 86, 1834, 86, 86, 1835, 1840, 86, 1842, 86, 1832, 1833, 1836, 1837, 86, 1838, 1843, 1839, 86, 1845, 86, 86, 86, 86, 1846, 86, 1850, 1847, 1841, 86, 86, 1844, 86, 1854, 86, 86, @@ -1885,322 +1887,322 @@ static const flex_int16_t yy_nxt[6406] = 1893, 86, 1894, 86, 86, 86, 86, 1895, 1898, 86, 1889, 1896, 1891, 1890, 1892, 1899, 1897, 86, 86, 86, 1905, 1907, 1902, 1904, 1901, 1906, 86, 86, 1900, 1903, - 1908, 86, 86, 86, 86, 86, 1913, 3252, 1909, 86, - 86, 86, 1916, 1917, 86, 1918, 86, 86, 1911, 1920, - 86, 1910, 86, 1912, 1914, 1919, 1915, 86, 1921, 86, - - 1922, 1924, 86, 1925, 1926, 1928, 86, 86, 1923, 1927, - 86, 86, 1930, 86, 1933, 86, 1932, 1931, 86, 86, - 86, 86, 1936, 86, 86, 1929, 1935, 86, 1939, 1938, - 86, 1941, 86, 86, 86, 1940, 1948, 86, 86, 1934, - 86, 1937, 86, 1950, 1942, 1943, 1944, 86, 1951, 86, - 86, 1945, 1954, 1946, 1947, 1953, 86, 86, 1949, 1957, - 86, 1952, 86, 86, 86, 86, 86, 1955, 86, 1958, - 1961, 86, 1956, 86, 1963, 86, 86, 1966, 1967, 86, - 1969, 86, 1959, 86, 1960, 86, 1964, 86, 1968, 86, - 1962, 86, 1974, 86, 1971, 86, 1972, 1965, 86, 1975, - - 86, 86, 1978, 86, 86, 86, 1981, 86, 1970, 86, - 1973, 1985, 1976, 1979, 1984, 86, 1977, 86, 86, 1980, - 1988, 1989, 86, 1983, 86, 1987, 86, 86, 86, 1982, - 1990, 86, 86, 1991, 86, 1986, 86, 86, 86, 1996, - 86, 1992, 1993, 1994, 86, 1999, 1995, 2000, 2001, 86, - 86, 86, 86, 86, 86, 1997, 2004, 86, 2009, 86, - 2002, 86, 2008, 86, 1998, 2003, 86, 86, 86, 2006, - 86, 2013, 2005, 2007, 2014, 2016, 86, 86, 2011, 2015, - 2010, 2017, 86, 2020, 86, 2012, 86, 86, 2027, 86, - 86, 86, 86, 2018, 86, 2024, 86, 86, 2019, 86, - - 2032, 2022, 2029, 2030, 86, 86, 2031, 2021, 2023, 86, - 86, 2025, 2026, 86, 2028, 2037, 86, 2039, 2033, 2038, - 86, 2034, 2040, 86, 2041, 2042, 2035, 86, 86, 86, - 86, 86, 2046, 2036, 2044, 86, 86, 86, 86, 86, - 2045, 2048, 86, 2051, 86, 2053, 86, 2047, 2049, 86, - 168, 86, 86, 2043, 2055, 2054, 86, 86, 2056, 86, - 2059, 2058, 86, 2060, 2050, 3252, 2052, 2061, 86, 2062, - 86, 2057, 2064, 86, 86, 86, 86, 86, 86, 2063, - 2065, 2066, 2068, 2067, 86, 86, 86, 2071, 2070, 2069, - 86, 2072, 86, 86, 86, 2076, 86, 86, 2073, 2075, - - 86, 86, 2077, 86, 2074, 2078, 2079, 86, 2081, 86, - 2080, 86, 2083, 86, 86, 86, 2088, 2082, 2086, 86, - 2087, 86, 86, 86, 86, 86, 86, 86, 2093, 2084, - 2090, 86, 2085, 86, 2097, 2096, 86, 2089, 2092, 2094, - 2099, 2091, 86, 2095, 86, 2098, 86, 86, 2100, 2104, - 86, 2102, 86, 86, 86, 2105, 86, 86, 86, 2110, - 2103, 86, 2112, 2101, 86, 86, 2113, 2114, 86, 2106, - 2107, 2108, 2109, 86, 2111, 2116, 86, 86, 2117, 86, - 2119, 2115, 86, 86, 86, 2118, 86, 86, 2123, 2120, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 2124, - - 86, 86, 86, 2131, 2122, 2121, 2126, 2127, 2128, 2136, - 86, 2137, 2125, 2130, 2135, 86, 2132, 86, 2129, 86, - 2133, 86, 2139, 86, 2134, 86, 2140, 2143, 2142, 86, - 86, 86, 86, 86, 86, 2138, 2145, 2141, 86, 2146, - 86, 86, 2147, 2149, 86, 86, 2151, 2144, 2148, 86, - 2150, 2153, 2155, 86, 86, 2154, 86, 86, 86, 2152, - 2158, 2157, 2159, 86, 86, 86, 86, 2163, 2160, 86, - 2164, 2156, 2161, 86, 86, 86, 86, 2166, 86, 2165, - 2169, 86, 86, 2170, 2162, 86, 2173, 86, 3252, 2168, - 2174, 2171, 86, 2167, 86, 86, 2175, 86, 2172, 2179, - - 86, 86, 2181, 2177, 86, 2176, 86, 2182, 86, 2180, - 86, 2178, 86, 2183, 86, 2184, 2188, 86, 86, 86, - 86, 2186, 2190, 86, 2187, 86, 2185, 2191, 86, 2192, - 2193, 2194, 86, 86, 86, 86, 2197, 2195, 2189, 2196, - 2200, 86, 2199, 86, 86, 2198, 86, 86, 86, 86, - 86, 86, 86, 2201, 86, 86, 2209, 2210, 2206, 2207, - 2203, 2202, 2204, 2211, 2205, 86, 86, 86, 86, 86, - 2208, 2212, 2214, 86, 86, 2220, 86, 168, 2215, 86, - 2222, 86, 2216, 2219, 2213, 86, 2217, 86, 2221, 2224, - 86, 2228, 2223, 86, 2218, 2225, 2229, 86, 2230, 2227, - - 2226, 2231, 86, 86, 86, 2232, 86, 86, 2235, 86, - 86, 2233, 86, 2234, 86, 2236, 2240, 86, 2242, 2239, - 86, 2241, 2244, 86, 2246, 86, 86, 86, 86, 2237, - 2243, 2245, 2247, 86, 86, 2249, 86, 86, 86, 2248, - 2238, 86, 2250, 86, 86, 2251, 86, 2252, 86, 2255, - 86, 86, 2254, 2258, 86, 86, 2253, 86, 2264, 86, - 2256, 2257, 2262, 86, 86, 86, 86, 2260, 2259, 2265, - 86, 2267, 86, 86, 2261, 86, 86, 2263, 2266, 2269, - 2272, 86, 2270, 2275, 86, 86, 86, 86, 86, 2273, - 2268, 86, 2271, 2276, 86, 86, 86, 86, 86, 2274, - - 86, 86, 86, 2291, 2287, 2277, 2278, 86, 2283, 2288, - 86, 2279, 86, 2281, 2286, 2280, 2282, 2285, 2284, 2289, - 86, 86, 86, 2292, 86, 2294, 2290, 86, 2295, 2296, - 86, 2297, 86, 86, 86, 2300, 2293, 86, 86, 2298, - 2303, 86, 2304, 86, 86, 86, 2299, 2301, 86, 2305, - 2302, 86, 86, 2306, 2310, 86, 86, 2307, 2311, 86, - 2313, 86, 86, 2309, 86, 2308, 2315, 86, 86, 2317, - 86, 2312, 2318, 86, 2314, 2319, 86, 2316, 86, 2321, - 86, 86, 2320, 2325, 86, 86, 2324, 2327, 86, 86, - 86, 86, 2322, 86, 2330, 86, 2329, 86, 2331, 2323, - - 2333, 86, 86, 86, 2326, 2337, 86, 2328, 86, 86, - 2335, 86, 2334, 2332, 86, 2341, 2342, 86, 86, 86, - 86, 2336, 86, 2338, 2340, 2344, 2347, 86, 86, 86, - 86, 2339, 86, 2343, 2345, 2349, 86, 2346, 2348, 86, - 2354, 86, 86, 2350, 86, 86, 2356, 86, 2351, 86, - 2352, 2355, 2357, 2360, 86, 86, 86, 86, 86, 2361, - 2362, 2366, 2353, 86, 86, 3252, 86, 2358, 2365, 2359, - 2363, 2364, 86, 86, 2371, 2373, 86, 2368, 2369, 2370, - 86, 86, 86, 2367, 2372, 86, 86, 2374, 86, 2377, - 2375, 2376, 86, 86, 86, 2378, 86, 2379, 2384, 86, - - 2383, 2385, 2380, 2381, 86, 2382, 86, 86, 86, 2390, - 2386, 86, 2389, 86, 2391, 86, 168, 2388, 86, 2387, - 86, 2393, 2392, 86, 2398, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 2405, 86, 2396, 2400, 2394, 2397, - 2395, 2399, 2401, 2402, 2403, 2404, 86, 2408, 2409, 86, - 86, 2406, 2407, 86, 2410, 2411, 86, 86, 86, 2414, - 2412, 2415, 86, 2413, 2418, 86, 86, 86, 2417, 86, - 86, 2416, 86, 2419, 86, 86, 2423, 2424, 2420, 86, - 86, 86, 2428, 86, 2421, 86, 2426, 2429, 86, 2427, - 86, 2431, 86, 2422, 2425, 2430, 2432, 86, 86, 86, - - 86, 2433, 86, 2435, 2436, 86, 86, 2438, 86, 86, - 86, 86, 86, 2437, 2442, 2445, 86, 2444, 2434, 86, - 86, 86, 2446, 2441, 86, 86, 2439, 86, 2440, 2449, - 86, 2443, 86, 86, 2454, 86, 86, 2447, 2453, 2448, - 86, 86, 2451, 2452, 2455, 86, 2450, 2456, 2525, 2457, - 86, 2458, 86, 86, 2461, 2459, 86, 2463, 2460, 86, - 2462, 2465, 86, 86, 86, 2467, 86, 86, 86, 86, - 86, 2464, 86, 2466, 2471, 86, 86, 2475, 86, 86, - 2473, 2474, 2469, 2476, 86, 2468, 2470, 2477, 86, 2478, - 86, 86, 86, 86, 86, 2479, 2481, 2486, 2472, 2484, - - 86, 86, 86, 86, 86, 86, 2483, 2489, 86, 86, - 2485, 2482, 2480, 86, 86, 2493, 2490, 2494, 86, 2488, - 2487, 86, 86, 86, 2491, 86, 2495, 2492, 86, 86, - 2498, 2499, 2497, 86, 86, 86, 86, 3252, 86, 86, - 2496, 2503, 2500, 2505, 2506, 86, 2502, 2501, 2507, 86, - 2508, 86, 2509, 86, 86, 2504, 86, 2511, 86, 2513, - 86, 2512, 86, 2514, 86, 86, 2510, 86, 2519, 86, - 86, 86, 2515, 2521, 86, 86, 2516, 2522, 86, 86, - 86, 86, 2523, 2518, 86, 2517, 2528, 2524, 86, 2520, - 86, 2526, 2531, 86, 86, 86, 86, 86, 86, 2532, - - 2527, 168, 86, 2539, 2529, 86, 86, 86, 2530, 2535, - 86, 86, 2537, 2538, 2540, 2534, 86, 86, 2550, 86, - 2533, 2536, 2541, 86, 2543, 2542, 2546, 86, 86, 86, - 86, 2547, 2548, 2544, 2549, 2551, 86, 86, 2552, 2545, - 86, 2553, 86, 2554, 86, 86, 2555, 86, 86, 2557, - 86, 86, 86, 86, 86, 2556, 2565, 86, 86, 86, - 2558, 2563, 86, 86, 2569, 86, 2560, 2559, 2570, 86, - 86, 2562, 2561, 2564, 2571, 86, 2567, 2566, 86, 2573, - 2568, 2574, 86, 86, 2575, 2576, 86, 2572, 86, 86, - 86, 86, 86, 3252, 86, 2579, 2577, 2585, 86, 2586, - - 86, 2578, 86, 86, 2580, 86, 86, 86, 2581, 2582, - 2583, 2584, 2588, 2589, 86, 2590, 86, 2591, 86, 86, - 2587, 2592, 2593, 86, 2594, 86, 86, 86, 86, 2599, - 2595, 2598, 2600, 86, 86, 86, 2601, 86, 2596, 2597, - 2602, 86, 86, 86, 2604, 86, 86, 2603, 86, 86, - 2608, 3252, 86, 86, 2606, 2612, 2605, 2613, 86, 86, - 2616, 86, 86, 2607, 86, 86, 2609, 2610, 2614, 2611, - 86, 86, 2620, 86, 2617, 2619, 86, 2615, 2621, 2618, - 86, 86, 2623, 2625, 86, 86, 86, 2629, 86, 86, - 2628, 2622, 86, 2626, 2627, 2631, 86, 2632, 86, 86, - - 2624, 86, 2636, 86, 86, 2637, 86, 2633, 2630, 2639, - 86, 86, 86, 2635, 86, 2634, 86, 86, 2644, 86, - 2646, 86, 86, 2642, 2640, 2641, 2643, 2647, 2638, 86, - 86, 2645, 86, 86, 2648, 86, 86, 2650, 86, 3252, - 86, 2651, 86, 86, 2649, 2653, 2654, 2656, 2657, 86, - 2659, 86, 2660, 86, 2652, 2655, 2661, 168, 86, 86, - 86, 86, 2666, 3252, 2658, 2662, 2663, 86, 86, 86, - 2668, 86, 2667, 3252, 86, 2671, 86, 2664, 2665, 2670, - 2672, 86, 86, 2674, 86, 86, 2669, 2676, 2675, 86, - 86, 86, 2677, 86, 2678, 2673, 2679, 2681, 86, 86, - - 86, 86, 2682, 86, 2680, 2683, 86, 86, 2684, 2688, - 86, 2689, 86, 86, 2686, 86, 2685, 86, 2690, 86, - 86, 86, 2691, 86, 2694, 2693, 86, 86, 2687, 86, - 2698, 86, 2696, 86, 2697, 2692, 2699, 86, 2695, 2704, - 2700, 86, 2701, 86, 2702, 86, 2703, 2705, 86, 86, - 86, 86, 2709, 86, 86, 86, 86, 2713, 86, 2711, - 86, 86, 86, 2718, 86, 86, 2717, 2706, 3252, 2707, - 2708, 2712, 2720, 2710, 2714, 2715, 2721, 2722, 86, 2723, - 86, 2716, 86, 86, 86, 86, 86, 86, 86, 86, - 2719, 2725, 2724, 2728, 2726, 86, 86, 2731, 86, 86, - - 2727, 3252, 2729, 2733, 86, 2734, 86, 2735, 86, 86, - 2730, 86, 86, 2736, 2738, 86, 2732, 2737, 86, 2739, - 86, 2742, 86, 2740, 86, 2745, 2743, 86, 2746, 86, - 86, 2744, 2741, 2747, 86, 86, 86, 86, 2748, 86, - 2750, 2752, 86, 2749, 86, 2753, 2754, 86, 2756, 86, - 86, 86, 2755, 2760, 2761, 86, 2751, 2758, 86, 86, - 86, 2763, 2762, 2757, 86, 2759, 2764, 86, 86, 86, - 2769, 86, 86, 86, 86, 2768, 86, 2771, 2772, 86, - 86, 86, 2774, 2765, 2766, 2773, 86, 86, 2767, 2775, - 2777, 86, 2778, 86, 86, 86, 2770, 2776, 2779, 2780, - - 2781, 86, 2785, 86, 86, 86, 86, 86, 2787, 86, - 86, 2782, 86, 2792, 2783, 2784, 2788, 2791, 2786, 2793, - 2789, 2796, 86, 86, 2794, 86, 2790, 86, 2797, 86, - 2798, 2795, 86, 2799, 86, 2800, 86, 86, 86, 2801, - 86, 2802, 86, 86, 86, 86, 86, 2806, 2810, 86, - 86, 86, 2807, 2811, 2813, 86, 86, 2803, 2814, 2805, - 2815, 86, 2812, 86, 2804, 2808, 2809, 86, 2816, 2817, - 86, 86, 86, 86, 2821, 86, 2818, 2822, 86, 2823, - 2819, 2820, 2824, 86, 2826, 86, 86, 86, 86, 2827, - 86, 2830, 86, 2831, 2829, 2832, 86, 86, 2825, 2828, - - 2833, 86, 86, 86, 86, 86, 2834, 86, 86, 2842, - 86, 86, 2837, 86, 86, 86, 2838, 2840, 2845, 2846, - 2836, 86, 2835, 2843, 86, 2847, 86, 2841, 86, 86, - 2839, 2844, 86, 2849, 2880, 2848, 86, 2850, 2852, 86, - 2851, 2853, 86, 2854, 86, 86, 86, 86, 86, 2856, - 2859, 2857, 2858, 2860, 2855, 86, 86, 2862, 86, 86, - 2861, 86, 86, 86, 2863, 86, 2868, 2866, 2870, 86, - 86, 2864, 86, 86, 2871, 86, 86, 2874, 2872, 86, - 2873, 2867, 2865, 86, 86, 86, 2879, 86, 86, 86, - 2869, 86, 86, 2882, 86, 86, 86, 86, 2875, 2876, - - 2877, 2881, 2886, 2878, 2883, 86, 2888, 2884, 86, 86, - 2887, 2885, 2891, 86, 2889, 2893, 86, 2894, 86, 86, - 2896, 86, 86, 86, 86, 86, 2901, 86, 2892, 2900, - 86, 86, 86, 86, 2890, 86, 2905, 86, 2897, 2898, - 2895, 2899, 2908, 86, 86, 86, 2910, 2906, 86, 86, - 2902, 2904, 86, 2911, 2903, 86, 2907, 2913, 86, 2914, - 86, 2916, 86, 86, 2909, 86, 2918, 2912, 2921, 2915, - 86, 86, 2919, 86, 86, 2925, 86, 86, 86, 2927, - 2926, 2917, 86, 2923, 86, 2920, 2930, 2931, 86, 2922, - 2933, 86, 86, 2924, 2928, 86, 86, 86, 2932, 2936, - - 86, 86, 2935, 86, 2929, 2939, 2937, 86, 86, 2934, - 86, 86, 2942, 86, 86, 86, 86, 2947, 86, 86, - 2943, 86, 2938, 2949, 2940, 2941, 2951, 86, 2944, 2946, - 2950, 2952, 86, 86, 2948, 86, 86, 86, 2953, 2945, - 86, 2955, 2956, 86, 2957, 86, 2958, 86, 2960, 2954, - 86, 2962, 86, 86, 86, 2961, 86, 86, 86, 2963, - 86, 2967, 86, 2959, 2968, 86, 86, 86, 2972, 86, - 2973, 86, 2969, 86, 2974, 2964, 2971, 3252, 2965, 2966, - 86, 86, 2970, 86, 2978, 86, 2975, 2982, 2977, 2979, - 86, 86, 2976, 86, 86, 2981, 2980, 86, 2985, 86, - - 86, 86, 86, 86, 86, 2984, 2983, 2986, 2989, 86, - 86, 86, 86, 86, 86, 2991, 2990, 86, 2992, 86, - 2987, 2988, 86, 86, 86, 86, 86, 86, 3084, 3001, - 2993, 3002, 2994, 2995, 3003, 2996, 2998, 2999, 2997, 3004, - 86, 86, 86, 86, 3000, 86, 3005, 3006, 3007, 3009, - 86, 3010, 86, 3008, 86, 86, 3014, 86, 3011, 86, - 3012, 3013, 3015, 86, 3016, 3017, 86, 86, 3018, 3019, - 3022, 86, 3020, 3021, 86, 86, 3023, 86, 86, 86, - 86, 86, 3029, 86, 3030, 86, 3028, 86, 86, 3032, - 86, 86, 3024, 3025, 3031, 86, 3252, 3033, 3026, 86, - - 3027, 86, 3037, 86, 3036, 3034, 3038, 86, 3041, 3035, - 3039, 86, 86, 3044, 3040, 86, 3046, 86, 3045, 86, - 86, 3042, 86, 86, 3043, 86, 86, 86, 3050, 3054, - 3051, 86, 3048, 3053, 86, 86, 3062, 3055, 3056, 86, - 3047, 3049, 3057, 86, 86, 3052, 3058, 86, 3252, 3059, - 3060, 86, 3061, 86, 3063, 86, 3064, 86, 3065, 86, - 3066, 86, 3067, 86, 3068, 86, 3069, 86, 86, 3071, - 86, 86, 86, 86, 86, 86, 86, 3070, 3076, 86, - 3072, 86, 86, 86, 3073, 86, 3080, 86, 3079, 3077, - 3082, 86, 86, 3074, 3075, 3078, 3081, 86, 3086, 86, - - 3089, 3083, 3088, 86, 86, 86, 86, 86, 86, 3091, - 3087, 86, 86, 3085, 3095, 86, 86, 3090, 86, 86, - 86, 3096, 3099, 3252, 3092, 3093, 86, 3094, 3101, 86, - 3097, 3100, 3102, 86, 3103, 86, 86, 86, 86, 86, - 86, 3106, 3098, 3104, 86, 3105, 3107, 86, 86, 3111, - 3112, 3110, 3108, 86, 86, 3114, 86, 86, 86, 86, - 3115, 86, 3109, 86, 86, 86, 86, 86, 3113, 86, - 3121, 3124, 86, 3118, 3126, 3116, 3117, 3122, 3120, 86, - 3129, 86, 86, 86, 3119, 3123, 3127, 3125, 3131, 86, - 86, 3130, 86, 3132, 3133, 86, 3134, 86, 86, 3128, - - 86, 3137, 3135, 86, 86, 3138, 86, 3142, 3139, 86, - 3136, 86, 86, 86, 86, 86, 3145, 3147, 86, 3148, - 86, 3141, 86, 3143, 3144, 3151, 86, 86, 86, 3140, - 3149, 3154, 86, 86, 3146, 86, 3155, 86, 3158, 86, - 86, 3150, 3152, 3159, 86, 3156, 3153, 86, 86, 86, - 86, 86, 3157, 3160, 86, 3163, 3164, 86, 86, 3162, - 3161, 3165, 86, 86, 86, 86, 86, 3169, 3168, 3166, - 3171, 3167, 86, 86, 86, 86, 86, 86, 3170, 3173, - 3176, 3177, 86, 3172, 3184, 3174, 3178, 86, 3182, 86, - 86, 86, 3175, 86, 3179, 3180, 3183, 86, 3185, 86, - - 86, 3181, 86, 3190, 3186, 3187, 86, 3188, 86, 86, - 3191, 86, 3189, 3192, 3193, 86, 86, 86, 86, 86, - 3194, 3199, 86, 86, 3196, 3195, 3252, 86, 86, 3202, - 3203, 86, 86, 86, 86, 86, 3201, 3197, 3198, 3206, - 86, 3200, 3204, 86, 3210, 3205, 86, 86, 86, 86, - 3214, 3207, 3211, 3209, 3208, 3252, 86, 86, 3216, 3212, - 86, 3217, 86, 86, 86, 3221, 86, 3218, 86, 86, - 3219, 3223, 86, 3222, 3213, 3215, 3224, 86, 86, 3225, - 86, 86, 86, 3220, 86, 3226, 3228, 3230, 86, 86, - 86, 86, 86, 86, 3232, 3233, 86, 3236, 86, 3227, - - 3252, 3229, 3252, 3231, 3237, 86, 86, 3240, 3241, 86, - 3234, 3235, 3238, 86, 3243, 86, 86, 3239, 3244, 86, - 3242, 86, 86, 3245, 86, 86, 3246, 3247, 3250, 86, - 3251, 86, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3248, 3249, 47, 47, 47, 47, 47, - 47, 47, 52, 52, 52, 52, 52, 52, 52, 57, - 57, 57, 57, 57, 57, 57, 63, 63, 63, 63, - 63, 63, 63, 68, 68, 68, 68, 68, 68, 68, - 74, 74, 74, 74, 74, 74, 74, 80, 80, 80, - 80, 80, 80, 80, 89, 89, 3252, 89, 89, 89, - - 89, 158, 158, 3252, 3252, 3252, 158, 158, 160, 160, - 3252, 3252, 160, 3252, 160, 162, 3252, 3252, 3252, 3252, - 3252, 162, 165, 165, 3252, 3252, 3252, 165, 165, 167, - 3252, 3252, 3252, 3252, 3252, 167, 169, 169, 3252, 169, - 169, 169, 169, 172, 3252, 3252, 3252, 3252, 3252, 172, - 175, 175, 3252, 3252, 3252, 175, 175, 90, 90, 3252, - 90, 90, 90, 90, 17, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - - 3252, 3252, 3252, 3252, 3252 + 1908, 86, 86, 86, 86, 86, 1913, 86, 1909, 86, + 1916, 1917, 86, 1918, 86, 1920, 86, 86, 1911, 1914, + 1910, 1915, 86, 1912, 86, 1921, 86, 1919, 1924, 86, + + 1925, 1926, 86, 1928, 86, 1927, 1930, 86, 1922, 86, + 86, 86, 86, 1923, 1932, 1933, 86, 86, 86, 1936, + 86, 86, 1929, 1935, 86, 86, 1939, 86, 1941, 1938, + 3255, 86, 1940, 86, 86, 1931, 86, 1934, 86, 86, + 1948, 1954, 1937, 1942, 1943, 1944, 86, 86, 86, 1950, + 1945, 86, 86, 1946, 1951, 86, 1947, 86, 1949, 1957, + 86, 1952, 1955, 1953, 86, 86, 1958, 1956, 1961, 86, + 86, 86, 1963, 86, 86, 86, 86, 1966, 1967, 86, + 1959, 1969, 86, 86, 86, 1960, 86, 1975, 86, 86, + 86, 86, 86, 1964, 1968, 1971, 1962, 1965, 1972, 86, + + 1974, 86, 86, 86, 1981, 1973, 86, 1977, 1970, 1978, + 1979, 1976, 86, 86, 1985, 86, 86, 1980, 1984, 86, + 86, 1988, 86, 1987, 1989, 1982, 86, 86, 1983, 86, + 86, 1990, 86, 86, 1991, 1986, 86, 86, 1995, 1993, + 1996, 1994, 1992, 86, 86, 1999, 2000, 2001, 86, 86, + 86, 86, 86, 86, 1997, 2004, 86, 86, 2009, 86, + 86, 86, 2008, 86, 2003, 86, 86, 86, 2002, 1998, + 2006, 2005, 2014, 86, 2015, 86, 2011, 2013, 2007, 2010, + 2016, 86, 2012, 86, 2020, 86, 2018, 2017, 2021, 86, + 86, 2019, 86, 86, 86, 2027, 86, 2024, 86, 86, + + 86, 86, 2032, 2022, 2029, 2030, 86, 86, 2031, 2023, + 86, 2028, 86, 2025, 2026, 2037, 86, 2038, 86, 2033, + 2036, 2039, 86, 2034, 2041, 2042, 2040, 86, 2035, 86, + 86, 86, 86, 2046, 2044, 86, 86, 86, 86, 86, + 2048, 86, 86, 86, 2045, 2051, 2053, 2047, 2043, 2049, + 168, 86, 86, 2055, 86, 2054, 86, 86, 86, 2060, + 2059, 2058, 2057, 2050, 2052, 86, 2056, 2061, 86, 2062, + 86, 2064, 86, 86, 86, 86, 3255, 86, 2065, 2066, + 86, 2067, 2068, 86, 86, 2063, 86, 2070, 2069, 86, + 2072, 86, 2071, 86, 86, 2076, 86, 86, 2073, 2075, + + 86, 86, 2077, 2074, 86, 2078, 2079, 2080, 2081, 86, + 86, 86, 86, 86, 86, 86, 2088, 2082, 2086, 2083, + 2087, 86, 86, 86, 86, 86, 2093, 2092, 86, 2084, + 86, 2085, 2090, 86, 86, 86, 2098, 2094, 86, 2089, + 86, 86, 2091, 2096, 86, 2100, 2095, 2099, 86, 2102, + 2097, 2104, 86, 86, 2103, 86, 2105, 86, 86, 86, + 2110, 2101, 86, 2112, 2106, 86, 86, 2113, 2114, 86, + 86, 2107, 2108, 2109, 86, 2111, 2116, 86, 2115, 86, + 2117, 86, 2119, 86, 86, 86, 2123, 2118, 86, 86, + 2120, 86, 86, 86, 86, 86, 2121, 86, 2124, 86, + + 86, 86, 86, 2131, 2122, 2126, 2127, 2128, 86, 86, + 2136, 86, 2125, 86, 2130, 86, 2132, 2143, 2129, 86, + 2133, 2135, 2138, 86, 2134, 86, 2137, 86, 2139, 86, + 86, 86, 2140, 2141, 2142, 2145, 86, 2144, 2146, 86, + 86, 2148, 86, 86, 2151, 2147, 86, 86, 2149, 2153, + 2155, 86, 2150, 86, 86, 86, 86, 2158, 86, 2157, + 2154, 2159, 2152, 2160, 86, 86, 2163, 86, 86, 86, + 86, 86, 86, 2164, 86, 2169, 86, 2166, 86, 2156, + 2165, 2173, 2161, 86, 2170, 2162, 2171, 86, 2168, 2167, + 86, 86, 86, 2175, 86, 2174, 86, 86, 2172, 2179, + + 86, 86, 2181, 86, 2177, 86, 2180, 86, 2182, 86, + 2176, 86, 2178, 86, 2183, 2185, 2184, 86, 2186, 2188, + 2190, 2187, 2192, 86, 2189, 2191, 86, 86, 86, 86, + 86, 86, 86, 2195, 2196, 2193, 2200, 86, 86, 2194, + 86, 2199, 86, 2197, 86, 86, 86, 86, 86, 86, + 86, 2198, 2209, 2210, 86, 86, 2201, 2205, 2202, 2204, + 2203, 2206, 2207, 2211, 86, 86, 2208, 86, 86, 86, + 2212, 2214, 86, 2220, 86, 86, 2222, 86, 2215, 86, + 86, 2219, 2216, 2213, 2221, 86, 2217, 86, 168, 2224, + 2228, 2230, 2225, 2226, 2218, 2229, 86, 86, 2223, 2231, + + 86, 86, 86, 2232, 86, 86, 2235, 86, 86, 2233, + 2227, 86, 2236, 2239, 2240, 86, 86, 2241, 86, 2244, + 2242, 2249, 2234, 86, 86, 86, 2237, 86, 2245, 86, + 2246, 2247, 86, 86, 86, 86, 2243, 2238, 2248, 2250, + 86, 86, 86, 86, 2251, 2252, 86, 2255, 86, 86, + 86, 86, 86, 2258, 2253, 86, 2262, 2264, 86, 86, + 86, 2257, 86, 2265, 86, 2254, 2256, 2259, 2260, 2267, + 2261, 86, 86, 86, 86, 2266, 86, 2263, 86, 2272, + 2275, 86, 86, 86, 2270, 86, 86, 86, 2268, 2269, + 2276, 2273, 2271, 86, 2274, 86, 86, 86, 86, 86, + + 86, 86, 2277, 2291, 2278, 2287, 2289, 86, 2283, 2279, + 86, 2280, 2281, 2285, 2286, 86, 2282, 2288, 2284, 86, + 86, 86, 86, 2292, 2290, 86, 2295, 2296, 86, 2297, + 86, 86, 86, 2300, 2293, 2294, 2298, 86, 2303, 86, + 2304, 86, 86, 86, 2299, 86, 2301, 2305, 2306, 2302, + 86, 86, 2310, 86, 2311, 86, 86, 2313, 86, 86, + 2315, 86, 86, 2309, 86, 2307, 86, 2317, 2318, 86, + 2308, 2319, 86, 86, 86, 2312, 86, 2314, 86, 2316, + 2320, 86, 2321, 2324, 2325, 86, 2327, 86, 2322, 86, + 86, 86, 86, 2331, 2330, 2323, 2329, 2333, 86, 86, + + 2326, 86, 86, 2337, 86, 86, 86, 2328, 2332, 86, + 86, 2342, 86, 86, 2341, 86, 2335, 86, 2334, 86, + 2344, 2336, 86, 86, 2340, 2338, 2347, 86, 86, 2339, + 86, 2350, 2343, 86, 2345, 2349, 86, 2346, 86, 2354, + 86, 86, 86, 2348, 2356, 86, 86, 86, 2351, 2355, + 2357, 2352, 86, 2360, 86, 86, 86, 2361, 86, 2362, + 86, 86, 2353, 2366, 86, 2358, 2368, 2359, 2364, 2369, + 2363, 86, 2367, 2371, 2373, 2370, 86, 2365, 86, 86, + 86, 2374, 86, 2375, 86, 86, 86, 86, 2378, 86, + 86, 86, 2372, 86, 2384, 2379, 2380, 2377, 2381, 2382, + + 86, 86, 2385, 86, 168, 2383, 86, 2376, 86, 2393, + 2386, 2390, 2388, 2387, 86, 2389, 86, 86, 86, 2391, + 86, 2394, 86, 2395, 2398, 86, 86, 2392, 86, 86, + 86, 86, 2396, 86, 86, 2400, 2397, 2399, 86, 2406, + 2401, 2405, 2404, 86, 3255, 2402, 2403, 2409, 86, 86, + 2410, 2411, 86, 2407, 86, 2408, 86, 2412, 2414, 2415, + 86, 2413, 2417, 86, 86, 86, 86, 86, 2419, 2416, + 86, 86, 86, 86, 2423, 2424, 86, 86, 86, 3255, + 2418, 86, 2420, 2426, 86, 2421, 86, 86, 2427, 2428, + 2425, 2422, 2429, 86, 86, 86, 2431, 2433, 86, 2430, + + 2435, 86, 2434, 86, 2432, 86, 86, 86, 86, 86, + 2437, 86, 86, 2441, 2444, 86, 2436, 2443, 86, 86, + 86, 2445, 2440, 86, 86, 86, 2438, 2439, 2448, 86, + 86, 2442, 86, 2453, 2452, 86, 2446, 2450, 2447, 86, + 2454, 86, 86, 2455, 86, 2449, 2451, 86, 2457, 2456, + 86, 86, 2460, 2458, 86, 2462, 2463, 86, 2461, 2464, + 86, 86, 2466, 86, 86, 86, 2465, 86, 2459, 86, + 86, 86, 86, 86, 2470, 86, 2472, 2473, 3255, 2468, + 2474, 86, 2467, 2469, 2475, 86, 2476, 86, 2477, 2478, + 86, 86, 86, 86, 86, 2480, 2471, 2479, 2483, 86, + + 2485, 86, 86, 2484, 86, 2482, 86, 2488, 86, 86, + 2481, 86, 2489, 86, 2492, 2493, 86, 2487, 86, 2486, + 86, 86, 86, 2490, 86, 2494, 2498, 2497, 86, 2491, + 2496, 86, 86, 86, 86, 86, 2495, 86, 2502, 86, + 2504, 2616, 2499, 86, 2501, 2500, 2505, 86, 2506, 86, + 2507, 86, 2508, 86, 2503, 2509, 86, 2510, 86, 2512, + 86, 2511, 86, 2513, 86, 86, 86, 2518, 86, 86, + 2520, 86, 2514, 2521, 86, 86, 2515, 86, 86, 86, + 86, 86, 2517, 86, 86, 2516, 2522, 2524, 2519, 2523, + 2525, 86, 2530, 86, 86, 86, 2527, 86, 86, 2526, + + 168, 2528, 86, 2529, 2531, 86, 2538, 86, 86, 86, + 2532, 2534, 2537, 86, 2533, 86, 2536, 2539, 86, 86, + 86, 2535, 2540, 2545, 2541, 86, 3255, 86, 2549, 86, + 2547, 2542, 2548, 2546, 2550, 86, 86, 2543, 86, 2551, + 86, 2544, 86, 2552, 86, 2553, 86, 86, 86, 86, + 86, 2555, 86, 86, 2554, 86, 86, 86, 2564, 3255, + 86, 2562, 2557, 86, 86, 2556, 86, 2559, 2558, 86, + 2568, 86, 2560, 2561, 86, 2563, 86, 2565, 2566, 2569, + 86, 2567, 86, 2572, 2576, 2570, 2571, 2573, 86, 2575, + 86, 2574, 86, 86, 2577, 86, 86, 86, 86, 2578, + + 86, 2584, 86, 2585, 86, 86, 2588, 86, 2579, 2589, + 86, 2587, 2590, 2580, 2581, 2586, 2582, 2583, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 2594, 2598, 86, + 2597, 2599, 86, 86, 86, 2592, 2600, 2591, 2601, 86, + 2593, 86, 2603, 2595, 2596, 86, 86, 86, 2602, 86, + 86, 86, 2607, 86, 86, 86, 86, 2605, 2611, 86, + 2604, 2612, 86, 2615, 86, 2613, 2606, 2619, 86, 2608, + 2609, 2617, 2614, 2610, 86, 86, 86, 86, 2618, 2622, + 2624, 86, 86, 86, 86, 86, 2628, 86, 2620, 2627, + 86, 2621, 2626, 86, 2625, 2630, 86, 2623, 2631, 2632, + + 86, 86, 86, 2629, 2635, 86, 86, 2636, 2638, 86, + 86, 86, 86, 2634, 2643, 86, 2633, 86, 86, 86, + 2641, 2645, 86, 2639, 2637, 2640, 2642, 86, 86, 86, + 86, 86, 2646, 2644, 2647, 2649, 86, 86, 2651, 2650, + 86, 86, 2648, 86, 86, 2652, 2655, 3255, 2653, 2656, + 2658, 86, 2654, 2659, 86, 2660, 168, 86, 2657, 86, + 86, 86, 2665, 86, 2661, 2662, 86, 86, 86, 86, + 2667, 2666, 2669, 2670, 86, 2671, 86, 2663, 2668, 2664, + 86, 2673, 86, 86, 2675, 86, 2674, 86, 2680, 2676, + 86, 86, 2677, 2672, 86, 86, 2678, 86, 86, 2679, + + 2682, 2681, 86, 86, 86, 86, 2687, 2683, 2688, 86, + 2689, 2685, 86, 86, 86, 86, 86, 2684, 86, 2693, + 2691, 2690, 86, 2692, 86, 2686, 86, 2694, 86, 2695, + 86, 2696, 2703, 86, 86, 2701, 86, 86, 86, 2699, + 2697, 2698, 2700, 2704, 86, 2702, 86, 86, 86, 2708, + 86, 86, 86, 86, 2712, 86, 2710, 86, 86, 86, + 86, 2717, 86, 2705, 2716, 3255, 2706, 2707, 2711, 2719, + 2709, 2713, 2714, 2720, 2721, 86, 2722, 86, 2715, 86, + 86, 86, 86, 86, 2718, 86, 86, 2724, 86, 2723, + 2727, 86, 2725, 86, 2730, 86, 2732, 86, 2726, 2733, + + 86, 86, 2728, 2734, 86, 2735, 2729, 86, 2737, 86, + 86, 86, 2736, 2731, 86, 2741, 2739, 86, 86, 2744, + 2742, 86, 2745, 86, 2746, 86, 2740, 86, 86, 86, + 2738, 2747, 86, 2751, 86, 86, 2752, 2743, 2753, 86, + 2748, 86, 2755, 86, 86, 86, 86, 2749, 2759, 2760, + 86, 86, 2750, 2762, 86, 2761, 2754, 2756, 2763, 86, + 2758, 86, 86, 2757, 86, 86, 2768, 86, 86, 86, + 2767, 86, 86, 2770, 2771, 86, 2772, 86, 86, 86, + 2774, 86, 2765, 86, 2764, 2766, 2773, 86, 86, 2777, + 2776, 86, 2769, 2775, 86, 2783, 2778, 2779, 86, 2780, + + 86, 2781, 2784, 86, 86, 86, 86, 2786, 86, 2796, + 86, 2782, 2785, 2791, 2788, 2787, 2790, 2793, 2792, 86, + 86, 2797, 2794, 86, 2789, 2795, 86, 2798, 86, 2799, + 86, 2800, 86, 86, 86, 86, 86, 86, 2802, 86, + 86, 3255, 2806, 86, 2810, 86, 86, 86, 2801, 2807, + 2811, 2813, 86, 86, 2803, 2805, 2815, 86, 86, 2808, + 2814, 2804, 86, 2809, 2812, 2817, 86, 2816, 86, 86, + 86, 2822, 86, 86, 86, 86, 2821, 2818, 2819, 2820, + 86, 2826, 2824, 86, 2823, 86, 2827, 86, 2828, 2825, + 86, 86, 2829, 86, 2830, 86, 2831, 2832, 86, 2833, + + 86, 86, 86, 86, 86, 86, 2842, 2834, 86, 86, + 2835, 2837, 86, 2836, 2840, 2838, 86, 86, 86, 2847, + 2843, 2845, 2846, 86, 2841, 86, 2839, 86, 86, 86, + 2844, 3113, 2848, 2849, 86, 2850, 2852, 86, 2851, 2853, + 86, 2854, 86, 86, 86, 2856, 2857, 2859, 86, 2858, + 86, 86, 2855, 86, 86, 2860, 2861, 2862, 86, 86, + 86, 86, 2868, 86, 86, 2866, 2863, 86, 86, 2870, + 86, 2864, 86, 86, 86, 2865, 2871, 86, 2872, 2867, + 86, 2874, 2873, 2875, 86, 2879, 86, 2878, 2869, 2876, + 86, 86, 86, 86, 86, 86, 2882, 86, 86, 2877, + + 86, 86, 2883, 2880, 2881, 2886, 2887, 2888, 86, 86, + 2884, 2891, 86, 86, 2885, 2893, 86, 86, 2889, 2894, + 86, 2896, 86, 86, 86, 86, 2901, 86, 2892, 2897, + 2900, 86, 86, 86, 2890, 86, 2905, 86, 2895, 2898, + 2899, 86, 86, 2908, 86, 86, 86, 2910, 2913, 86, + 2911, 2902, 2904, 86, 86, 2903, 2906, 2909, 2914, 86, + 2907, 2916, 86, 86, 86, 86, 86, 2921, 2912, 86, + 86, 86, 2919, 86, 2915, 2918, 2925, 86, 2923, 86, + 86, 2917, 2926, 86, 2927, 2920, 86, 2930, 2922, 2932, + 2924, 2929, 2928, 86, 2931, 86, 2933, 86, 86, 2936, + + 86, 86, 86, 2935, 86, 2939, 2937, 86, 2942, 86, + 86, 86, 86, 86, 86, 2934, 2947, 86, 86, 86, + 86, 86, 2943, 2938, 2940, 2941, 2953, 2946, 86, 2950, + 2944, 2951, 86, 2952, 86, 2949, 86, 2948, 2945, 2956, + 86, 2955, 2954, 2957, 86, 2958, 86, 86, 2960, 86, + 86, 2962, 86, 86, 86, 2961, 86, 86, 86, 2967, + 2968, 86, 86, 86, 86, 86, 2972, 86, 2963, 2973, + 86, 2974, 86, 2959, 2971, 2964, 2969, 86, 2965, 2966, + 86, 2978, 86, 2970, 2975, 2977, 2979, 86, 86, 86, + 2982, 2976, 86, 2980, 86, 86, 86, 2985, 86, 86, + + 2986, 86, 2984, 2981, 2983, 86, 86, 86, 86, 86, + 2989, 86, 86, 2991, 86, 86, 2992, 86, 2990, 2987, + 86, 2988, 86, 86, 86, 86, 3255, 3001, 2993, 3002, + 2997, 2994, 2995, 2996, 2998, 2999, 3004, 86, 86, 86, + 3007, 3000, 86, 3003, 3005, 3006, 3009, 86, 3010, 86, + 86, 3008, 86, 86, 3011, 3014, 86, 3012, 3015, 86, + 3016, 3017, 86, 86, 3018, 3019, 3022, 86, 3020, 3021, + 86, 86, 3013, 3023, 86, 86, 86, 86, 86, 3029, + 86, 86, 86, 3028, 86, 86, 3032, 86, 3024, 3025, + 86, 3031, 86, 3255, 3033, 86, 3026, 3027, 86, 3037, + + 86, 3036, 3034, 3038, 86, 86, 3030, 86, 3035, 3039, + 86, 86, 3041, 3044, 3042, 3040, 3046, 3043, 3045, 86, + 3047, 86, 86, 86, 86, 86, 3048, 3054, 3050, 3051, + 3053, 86, 86, 86, 3056, 86, 3057, 86, 3055, 86, + 86, 86, 3049, 3255, 3052, 3059, 3060, 86, 3061, 86, + 3062, 3063, 86, 86, 3058, 3064, 86, 3065, 86, 3066, + 86, 3067, 86, 3068, 86, 3069, 86, 86, 3071, 86, + 86, 86, 86, 3074, 3076, 86, 3070, 86, 86, 3072, + 86, 86, 3080, 3073, 86, 3082, 86, 86, 86, 86, + 3079, 3075, 3077, 3078, 86, 86, 3086, 3084, 86, 3081, + + 3089, 3088, 86, 86, 86, 3083, 86, 3087, 3091, 86, + 86, 86, 86, 86, 3085, 86, 3090, 3095, 86, 3097, + 86, 3096, 86, 3092, 86, 3100, 3094, 3093, 3098, 3102, + 86, 3103, 86, 3101, 3104, 86, 86, 86, 86, 86, + 86, 3107, 86, 86, 3099, 3106, 86, 3105, 86, 3115, + 86, 3112, 86, 3109, 3111, 86, 86, 3114, 3108, 86, + 86, 86, 86, 3110, 86, 3116, 86, 86, 86, 3117, + 3122, 3124, 3119, 3118, 3123, 3121, 86, 86, 86, 3131, + 86, 3126, 3128, 86, 3120, 3125, 86, 3127, 3130, 3133, + 86, 86, 3129, 86, 3134, 3132, 3135, 86, 3136, 86, + + 86, 86, 3137, 3139, 86, 86, 3140, 86, 3144, 3141, + 86, 3138, 86, 86, 86, 3148, 86, 3147, 86, 3150, + 86, 86, 3143, 86, 3145, 3146, 3151, 86, 3154, 86, + 3142, 86, 86, 3157, 86, 86, 3152, 86, 3149, 86, + 3158, 3161, 3153, 3159, 86, 3162, 3155, 86, 86, 86, + 3156, 86, 86, 3167, 86, 86, 3160, 3166, 3163, 3168, + 86, 3164, 86, 86, 86, 86, 86, 86, 3165, 3172, + 86, 3174, 86, 86, 86, 86, 3169, 3171, 86, 3179, + 3180, 86, 3170, 3176, 3173, 3177, 3175, 3181, 86, 86, + 3185, 86, 3178, 86, 3188, 86, 3187, 86, 3182, 3183, + + 3186, 86, 86, 86, 86, 86, 3189, 3193, 3184, 3190, + 3191, 3194, 86, 86, 86, 86, 3192, 3196, 86, 3195, + 86, 86, 3198, 86, 3197, 3202, 86, 86, 3199, 86, + 3205, 86, 3206, 86, 3200, 86, 86, 86, 86, 86, + 3204, 3209, 3201, 86, 3207, 3203, 86, 3208, 86, 3213, + 86, 3214, 3212, 86, 3217, 86, 3210, 3211, 86, 3219, + 86, 3220, 86, 3215, 86, 86, 86, 3221, 3226, 3216, + 86, 3222, 3224, 86, 3218, 3225, 3227, 86, 86, 86, + 86, 86, 86, 86, 3223, 3228, 3229, 3231, 3233, 86, + 86, 86, 86, 86, 86, 3235, 3236, 86, 3239, 3230, + + 3232, 86, 3234, 3240, 86, 86, 3243, 3244, 86, 86, + 86, 3237, 3238, 3241, 3246, 86, 3245, 3247, 86, 86, + 3242, 86, 86, 86, 3253, 86, 3248, 3249, 3250, 3251, + 3254, 86, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3252, 47, 47, 47, 47, 47, 47, 47, 52, 52, + 52, 52, 52, 52, 52, 57, 57, 57, 57, 57, + 57, 57, 63, 63, 63, 63, 63, 63, 63, 68, + 68, 68, 68, 68, 68, 68, 74, 74, 74, 74, + 74, 74, 74, 80, 80, 80, 80, 80, 80, 80, + 89, 89, 3255, 89, 89, 89, 89, 158, 158, 3255, + + 3255, 3255, 158, 158, 160, 160, 3255, 3255, 160, 3255, + 160, 162, 3255, 3255, 3255, 3255, 3255, 162, 165, 165, + 3255, 3255, 3255, 165, 165, 167, 3255, 3255, 3255, 3255, + 3255, 167, 169, 169, 3255, 169, 169, 169, 169, 172, + 3255, 3255, 3255, 3255, 3255, 172, 175, 175, 3255, 3255, + 3255, 175, 175, 90, 90, 3255, 90, 90, 90, 90, + 17, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + + 3255 } ; -static const flex_int16_t yy_chk[6406] = +static const flex_int16_t yy_chk[6402] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2210,14 +2212,14 @@ static const flex_int16_t yy_chk[6406] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3260, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3263, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2661, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2660, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, @@ -2594,319 +2596,319 @@ static const flex_int16_t yy_chk[6406] = 1700, 1704, 1701, 1705, 1707, 1710, 1706, 1702, 1705, 1713, 1696, 1703, 1698, 1697, 1699, 1706, 1704, 1708, 1709, 1715, 1710, 1712, 1708, 1709, 1707, 1711, 1711, 1712, 1706, 1708, - 1713, 1716, 1717, 1718, 1719, 1724, 1719, 0, 1715, 1727, - 1720, 1721, 1721, 1722, 1722, 1723, 1723, 1728, 1717, 1725, - 1725, 1716, 1737, 1718, 1720, 1724, 1720, 1726, 1726, 1730, - - 1727, 1729, 1729, 1730, 1731, 1734, 1732, 1735, 1728, 1732, - 1731, 1734, 1736, 1738, 1739, 1739, 1738, 1737, 1736, 1740, - 1743, 1741, 1742, 1742, 1744, 1735, 1741, 1745, 1745, 1744, - 1746, 1747, 1748, 1749, 1750, 1746, 1751, 1747, 1752, 1740, - 1756, 1743, 1751, 1754, 1748, 1748, 1748, 1755, 1754, 1754, - 1757, 1748, 1757, 1749, 1750, 1756, 1758, 1759, 1752, 1760, - 1761, 1755, 1762, 1763, 1765, 1760, 1767, 1758, 1771, 1761, - 1764, 1764, 1759, 1766, 1766, 1768, 1769, 1769, 1770, 1770, - 1774, 1774, 1762, 1775, 1763, 1776, 1767, 1778, 1771, 1779, - 1765, 1782, 1780, 1786, 1776, 1784, 1778, 1768, 1780, 1781, - - 1781, 1783, 1784, 1788, 1785, 1787, 1787, 1789, 1775, 1791, - 1779, 1792, 1782, 1785, 1791, 1793, 1783, 1792, 1794, 1786, - 1795, 1796, 1800, 1789, 1801, 1794, 1795, 1796, 1798, 1788, - 1797, 1797, 1799, 1798, 1802, 1793, 1803, 1804, 1805, 1803, - 1809, 1799, 1800, 1801, 1806, 1806, 1802, 1807, 1808, 1813, - 1810, 1814, 1811, 1807, 1808, 1804, 1811, 1815, 1816, 1816, - 1809, 1817, 1815, 1818, 1805, 1810, 1820, 1821, 1822, 1813, - 1823, 1821, 1811, 1814, 1822, 1824, 1824, 1825, 1818, 1823, - 1817, 1825, 1826, 1827, 1827, 1820, 1828, 1829, 1834, 1830, - 1831, 1832, 1833, 1826, 1834, 1831, 1839, 1836, 1826, 1835, - - 1839, 1829, 1836, 1837, 1837, 1838, 1838, 1828, 1830, 1841, - 1842, 1832, 1833, 1843, 1835, 1844, 1844, 1847, 1841, 1846, - 1846, 1842, 1847, 1847, 1848, 1849, 1842, 1850, 1852, 1851, - 1848, 1849, 1853, 1843, 1851, 1855, 1857, 1856, 1853, 1858, - 1852, 1856, 1863, 1859, 1860, 1861, 1865, 1855, 1857, 1859, - 1862, 1861, 1866, 1850, 1863, 1862, 1867, 1869, 1865, 1873, - 1869, 1867, 1870, 1870, 1858, 0, 1860, 1871, 1871, 1872, - 1872, 1866, 1874, 1878, 1875, 1883, 1876, 1877, 1874, 1873, - 1875, 1876, 1878, 1877, 1880, 1882, 1886, 1883, 1882, 1880, - 1884, 1884, 1887, 1890, 1888, 1889, 1889, 1895, 1886, 1888, - - 1891, 1892, 1890, 1896, 1887, 1891, 1892, 1893, 1894, 1894, - 1893, 1897, 1896, 1898, 1899, 1900, 1901, 1895, 1899, 1902, - 1900, 1903, 1901, 1904, 1905, 1908, 1909, 1907, 1907, 1897, - 1903, 1912, 1898, 1910, 1910, 1909, 1913, 1902, 1905, 1907, - 1912, 1904, 1914, 1908, 1911, 1911, 1915, 1916, 1913, 1919, - 1919, 1915, 1921, 1922, 1923, 1921, 1925, 1928, 1926, 1927, - 1916, 1929, 1929, 1914, 1930, 1927, 1930, 1931, 1931, 1922, - 1923, 1925, 1926, 1932, 1928, 1934, 1934, 1935, 1935, 1937, - 1938, 1932, 1939, 1940, 1941, 1937, 1938, 1942, 1942, 1939, - 1943, 1944, 1948, 1956, 1945, 1946, 1947, 1950, 1949, 1943, - - 1952, 1953, 1954, 1950, 1941, 1940, 1945, 1946, 1947, 1955, - 1955, 1956, 1944, 1949, 1954, 1957, 1950, 1960, 1948, 1958, - 1952, 1959, 1958, 1962, 1953, 1963, 1959, 1963, 1962, 1964, - 1970, 1965, 1966, 1968, 1971, 1957, 1965, 1960, 1972, 1966, - 1974, 1977, 1968, 1971, 1973, 1979, 1973, 1964, 1970, 1976, - 1972, 1976, 1978, 1978, 1984, 1977, 1980, 1982, 1981, 1974, - 1981, 1980, 1982, 1983, 1985, 1987, 1988, 1986, 1983, 1989, - 1987, 1979, 1984, 1986, 1991, 1992, 1995, 1989, 1996, 1988, - 1993, 1993, 1994, 1994, 1985, 1998, 1997, 2000, 0, 1992, - 1998, 1995, 1997, 1991, 1999, 2001, 1999, 2003, 1996, 2002, - - 2002, 2004, 2004, 2001, 2006, 2000, 2005, 2005, 2008, 2003, - 2007, 2001, 2010, 2006, 2011, 2007, 2011, 2012, 2015, 2017, - 2014, 2010, 2013, 2021, 2010, 2022, 2008, 2013, 2013, 2014, - 2015, 2017, 2018, 2023, 2019, 2025, 2021, 2018, 2012, 2019, - 2024, 2024, 2023, 2026, 2027, 2022, 2031, 2032, 2028, 2029, - 2033, 2034, 2035, 2025, 2036, 2042, 2034, 2035, 2031, 2032, - 2027, 2026, 2028, 2036, 2029, 2039, 2041, 2043, 2044, 2045, - 2033, 2039, 2041, 2050, 2046, 2047, 2047, 2054, 2042, 2048, - 2049, 2049, 2043, 2046, 2039, 2051, 2044, 2053, 2048, 2051, - 2052, 2055, 2050, 2060, 2045, 2052, 2055, 2055, 2056, 2054, - - 2053, 2057, 2058, 2059, 2056, 2058, 2068, 2057, 2063, 2063, - 2065, 2059, 2069, 2060, 2064, 2064, 2066, 2066, 2068, 2065, - 2067, 2067, 2070, 2072, 2072, 2078, 2071, 2082, 2070, 2064, - 2069, 2071, 2073, 2073, 2074, 2075, 2080, 2084, 2077, 2074, - 2064, 2075, 2077, 2079, 2083, 2078, 2085, 2079, 2086, 2083, - 2087, 2088, 2082, 2086, 2089, 2091, 2080, 2090, 2092, 2092, - 2084, 2085, 2090, 2094, 2096, 2093, 2095, 2088, 2087, 2093, - 2098, 2095, 2097, 2099, 2089, 2100, 2101, 2091, 2094, 2097, - 2100, 2102, 2098, 2103, 2103, 2105, 2106, 2107, 2108, 2101, - 2096, 2109, 2099, 2105, 2110, 2111, 2112, 2113, 2118, 2102, - - 2122, 2117, 2115, 2122, 2118, 2106, 2107, 2119, 2112, 2119, - 2123, 2108, 2125, 2110, 2117, 2109, 2111, 2115, 2113, 2120, - 2120, 2121, 2124, 2123, 2129, 2125, 2121, 2126, 2126, 2127, - 2127, 2128, 2128, 2130, 2131, 2131, 2124, 2138, 2132, 2129, - 2133, 2133, 2134, 2134, 2135, 2139, 2130, 2132, 2137, 2135, - 2132, 2140, 2143, 2137, 2141, 2141, 2145, 2138, 2142, 2142, - 2144, 2144, 2147, 2140, 2148, 2139, 2146, 2146, 2151, 2148, - 2152, 2143, 2149, 2149, 2145, 2150, 2150, 2147, 2153, 2152, - 2154, 2156, 2151, 2157, 2157, 2158, 2156, 2159, 2159, 2160, - 2161, 2162, 2153, 2165, 2162, 2166, 2161, 2163, 2163, 2154, - - 2164, 2164, 2167, 2170, 2158, 2168, 2168, 2160, 2171, 2172, - 2166, 2173, 2165, 2163, 2175, 2173, 2174, 2174, 2181, 2177, - 2176, 2167, 2178, 2170, 2172, 2176, 2180, 2180, 2182, 2183, - 2184, 2171, 2185, 2175, 2177, 2182, 2186, 2178, 2181, 2187, - 2187, 2192, 2188, 2183, 2189, 2195, 2189, 2197, 2184, 2190, - 2185, 2188, 2190, 2192, 2193, 2194, 2198, 2199, 2196, 2193, - 2194, 2198, 2186, 2205, 2203, 0, 2209, 2190, 2197, 2190, - 2195, 2196, 2201, 2202, 2204, 2206, 2210, 2201, 2202, 2203, - 2204, 2206, 2207, 2199, 2205, 2208, 2216, 2207, 2212, 2210, - 2208, 2209, 2211, 2213, 2214, 2211, 2215, 2212, 2217, 2221, - - 2216, 2218, 2213, 2214, 2217, 2215, 2219, 2218, 2223, 2225, - 2219, 2224, 2224, 2226, 2226, 2225, 2227, 2223, 2228, 2221, - 2230, 2227, 2226, 2231, 2232, 2232, 2233, 2237, 2234, 2238, - 2236, 2241, 2243, 2239, 2241, 2244, 2230, 2234, 2228, 2231, - 2228, 2233, 2236, 2237, 2238, 2239, 2242, 2244, 2245, 2245, - 2255, 2242, 2243, 2246, 2246, 2248, 2248, 2249, 2250, 2251, - 2249, 2252, 2253, 2250, 2255, 2251, 2257, 2252, 2254, 2254, - 2258, 2253, 2256, 2256, 2259, 2260, 2260, 2261, 2257, 2266, - 2262, 2263, 2266, 2261, 2258, 2265, 2263, 2267, 2267, 2265, - 2268, 2269, 2270, 2259, 2262, 2268, 2269, 2269, 2271, 2272, - - 2274, 2270, 2276, 2272, 2273, 2273, 2277, 2276, 2278, 2279, - 2280, 2281, 2282, 2274, 2280, 2283, 2284, 2282, 2271, 2285, - 2286, 2283, 2284, 2279, 2287, 2288, 2277, 2291, 2278, 2287, - 2290, 2281, 2301, 2292, 2293, 2298, 2294, 2285, 2292, 2286, - 2293, 2380, 2290, 2291, 2294, 2295, 2288, 2295, 2380, 2298, - 2299, 2299, 2300, 2302, 2302, 2300, 2305, 2306, 2301, 2307, - 2305, 2308, 2308, 2306, 2309, 2312, 2312, 2314, 2316, 2320, - 2317, 2307, 2321, 2309, 2320, 2322, 2323, 2324, 2324, 2330, - 2322, 2323, 2316, 2326, 2326, 2314, 2317, 2328, 2329, 2329, - 2331, 2332, 2334, 2328, 2335, 2330, 2332, 2339, 2321, 2336, - - 2336, 2338, 2340, 2339, 2341, 2345, 2335, 2343, 2343, 2346, - 2338, 2334, 2331, 2344, 2348, 2348, 2344, 2349, 2349, 2341, - 2340, 2350, 2351, 2352, 2345, 2353, 2350, 2346, 2355, 2354, - 2353, 2354, 2352, 2356, 2357, 2359, 2358, 0, 2360, 2366, - 2351, 2358, 2355, 2360, 2361, 2361, 2357, 2356, 2362, 2362, - 2363, 2363, 2364, 2364, 2365, 2359, 2367, 2366, 2368, 2368, - 2370, 2367, 2369, 2369, 2371, 2372, 2365, 2373, 2374, 2374, - 2375, 2378, 2370, 2376, 2376, 2379, 2371, 2377, 2377, 2381, - 2382, 2383, 2378, 2373, 2384, 2372, 2383, 2379, 2385, 2375, - 2387, 2381, 2386, 2386, 2388, 2389, 2390, 2391, 2392, 2387, - - 2382, 2393, 2394, 2394, 2384, 2395, 2399, 2396, 2385, 2390, - 2397, 2400, 2392, 2393, 2395, 2389, 2401, 2403, 2406, 2406, - 2388, 2391, 2396, 2402, 2399, 2397, 2402, 2404, 2413, 2405, - 2415, 2403, 2404, 2400, 2405, 2407, 2407, 2408, 2408, 2401, - 2410, 2410, 2412, 2412, 2414, 2416, 2413, 2418, 2419, 2415, - 2420, 2421, 2422, 2423, 2424, 2414, 2424, 2425, 2426, 2431, - 2416, 2422, 2427, 2428, 2428, 2433, 2419, 2418, 2430, 2430, - 2434, 2421, 2420, 2423, 2431, 2437, 2426, 2425, 2439, 2434, - 2427, 2435, 2435, 2440, 2437, 2438, 2438, 2433, 2441, 2442, - 2443, 2444, 2446, 0, 2445, 2441, 2439, 2447, 2447, 2448, - - 2448, 2440, 2449, 2454, 2442, 2456, 2450, 2455, 2443, 2444, - 2445, 2446, 2450, 2451, 2451, 2452, 2452, 2453, 2458, 2459, - 2449, 2454, 2455, 2453, 2456, 2457, 2460, 2461, 2466, 2461, - 2457, 2460, 2462, 2462, 2463, 2468, 2463, 2469, 2458, 2459, - 2464, 2464, 2470, 2471, 2468, 2472, 2473, 2466, 2474, 2477, - 2472, 0, 2478, 2480, 2470, 2478, 2469, 2479, 2479, 2481, - 2482, 2482, 2491, 2471, 2485, 2488, 2473, 2474, 2480, 2477, - 2483, 2486, 2487, 2487, 2483, 2486, 2490, 2481, 2488, 2485, - 2492, 2495, 2491, 2493, 2493, 2496, 2497, 2498, 2498, 2499, - 2497, 2490, 2501, 2495, 2496, 2500, 2500, 2501, 2502, 2503, - - 2492, 2504, 2505, 2505, 2510, 2510, 2511, 2502, 2499, 2512, - 2512, 2513, 2514, 2504, 2515, 2503, 2518, 2516, 2517, 2517, - 2520, 2520, 2523, 2515, 2513, 2514, 2516, 2523, 2511, 2524, - 2525, 2518, 2526, 2527, 2524, 2528, 2529, 2526, 2530, 0, - 2532, 2527, 2533, 2534, 2525, 2529, 2530, 2533, 2534, 2535, - 2536, 2536, 2537, 2537, 2528, 2532, 2538, 2538, 2539, 2541, - 2542, 2540, 2543, 0, 2535, 2539, 2540, 2544, 2543, 2545, - 2545, 2546, 2544, 0, 2547, 2548, 2548, 2541, 2542, 2547, - 2549, 2549, 2552, 2553, 2553, 2554, 2546, 2555, 2554, 2556, - 2558, 2557, 2555, 2555, 2556, 2552, 2557, 2559, 2560, 2562, - - 2561, 2563, 2560, 2559, 2558, 2561, 2564, 2565, 2562, 2566, - 2569, 2567, 2579, 2568, 2564, 2566, 2563, 2567, 2568, 2571, - 2572, 2573, 2569, 2580, 2573, 2572, 2575, 2577, 2565, 2578, - 2579, 2581, 2577, 2582, 2578, 2571, 2580, 2584, 2575, 2587, - 2581, 2588, 2582, 2583, 2583, 2587, 2584, 2588, 2591, 2592, - 2596, 2593, 2594, 2594, 2595, 2599, 2597, 2598, 2598, 2596, - 2601, 2603, 2604, 2605, 2605, 2606, 2604, 2591, 0, 2592, - 2593, 2597, 2607, 2595, 2599, 2601, 2608, 2609, 2607, 2610, - 2610, 2603, 2608, 2609, 2611, 2614, 2612, 2615, 2618, 2617, - 2606, 2612, 2611, 2617, 2614, 2619, 2621, 2621, 2622, 2632, - - 2615, 0, 2618, 2623, 2623, 2624, 2624, 2626, 2626, 2627, - 2619, 2637, 2628, 2627, 2630, 2630, 2622, 2628, 2633, 2632, - 2634, 2635, 2645, 2633, 2638, 2638, 2635, 2635, 2640, 2640, - 2643, 2637, 2634, 2641, 2641, 2642, 2647, 2651, 2642, 2654, - 2645, 2648, 2648, 2643, 2649, 2649, 2650, 2650, 2652, 2652, - 2653, 2655, 2651, 2656, 2657, 2657, 2647, 2654, 2658, 2656, - 2663, 2662, 2658, 2653, 2664, 2655, 2662, 2662, 2665, 2666, - 2667, 2668, 2678, 2669, 2675, 2666, 2667, 2669, 2670, 2670, - 2673, 2681, 2675, 2663, 2664, 2673, 2676, 2679, 2665, 2676, - 2679, 2680, 2680, 2683, 2684, 2682, 2668, 2678, 2681, 2681, - - 2682, 2685, 2686, 2686, 2687, 2688, 2689, 2690, 2688, 2691, - 2692, 2683, 2694, 2692, 2684, 2685, 2688, 2691, 2687, 2693, - 2689, 2695, 2695, 2700, 2693, 2693, 2690, 2696, 2696, 2697, - 2697, 2694, 2698, 2698, 2699, 2699, 2701, 2702, 2703, 2700, - 2704, 2701, 2705, 2706, 2712, 2707, 2708, 2705, 2710, 2710, - 2711, 2715, 2706, 2711, 2714, 2714, 2724, 2702, 2715, 2704, - 2716, 2716, 2712, 2717, 2703, 2707, 2708, 2720, 2717, 2719, - 2719, 2721, 2722, 2727, 2724, 2726, 2720, 2725, 2725, 2726, - 2721, 2722, 2727, 2728, 2729, 2731, 2730, 2732, 2736, 2729, - 2729, 2732, 2740, 2736, 2731, 2737, 2737, 2741, 2728, 2730, - - 2739, 2739, 2742, 2744, 2745, 2748, 2740, 2750, 2749, 2751, - 2755, 2753, 2744, 2757, 2758, 2751, 2745, 2749, 2757, 2758, - 2742, 2797, 2741, 2753, 2759, 2759, 2760, 2750, 2762, 2769, - 2748, 2755, 2770, 2762, 2797, 2760, 2763, 2763, 2765, 2765, - 2763, 2766, 2766, 2767, 2767, 2768, 2777, 2771, 2774, 2769, - 2773, 2770, 2771, 2774, 2768, 2775, 2773, 2776, 2776, 2778, - 2775, 2779, 2780, 2781, 2777, 2783, 2782, 2780, 2784, 2784, - 2786, 2778, 2782, 2787, 2786, 2788, 2789, 2789, 2787, 2790, - 2788, 2781, 2779, 2793, 2791, 2792, 2795, 2795, 2798, 2799, - 2783, 2801, 2802, 2799, 2803, 2800, 2806, 2805, 2790, 2791, - - 2792, 2798, 2803, 2793, 2800, 2804, 2805, 2801, 2807, 2809, - 2804, 2802, 2808, 2808, 2806, 2811, 2811, 2812, 2812, 2814, - 2816, 2816, 2818, 2819, 2821, 2820, 2823, 2823, 2809, 2821, - 2824, 2825, 2826, 2829, 2807, 2828, 2828, 2830, 2818, 2819, - 2814, 2820, 2831, 2831, 2834, 2837, 2835, 2829, 2836, 2840, - 2824, 2826, 2835, 2836, 2825, 2842, 2830, 2838, 2838, 2839, - 2839, 2841, 2841, 2843, 2834, 2844, 2842, 2837, 2845, 2840, - 2846, 2847, 2843, 2848, 2845, 2849, 2849, 2850, 2851, 2851, - 2850, 2841, 2855, 2847, 2856, 2844, 2857, 2858, 2858, 2846, - 2860, 2861, 2857, 2848, 2855, 2859, 2860, 2863, 2859, 2864, - - 2864, 2865, 2863, 2866, 2856, 2867, 2865, 2868, 2871, 2861, - 2872, 2867, 2869, 2869, 2873, 2876, 2874, 2875, 2875, 2877, - 2871, 2878, 2866, 2877, 2868, 2868, 2880, 2880, 2872, 2874, - 2878, 2881, 2881, 2882, 2876, 2883, 2884, 2888, 2882, 2873, - 2895, 2884, 2885, 2885, 2886, 2886, 2887, 2887, 2889, 2883, - 2890, 2892, 2892, 2897, 2889, 2890, 2898, 2899, 2903, 2895, - 2900, 2900, 2904, 2888, 2902, 2902, 2910, 2905, 2906, 2906, - 2907, 2907, 2903, 2911, 2909, 2897, 2905, 0, 2898, 2899, - 2909, 2919, 2904, 2912, 2915, 2915, 2910, 2920, 2912, 2917, - 2917, 2918, 2911, 2920, 2921, 2919, 2918, 2922, 2923, 2923, - - 2926, 2927, 2924, 2928, 2929, 2922, 2921, 2924, 2928, 2930, - 2932, 2933, 2934, 2935, 2944, 2930, 2929, 2937, 2932, 2939, - 2926, 2927, 2938, 2940, 2941, 3041, 2943, 2948, 3041, 2941, - 2933, 2943, 2934, 2935, 2944, 2937, 2939, 2939, 2938, 2945, - 2950, 2946, 2960, 2949, 2940, 2945, 2946, 2948, 2949, 2953, - 2953, 2954, 2954, 2950, 2955, 2959, 2961, 2961, 2955, 2980, - 2959, 2960, 2963, 2963, 2964, 2964, 2967, 2964, 2965, 2965, - 2967, 2965, 2966, 2966, 2970, 2966, 2969, 2969, 2974, 2971, - 2975, 2976, 2977, 2977, 2980, 2982, 2976, 2981, 2983, 2982, - 2984, 2986, 2970, 2971, 2981, 2987, 0, 2983, 2974, 2991, - - 2975, 2988, 2988, 2992, 2987, 2984, 2989, 2989, 2992, 2986, - 2990, 2990, 2993, 2994, 2991, 2996, 2995, 2997, 2994, 2994, - 2998, 2993, 2995, 2999, 2993, 3000, 3001, 3013, 2999, 3003, - 3000, 3004, 2997, 3002, 3002, 3003, 3013, 3004, 3005, 3005, - 2996, 2998, 3006, 3006, 3008, 3001, 3007, 3007, 0, 3008, - 3011, 3011, 3012, 3012, 3016, 3016, 3017, 3017, 3018, 3018, - 3019, 3019, 3020, 3020, 3021, 3021, 3022, 3022, 3024, 3025, - 3025, 3026, 3027, 3028, 3032, 3030, 3034, 3024, 3031, 3031, - 3026, 3036, 3033, 3040, 3027, 3035, 3035, 3042, 3034, 3032, - 3037, 3037, 3044, 3028, 3030, 3033, 3036, 3043, 3043, 3046, - - 3047, 3040, 3046, 3048, 3049, 3050, 3047, 3051, 3054, 3049, - 3044, 3052, 3055, 3042, 3054, 3059, 3062, 3048, 3072, 3070, - 3077, 3055, 3070, 0, 3050, 3051, 3080, 3052, 3073, 3073, - 3059, 3072, 3074, 3074, 3075, 3075, 3078, 3079, 3081, 3083, - 3084, 3079, 3062, 3077, 3085, 3078, 3080, 3089, 3086, 3085, - 3086, 3084, 3081, 3087, 3088, 3088, 3090, 3092, 3091, 3093, - 3089, 3095, 3083, 3094, 3097, 3096, 3098, 3099, 3087, 3100, - 3095, 3098, 3104, 3092, 3100, 3090, 3091, 3096, 3094, 3105, - 3106, 3106, 3107, 3112, 3093, 3097, 3104, 3099, 3108, 3108, - 3113, 3107, 3109, 3109, 3110, 3110, 3111, 3111, 3114, 3105, - - 3115, 3114, 3112, 3116, 3117, 3115, 3118, 3119, 3116, 3120, - 3113, 3122, 3121, 3119, 3123, 3126, 3122, 3124, 3124, 3125, - 3125, 3118, 3127, 3120, 3121, 3128, 3128, 3130, 3132, 3117, - 3126, 3135, 3135, 3138, 3123, 3136, 3136, 3137, 3139, 3141, - 3143, 3127, 3130, 3140, 3139, 3137, 3132, 3142, 3149, 3140, - 3144, 3150, 3138, 3141, 3152, 3144, 3145, 3145, 3155, 3143, - 3142, 3146, 3146, 3153, 3157, 3156, 3158, 3153, 3152, 3149, - 3156, 3150, 3159, 3160, 3166, 3161, 3162, 3167, 3155, 3158, - 3161, 3162, 3168, 3157, 3171, 3159, 3163, 3163, 3169, 3169, - 3171, 3170, 3160, 3176, 3166, 3167, 3170, 3172, 3172, 3173, - - 3174, 3168, 3175, 3177, 3173, 3174, 3184, 3175, 3180, 3177, - 3179, 3179, 3176, 3180, 3181, 3181, 3183, 3185, 3186, 3187, - 3183, 3188, 3189, 3190, 3185, 3184, 0, 3188, 3192, 3192, - 3194, 3194, 3197, 3195, 3196, 3198, 3190, 3186, 3187, 3196, - 3199, 3189, 3195, 3200, 3200, 3195, 3202, 3201, 3204, 3205, - 3205, 3197, 3201, 3199, 3198, 0, 3206, 3207, 3207, 3202, - 3208, 3208, 3209, 3210, 3211, 3212, 3212, 3209, 3213, 3214, - 3210, 3214, 3216, 3213, 3204, 3206, 3215, 3215, 3217, 3216, - 3218, 3219, 3220, 3211, 3223, 3217, 3219, 3222, 3222, 3225, - 3226, 3227, 3228, 3232, 3225, 3226, 3229, 3229, 3233, 3218, - - 0, 3220, 0, 3223, 3231, 3231, 3234, 3234, 3235, 3235, - 3227, 3228, 3232, 3236, 3238, 3238, 3240, 3233, 3239, 3239, - 3236, 3242, 3245, 3240, 3246, 3247, 3242, 3245, 3248, 3248, - 3249, 3249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3246, 3247, 3253, 3253, 3253, 3253, 3253, - 3253, 3253, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3255, - 3255, 3255, 3255, 3255, 3255, 3255, 3256, 3256, 3256, 3256, - 3256, 3256, 3256, 3257, 3257, 3257, 3257, 3257, 3257, 3257, - 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3259, 3259, 3259, - 3259, 3259, 3259, 3259, 3261, 3261, 0, 3261, 3261, 3261, - - 3261, 3262, 3262, 0, 0, 0, 3262, 3262, 3263, 3263, - 0, 0, 3263, 0, 3263, 3264, 0, 0, 0, 0, - 0, 3264, 3265, 3265, 0, 0, 0, 3265, 3265, 3266, - 0, 0, 0, 0, 0, 3266, 3267, 3267, 0, 3267, - 3267, 3267, 3267, 3268, 0, 0, 0, 0, 0, 3268, - 3269, 3269, 0, 0, 0, 3269, 3269, 3270, 3270, 0, - 3270, 3270, 3270, 3270, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - - 3252, 3252, 3252, 3252, 3252 + 1713, 1716, 1717, 1718, 1719, 1720, 1719, 1724, 1715, 1721, + 1721, 1722, 1722, 1723, 1723, 1725, 1725, 1727, 1717, 1720, + 1716, 1720, 1728, 1718, 1726, 1726, 1730, 1724, 1729, 1729, + + 1730, 1731, 1732, 1734, 1735, 1732, 1736, 1731, 1727, 1734, + 1737, 1738, 1736, 1728, 1738, 1739, 1739, 1740, 1741, 1742, + 1742, 1743, 1735, 1741, 1744, 1745, 1745, 1746, 1747, 1744, + 0, 1748, 1746, 1749, 1747, 1737, 1750, 1740, 1752, 1757, + 1751, 1757, 1743, 1748, 1748, 1748, 1751, 1755, 1756, 1754, + 1748, 1758, 1759, 1749, 1754, 1754, 1750, 1761, 1752, 1760, + 1762, 1755, 1758, 1756, 1763, 1760, 1761, 1759, 1764, 1764, + 1765, 1766, 1766, 1767, 1771, 1768, 1769, 1769, 1770, 1770, + 1762, 1774, 1774, 1775, 1779, 1763, 1776, 1781, 1781, 1778, + 1782, 1786, 1783, 1767, 1771, 1776, 1765, 1768, 1778, 1788, + + 1780, 1785, 1784, 1787, 1787, 1779, 1780, 1783, 1775, 1784, + 1785, 1782, 1789, 1791, 1792, 1793, 1794, 1786, 1791, 1800, + 1792, 1795, 1801, 1794, 1796, 1788, 1802, 1795, 1789, 1798, + 1796, 1797, 1797, 1799, 1798, 1793, 1804, 1803, 1802, 1800, + 1803, 1801, 1799, 1805, 1806, 1806, 1807, 1808, 1809, 1810, + 1813, 1811, 1807, 1808, 1804, 1811, 1814, 1815, 1816, 1816, + 1817, 1818, 1815, 1820, 1810, 1823, 1822, 1828, 1809, 1805, + 1813, 1811, 1822, 1821, 1823, 1826, 1818, 1821, 1814, 1817, + 1824, 1824, 1820, 1825, 1827, 1827, 1826, 1825, 1828, 1829, + 1830, 1826, 1831, 1832, 1833, 1834, 1835, 1831, 1839, 1836, + + 1843, 1834, 1839, 1829, 1836, 1837, 1837, 1838, 1838, 1830, + 1841, 1835, 1842, 1832, 1833, 1844, 1844, 1846, 1846, 1841, + 1843, 1847, 1850, 1842, 1848, 1849, 1847, 1847, 1842, 1851, + 1848, 1849, 1852, 1853, 1851, 1855, 1856, 1857, 1858, 1853, + 1856, 1863, 1860, 1866, 1852, 1859, 1861, 1855, 1850, 1857, + 1862, 1859, 1861, 1863, 1865, 1862, 1867, 1869, 1870, 1870, + 1869, 1867, 1866, 1858, 1860, 1873, 1865, 1871, 1871, 1872, + 1872, 1874, 1875, 1878, 1876, 1877, 0, 1874, 1875, 1876, + 1883, 1877, 1878, 1880, 1882, 1873, 1886, 1882, 1880, 1884, + 1884, 1887, 1883, 1890, 1888, 1889, 1889, 1895, 1886, 1888, + + 1891, 1892, 1890, 1887, 1893, 1891, 1892, 1893, 1894, 1894, + 1896, 1897, 1898, 1905, 1899, 1900, 1901, 1895, 1899, 1896, + 1900, 1902, 1901, 1903, 1904, 1907, 1907, 1905, 1908, 1897, + 1910, 1898, 1903, 1913, 1909, 1911, 1911, 1907, 1912, 1902, + 1914, 1916, 1904, 1909, 1915, 1913, 1908, 1912, 1922, 1915, + 1910, 1919, 1919, 1921, 1916, 1923, 1921, 1925, 1928, 1926, + 1927, 1914, 1929, 1929, 1922, 1930, 1927, 1930, 1931, 1931, + 1932, 1923, 1925, 1926, 1940, 1928, 1934, 1934, 1932, 1935, + 1935, 1937, 1938, 1939, 1941, 1942, 1942, 1937, 1938, 1943, + 1939, 1944, 1948, 1945, 1946, 1947, 1940, 1950, 1943, 1949, + + 1952, 1953, 1957, 1950, 1941, 1945, 1946, 1947, 1956, 1954, + 1955, 1955, 1944, 1960, 1949, 1963, 1950, 1963, 1948, 1964, + 1952, 1954, 1957, 1970, 1953, 1958, 1956, 1959, 1958, 1962, + 1965, 1966, 1959, 1960, 1962, 1965, 1968, 1964, 1966, 1971, + 1972, 1970, 1973, 1974, 1973, 1968, 1977, 1976, 1971, 1976, + 1978, 1978, 1972, 1979, 1980, 1981, 1982, 1981, 1983, 1980, + 1977, 1982, 1974, 1983, 1984, 1985, 1986, 1988, 1987, 1989, + 1991, 1995, 1986, 1987, 1992, 1993, 1993, 1989, 1996, 1979, + 1988, 1997, 1984, 1994, 1994, 1985, 1995, 1997, 1992, 1991, + 1998, 1999, 2000, 1999, 2003, 1998, 2001, 2008, 1996, 2002, + + 2002, 2004, 2004, 2012, 2001, 2006, 2003, 2005, 2005, 2010, + 2000, 2007, 2001, 2014, 2006, 2008, 2007, 2011, 2010, 2011, + 2013, 2010, 2014, 2015, 2012, 2013, 2013, 2017, 2018, 2019, + 2021, 2022, 2023, 2018, 2019, 2015, 2024, 2024, 2025, 2017, + 2026, 2023, 2029, 2021, 2027, 2028, 2033, 2034, 2035, 2031, + 2032, 2022, 2034, 2035, 2036, 2042, 2025, 2029, 2026, 2028, + 2027, 2031, 2032, 2036, 2039, 2041, 2033, 2043, 2044, 2045, + 2039, 2041, 2046, 2047, 2047, 2048, 2049, 2049, 2042, 2050, + 2053, 2046, 2043, 2039, 2048, 2051, 2044, 2052, 2054, 2051, + 2055, 2056, 2052, 2053, 2045, 2055, 2055, 2056, 2050, 2057, + + 2058, 2059, 2060, 2058, 2065, 2057, 2063, 2063, 2068, 2059, + 2054, 2064, 2064, 2065, 2066, 2066, 2067, 2067, 2069, 2070, + 2068, 2075, 2060, 2071, 2078, 2070, 2064, 2075, 2071, 2072, + 2072, 2073, 2073, 2074, 2080, 2077, 2069, 2064, 2074, 2077, + 2082, 2079, 2083, 2084, 2078, 2079, 2085, 2083, 2086, 2087, + 2089, 2090, 2088, 2086, 2080, 2091, 2090, 2092, 2092, 2093, + 2094, 2085, 2096, 2093, 2095, 2082, 2084, 2087, 2088, 2095, + 2089, 2097, 2098, 2099, 2100, 2094, 2102, 2091, 2101, 2100, + 2103, 2103, 2105, 2106, 2098, 2107, 2108, 2109, 2096, 2097, + 2105, 2101, 2099, 2110, 2102, 2111, 2112, 2113, 2115, 2118, + + 2122, 2117, 2106, 2122, 2107, 2118, 2120, 2120, 2112, 2108, + 2123, 2109, 2110, 2115, 2117, 2119, 2111, 2119, 2113, 2121, + 2124, 2129, 2125, 2123, 2121, 2126, 2126, 2127, 2127, 2128, + 2128, 2130, 2131, 2131, 2124, 2125, 2129, 2132, 2133, 2133, + 2134, 2134, 2135, 2137, 2130, 2138, 2132, 2135, 2137, 2132, + 2139, 2140, 2141, 2141, 2142, 2142, 2143, 2144, 2144, 2145, + 2146, 2146, 2148, 2140, 2147, 2138, 2151, 2148, 2149, 2149, + 2139, 2150, 2150, 2152, 2153, 2143, 2154, 2145, 2156, 2147, + 2151, 2158, 2152, 2156, 2157, 2157, 2159, 2159, 2153, 2160, + 2161, 2162, 2163, 2163, 2162, 2154, 2161, 2164, 2164, 2165, + + 2158, 2166, 2167, 2168, 2168, 2170, 2171, 2160, 2163, 2172, + 2173, 2174, 2174, 2175, 2173, 2176, 2166, 2183, 2165, 2177, + 2176, 2167, 2178, 2181, 2172, 2170, 2180, 2180, 2182, 2171, + 2184, 2183, 2175, 2185, 2177, 2182, 2186, 2178, 2187, 2187, + 2188, 2192, 2189, 2181, 2189, 2195, 2199, 2190, 2184, 2188, + 2190, 2185, 2193, 2192, 2194, 2196, 2197, 2193, 2198, 2194, + 2203, 2201, 2186, 2198, 2202, 2190, 2201, 2190, 2196, 2202, + 2195, 2205, 2199, 2204, 2206, 2203, 2207, 2197, 2208, 2204, + 2206, 2207, 2209, 2208, 2210, 2211, 2212, 2213, 2211, 2214, + 2215, 2216, 2205, 2221, 2217, 2212, 2213, 2210, 2214, 2215, + + 2217, 2228, 2218, 2223, 2227, 2216, 2219, 2209, 2218, 2227, + 2219, 2225, 2223, 2221, 2224, 2224, 2230, 2225, 2226, 2226, + 2231, 2228, 2233, 2228, 2232, 2232, 2234, 2226, 2236, 2237, + 2239, 2238, 2230, 2243, 2242, 2234, 2231, 2233, 2241, 2242, + 2236, 2241, 2239, 2244, 0, 2237, 2238, 2245, 2245, 2246, + 2246, 2248, 2248, 2243, 2249, 2244, 2250, 2249, 2251, 2252, + 2253, 2250, 2254, 2254, 2251, 2252, 2255, 2256, 2256, 2253, + 2257, 2258, 2259, 2260, 2260, 2261, 2262, 2271, 2263, 0, + 2255, 2261, 2257, 2263, 2265, 2258, 2266, 2269, 2265, 2266, + 2262, 2259, 2267, 2267, 2268, 2270, 2269, 2271, 2272, 2268, + + 2273, 2273, 2272, 2274, 2270, 2276, 2277, 2278, 2279, 2280, + 2276, 2281, 2282, 2280, 2283, 2284, 2274, 2282, 2285, 2286, + 2283, 2284, 2279, 2287, 2288, 2290, 2277, 2278, 2287, 2292, + 2291, 2281, 2294, 2293, 2292, 2298, 2285, 2290, 2286, 2293, + 2294, 2295, 2301, 2295, 2307, 2288, 2291, 2299, 2299, 2298, + 2300, 2302, 2302, 2300, 2305, 2306, 2307, 2309, 2305, 2308, + 2308, 2306, 2312, 2312, 2314, 2316, 2309, 2317, 2301, 2320, + 2321, 2322, 2323, 2330, 2320, 2331, 2322, 2323, 0, 2316, + 2324, 2324, 2314, 2317, 2326, 2326, 2328, 2329, 2329, 2330, + 2332, 2334, 2328, 2335, 2338, 2332, 2321, 2331, 2336, 2336, + + 2339, 2340, 2341, 2338, 2345, 2335, 2339, 2343, 2343, 2344, + 2334, 2346, 2344, 2348, 2348, 2349, 2349, 2341, 2351, 2340, + 2350, 2352, 2353, 2345, 2354, 2350, 2354, 2353, 2355, 2346, + 2352, 2356, 2357, 2358, 2359, 2360, 2351, 2482, 2358, 2366, + 2360, 2482, 2355, 2365, 2357, 2356, 2361, 2361, 2362, 2362, + 2363, 2363, 2364, 2364, 2359, 2365, 2367, 2366, 2368, 2368, + 2370, 2367, 2369, 2369, 2371, 2372, 2373, 2374, 2374, 2375, + 2376, 2376, 2370, 2377, 2377, 2378, 2371, 2379, 2381, 2382, + 2380, 2384, 2373, 2385, 2388, 2372, 2378, 2380, 2375, 2379, + 2381, 2383, 2386, 2386, 2389, 2387, 2383, 2391, 2390, 2382, + + 2393, 2384, 2392, 2385, 2387, 2394, 2394, 2396, 2395, 2397, + 2388, 2390, 2393, 2399, 2389, 2400, 2392, 2395, 2401, 2403, + 2402, 2391, 2396, 2402, 2397, 2404, 0, 2405, 2406, 2406, + 2404, 2399, 2405, 2403, 2407, 2407, 2413, 2400, 2408, 2408, + 2414, 2401, 2410, 2410, 2412, 2412, 2415, 2416, 2418, 2419, + 2420, 2414, 2422, 2421, 2413, 2423, 2424, 2425, 2424, 0, + 2426, 2422, 2416, 2427, 2432, 2415, 2438, 2419, 2418, 2428, + 2428, 2431, 2420, 2421, 2433, 2423, 2439, 2425, 2426, 2430, + 2430, 2427, 2436, 2433, 2438, 2431, 2432, 2434, 2434, 2437, + 2437, 2436, 2440, 2441, 2439, 2442, 2443, 2448, 2445, 2440, + + 2444, 2446, 2446, 2447, 2447, 2449, 2450, 2450, 2441, 2451, + 2451, 2449, 2452, 2442, 2443, 2448, 2444, 2445, 2452, 2453, + 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2456, 2460, 2465, + 2459, 2461, 2461, 2467, 2462, 2454, 2462, 2453, 2463, 2463, + 2455, 2468, 2467, 2457, 2458, 2469, 2470, 2471, 2465, 2472, + 2479, 2473, 2471, 2476, 2480, 2477, 2484, 2469, 2477, 2490, + 2468, 2478, 2478, 2481, 2481, 2479, 2470, 2486, 2486, 2472, + 2473, 2484, 2480, 2476, 2485, 2487, 2489, 2491, 2485, 2490, + 2492, 2492, 2494, 2495, 2498, 2496, 2497, 2497, 2487, 2496, + 2501, 2489, 2495, 2500, 2494, 2499, 2499, 2491, 2500, 2501, + + 2502, 2503, 2510, 2498, 2504, 2504, 2509, 2509, 2511, 2511, + 2512, 2514, 2513, 2503, 2516, 2516, 2502, 2515, 2517, 2527, + 2514, 2519, 2519, 2512, 2510, 2513, 2515, 2522, 2524, 2523, + 2525, 2526, 2522, 2517, 2523, 2525, 2528, 2531, 2527, 2526, + 2529, 2532, 2524, 2534, 2533, 2528, 2532, 0, 2529, 2533, + 2535, 2535, 2531, 2536, 2536, 2537, 2537, 2538, 2534, 2540, + 2539, 2541, 2542, 2545, 2538, 2539, 2543, 2546, 2542, 2544, + 2544, 2543, 2546, 2547, 2547, 2548, 2548, 2540, 2545, 2541, + 2551, 2552, 2552, 2553, 2554, 2557, 2553, 2555, 2558, 2554, + 2554, 2556, 2555, 2551, 2558, 2560, 2556, 2559, 2561, 2557, + + 2560, 2559, 2562, 2563, 2564, 2567, 2565, 2561, 2566, 2568, + 2567, 2563, 2565, 2570, 2566, 2574, 2572, 2562, 2571, 2572, + 2570, 2568, 2578, 2571, 2576, 2564, 2577, 2574, 2579, 2576, + 2580, 2577, 2586, 2581, 2582, 2582, 2583, 2587, 2586, 2580, + 2578, 2579, 2581, 2587, 2590, 2583, 2591, 2595, 2592, 2593, + 2593, 2594, 2598, 2596, 2597, 2597, 2595, 2600, 2602, 2605, + 2603, 2604, 2604, 2590, 2603, 0, 2591, 2592, 2596, 2606, + 2594, 2598, 2600, 2607, 2608, 2606, 2609, 2609, 2602, 2607, + 2608, 2610, 2611, 2613, 2605, 2614, 2616, 2611, 2617, 2610, + 2616, 2618, 2613, 2620, 2620, 2621, 2622, 2622, 2614, 2623, + + 2623, 2626, 2617, 2625, 2625, 2626, 2618, 2627, 2629, 2629, + 2631, 2632, 2627, 2621, 2633, 2634, 2632, 2636, 2637, 2637, + 2634, 2634, 2639, 2639, 2640, 2640, 2633, 2642, 2641, 2644, + 2631, 2641, 2646, 2647, 2647, 2648, 2648, 2636, 2649, 2649, + 2642, 2650, 2651, 2651, 2652, 2653, 2654, 2644, 2655, 2656, + 2656, 2657, 2646, 2661, 2655, 2657, 2650, 2652, 2661, 2661, + 2654, 2662, 2663, 2653, 2665, 2664, 2666, 2667, 2677, 2668, + 2665, 2672, 2666, 2668, 2669, 2669, 2672, 2675, 2674, 2680, + 2675, 2684, 2663, 2682, 2662, 2664, 2674, 2678, 2679, 2679, + 2678, 2683, 2667, 2677, 2681, 2684, 2680, 2680, 2686, 2681, + + 2688, 2682, 2685, 2685, 2687, 2689, 2693, 2687, 2690, 2694, + 2694, 2683, 2686, 2691, 2688, 2687, 2690, 2692, 2691, 2691, + 2695, 2695, 2692, 2692, 2689, 2693, 2696, 2696, 2697, 2697, + 2698, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2700, 2706, + 2705, 0, 2704, 2707, 2709, 2709, 2711, 2710, 2699, 2705, + 2710, 2713, 2713, 2714, 2701, 2703, 2715, 2715, 2723, 2706, + 2714, 2702, 2716, 2707, 2711, 2718, 2718, 2716, 2719, 2720, + 2721, 2724, 2724, 2726, 2727, 2729, 2723, 2719, 2720, 2721, + 2725, 2728, 2726, 2730, 2725, 2740, 2728, 2728, 2729, 2727, + 2731, 2735, 2730, 2739, 2731, 2741, 2735, 2736, 2736, 2738, + + 2738, 2747, 2743, 2744, 2749, 2748, 2750, 2739, 2752, 2754, + 2740, 2743, 2750, 2741, 2748, 2744, 2756, 2757, 2758, 2758, + 2752, 2756, 2757, 2759, 2749, 2768, 2747, 2769, 2761, 3086, + 2754, 3086, 2759, 2761, 2762, 2762, 2764, 2764, 2762, 2765, + 2765, 2766, 2766, 2767, 2770, 2768, 2769, 2772, 2776, 2770, + 2773, 2774, 2767, 2772, 2778, 2773, 2774, 2775, 2775, 2777, + 2779, 2780, 2781, 2782, 2789, 2779, 2776, 2793, 2781, 2783, + 2783, 2777, 2785, 2786, 2790, 2778, 2785, 2787, 2786, 2780, + 2788, 2788, 2787, 2789, 2791, 2795, 2795, 2793, 2782, 2790, + 2797, 2798, 2799, 2800, 2801, 2802, 2799, 2803, 2805, 2791, + + 2806, 2804, 2800, 2797, 2798, 2803, 2804, 2805, 2807, 2809, + 2801, 2808, 2808, 2818, 2802, 2811, 2811, 2814, 2806, 2812, + 2812, 2816, 2816, 2819, 2820, 2821, 2823, 2823, 2809, 2818, + 2821, 2824, 2825, 2826, 2807, 2828, 2828, 2834, 2814, 2819, + 2820, 2830, 2829, 2831, 2831, 2836, 2837, 2835, 2838, 2838, + 2836, 2824, 2826, 2835, 2840, 2825, 2829, 2834, 2839, 2839, + 2830, 2841, 2841, 2843, 2842, 2844, 2847, 2845, 2837, 2846, + 2848, 2856, 2843, 2845, 2840, 2842, 2849, 2849, 2847, 2850, + 2855, 2841, 2850, 2851, 2851, 2844, 2859, 2857, 2846, 2859, + 2848, 2856, 2855, 2857, 2858, 2858, 2860, 2861, 2863, 2864, + + 2864, 2865, 2860, 2863, 2866, 2867, 2865, 2868, 2869, 2869, + 2871, 2867, 2872, 2873, 2874, 2861, 2875, 2875, 2876, 2877, + 2878, 2882, 2871, 2866, 2868, 2868, 2882, 2874, 2883, 2878, + 2872, 2880, 2880, 2881, 2881, 2877, 2884, 2876, 2873, 2885, + 2885, 2884, 2883, 2886, 2886, 2887, 2887, 2888, 2889, 2895, + 2890, 2892, 2892, 2897, 2889, 2890, 2898, 2899, 2900, 2900, + 2902, 2902, 2903, 2904, 2910, 2905, 2906, 2906, 2895, 2907, + 2907, 2909, 2911, 2888, 2905, 2897, 2903, 2909, 2898, 2899, + 2912, 2915, 2915, 2904, 2910, 2912, 2917, 2917, 2918, 2919, + 2920, 2911, 2921, 2918, 2922, 2924, 2920, 2923, 2923, 2926, + + 2924, 2927, 2922, 2919, 2921, 2928, 2929, 2930, 2932, 2933, + 2928, 2934, 2935, 2930, 2938, 2937, 2932, 2939, 2929, 2926, + 2940, 2927, 2941, 2944, 2943, 2948, 0, 2941, 2933, 2943, + 2938, 2934, 2935, 2937, 2939, 2939, 2945, 2949, 2950, 2946, + 2949, 2940, 2945, 2944, 2946, 2948, 2953, 2953, 2954, 2954, + 2955, 2950, 2959, 2960, 2955, 2961, 2961, 2959, 2963, 2963, + 2964, 2964, 2967, 2964, 2965, 2965, 2967, 2965, 2966, 2966, + 2970, 2966, 2960, 2969, 2969, 2971, 2974, 2975, 2976, 2977, + 2977, 2980, 2982, 2976, 2981, 2983, 2982, 2984, 2970, 2971, + 2986, 2981, 2987, 0, 2983, 2996, 2974, 2975, 2988, 2988, + + 2991, 2987, 2984, 2989, 2989, 2993, 2980, 2992, 2986, 2990, + 2990, 2997, 2992, 2994, 2993, 2991, 2995, 2993, 2994, 2994, + 2996, 2998, 2995, 2999, 3000, 3001, 2997, 3003, 2999, 3000, + 3002, 3002, 3004, 3003, 3005, 3005, 3006, 3006, 3004, 3007, + 3008, 3013, 2998, 0, 3001, 3008, 3011, 3011, 3012, 3012, + 3013, 3016, 3016, 3028, 3007, 3017, 3017, 3018, 3018, 3019, + 3019, 3020, 3020, 3021, 3021, 3022, 3022, 3024, 3025, 3025, + 3026, 3027, 3030, 3028, 3031, 3031, 3024, 3032, 3034, 3026, + 3033, 3035, 3035, 3027, 3036, 3037, 3037, 3040, 3042, 3044, + 3034, 3030, 3032, 3033, 3041, 3043, 3043, 3041, 3046, 3036, + + 3047, 3046, 3048, 3049, 3050, 3040, 3047, 3044, 3049, 3051, + 3052, 3054, 3055, 3059, 3042, 3058, 3048, 3054, 3062, 3058, + 3072, 3055, 3070, 3050, 3077, 3070, 3052, 3051, 3059, 3073, + 3073, 3074, 3074, 3072, 3075, 3075, 3078, 3079, 3080, 3081, + 3083, 3079, 3087, 3084, 3062, 3078, 3085, 3077, 3088, 3088, + 3090, 3085, 3089, 3081, 3084, 3091, 3092, 3087, 3080, 3093, + 3094, 3095, 3096, 3083, 3098, 3089, 3097, 3100, 3106, 3090, + 3095, 3097, 3092, 3091, 3096, 3094, 3099, 3101, 3105, 3107, + 3107, 3099, 3101, 3113, 3093, 3098, 3108, 3100, 3106, 3109, + 3109, 3114, 3105, 3110, 3110, 3108, 3111, 3111, 3112, 3112, + + 3115, 3116, 3113, 3115, 3117, 3118, 3116, 3119, 3120, 3117, + 3121, 3114, 3123, 3122, 3120, 3124, 3124, 3123, 3125, 3126, + 3126, 3128, 3119, 3129, 3121, 3122, 3127, 3127, 3130, 3130, + 3118, 3132, 3134, 3137, 3137, 3139, 3128, 3140, 3125, 3138, + 3138, 3141, 3129, 3139, 3143, 3142, 3132, 3141, 3144, 3145, + 3134, 3142, 3146, 3147, 3147, 3152, 3140, 3146, 3143, 3149, + 3149, 3144, 3153, 3155, 3158, 3156, 3159, 3160, 3145, 3156, + 3161, 3159, 3162, 3163, 3164, 3165, 3152, 3155, 3169, 3164, + 3165, 3170, 3153, 3161, 3158, 3162, 3160, 3166, 3166, 3171, + 3172, 3172, 3163, 3175, 3175, 3173, 3174, 3179, 3169, 3170, + + 3173, 3176, 3174, 3187, 3177, 3178, 3176, 3180, 3171, 3177, + 3178, 3182, 3182, 3180, 3183, 3189, 3179, 3184, 3184, 3183, + 3186, 3188, 3187, 3190, 3186, 3191, 3192, 3193, 3188, 3195, + 3195, 3191, 3197, 3197, 3189, 3198, 3199, 3200, 3201, 3202, + 3193, 3199, 3190, 3207, 3198, 3192, 3204, 3198, 3203, 3203, + 3205, 3204, 3202, 3208, 3208, 3209, 3200, 3201, 3210, 3210, + 3211, 3211, 3212, 3205, 3213, 3214, 3217, 3212, 3217, 3207, + 3216, 3213, 3215, 3215, 3209, 3216, 3218, 3218, 3219, 3220, + 3221, 3223, 3222, 3226, 3214, 3219, 3220, 3222, 3225, 3225, + 3228, 3229, 3230, 3231, 3235, 3228, 3229, 3232, 3232, 3221, + + 3223, 3236, 3226, 3234, 3234, 3237, 3237, 3238, 3238, 3239, + 3249, 3230, 3231, 3235, 3241, 3241, 3239, 3242, 3242, 3243, + 3236, 3250, 3245, 3248, 3251, 3251, 3243, 3245, 3248, 3249, + 3252, 3252, 0, 0, 0, 0, 0, 0, 0, 0, + 3250, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3257, 3257, + 3257, 3257, 3257, 3257, 3257, 3258, 3258, 3258, 3258, 3258, + 3258, 3258, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3261, 3261, 3261, 3261, + 3261, 3261, 3261, 3262, 3262, 3262, 3262, 3262, 3262, 3262, + 3264, 3264, 0, 3264, 3264, 3264, 3264, 3265, 3265, 0, + + 0, 0, 3265, 3265, 3266, 3266, 0, 0, 3266, 0, + 3266, 3267, 0, 0, 0, 0, 0, 3267, 3268, 3268, + 0, 0, 0, 3268, 3268, 3269, 0, 0, 0, 0, + 0, 3269, 3270, 3270, 0, 3270, 3270, 3270, 3270, 3271, + 0, 0, 0, 0, 0, 3271, 3272, 3272, 0, 0, + 0, 3272, 3272, 3273, 3273, 0, 3273, 3273, 3273, 3273, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + + 3255 } ; static yy_state_type yy_last_accepting_state; @@ -3112,7 +3114,7 @@ static void config_end_include(void) } #endif -#line 3114 "" +#line 3116 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3121,10 +3123,10 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3123 "" - #line 3125 "" +#line 3127 "" + #define INITIAL 0 #define quotedstring 1 #define singlequotedstr 2 @@ -3347,7 +3349,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3349 "" +#line 3351 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3380,13 +3382,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 >= 3253 ) + if ( yy_current_state >= 3256 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 6365 ); + while ( yy_base[yy_current_state] != 6361 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4942,12 +4944,12 @@ YY_RULE_SETUP case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_TAG) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 306: /* rule 306 can match eol */ @@ -5218,7 +5220,7 @@ YY_RULE_SETUP #line 662 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5220 "" +#line 5222 "" case YY_END_OF_BUFFER: { @@ -5513,7 +5515,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 >= 3253 ) + if ( yy_current_state >= 3256 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5541,11 +5543,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 >= 3253 ) + if ( yy_current_state >= 3256 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3252); + yy_is_jam = (yy_current_state == 3255); return yy_is_jam ? 0 : yy_current_state; } diff --git a/util/configlexer.lex b/util/configlexer.lex index ea7c1cf72..a825d8156 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -526,8 +526,8 @@ name-v4{COLON} { YDVAR(1, VAR_IPSET_NAME_V4) } name-v6{COLON} { YDVAR(1, VAR_IPSET_NAME_V6) } udp-upstream-without-downstream{COLON} { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } -edns-client-tag{COLON} { YDVAR(2, VAR_EDNS_CLIENT_TAG) } -edns-client-tag-opcode{COLON} { YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } +edns-client-string{COLON} { YDVAR(2, VAR_EDNS_CLIENT_STRING) } +edns-client-string-opcode{COLON} { YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } {NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; } /* Quoted strings. Strip leading and ending quotes */ diff --git a/util/configparser.c b/util/configparser.c index ba5054eb4..adb3e53be 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -438,8 +438,8 @@ extern int yydebug; VAR_RPZ_LOG_NAME = 550, VAR_DYNLIB = 551, VAR_DYNLIB_FILE = 552, - VAR_EDNS_CLIENT_TAG = 553, - VAR_EDNS_CLIENT_TAG_OPCODE = 554 + VAR_EDNS_CLIENT_STRING = 553, + VAR_EDNS_CLIENT_STRING_OPCODE = 554 }; #endif /* Tokens. */ @@ -738,8 +738,8 @@ extern int yydebug; #define VAR_RPZ_LOG_NAME 550 #define VAR_DYNLIB 551 #define VAR_DYNLIB_FILE 552 -#define VAR_EDNS_CLIENT_TAG 553 -#define VAR_EDNS_CLIENT_TAG_OPCODE 554 +#define VAR_EDNS_CLIENT_STRING 553 +#define VAR_EDNS_CLIENT_STRING_OPCODE 554 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -1154,69 +1154,69 @@ static const yytype_int16 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 184, 184, 184, 185, 185, 186, 186, 187, 187, - 187, 188, 188, 189, 189, 190, 190, 191, 193, 199, - 204, 205, 206, 206, 206, 207, 207, 208, 208, 208, - 209, 209, 210, 210, 210, 211, 211, 212, 212, 212, - 213, 213, 213, 214, 214, 215, 215, 216, 216, 217, - 217, 218, 218, 219, 219, 220, 220, 221, 221, 222, - 222, 222, 223, 223, 223, 224, 224, 224, 225, 225, - 226, 226, 227, 227, 228, 228, 229, 229, 229, 230, - 230, 231, 231, 232, 232, 232, 233, 233, 234, 234, - 235, 235, 236, 236, 236, 237, 237, 238, 238, 239, - 239, 240, 240, 241, 241, 242, 242, 242, 243, 243, - 244, 244, 244, 245, 245, 245, 246, 246, 246, 247, - 247, 247, 247, 248, 249, 249, 249, 250, 250, 250, - 251, 251, 252, 253, 253, 253, 254, 254, 255, 255, - 256, 256, 256, 257, 257, 258, 258, 258, 259, 260, - 260, 261, 261, 262, 263, 263, 264, 264, 265, 265, - 266, 267, 267, 268, 268, 269, 269, 270, 270, 271, - 271, 272, 272, 272, 273, 273, 274, 274, 275, 275, - 276, 276, 277, 277, 278, 278, 279, 279, 279, 280, - 280, 280, 281, 281, 281, 282, 282, 283, 284, 284, - 285, 285, 286, 286, 287, 287, 288, 288, 288, 289, - 289, 289, 290, 290, 290, 291, 291, 292, 292, 293, - 293, 294, 294, 295, 297, 309, 310, 311, 311, 311, - 311, 311, 312, 312, 314, 326, 327, 328, 328, 328, - 328, 329, 329, 331, 345, 346, 347, 347, 347, 347, - 348, 348, 348, 350, 367, 368, 369, 369, 369, 369, - 370, 370, 370, 371, 374, 393, 410, 418, 428, 436, - 453, 454, 455, 455, 455, 455, 455, 456, 456, 456, - 457, 457, 459, 468, 477, 488, 497, 506, 515, 526, - 535, 547, 561, 576, 587, 604, 621, 638, 655, 670, - 685, 698, 713, 722, 731, 740, 749, 758, 767, 776, - 785, 794, 803, 812, 821, 830, 839, 852, 861, 874, - 883, 892, 901, 908, 915, 924, 931, 940, 948, 955, - 962, 970, 979, 986, 1002, 1010, 1018, 1026, 1034, 1043, - 1052, 1066, 1075, 1084, 1093, 1102, 1111, 1120, 1127, 1134, - 1160, 1168, 1175, 1182, 1189, 1196, 1204, 1212, 1220, 1227, - 1238, 1249, 1256, 1265, 1274, 1283, 1290, 1297, 1305, 1313, - 1323, 1333, 1343, 1357, 1365, 1378, 1389, 1397, 1410, 1419, - 1428, 1437, 1447, 1457, 1465, 1478, 1487, 1495, 1504, 1512, - 1525, 1534, 1541, 1551, 1561, 1571, 1581, 1591, 1601, 1611, - 1621, 1628, 1635, 1642, 1651, 1660, 1669, 1678, 1685, 1695, - 1715, 1722, 1740, 1753, 1766, 1775, 1784, 1793, 1802, 1812, - 1822, 1833, 1842, 1851, 1860, 1869, 1878, 1887, 1900, 1913, - 1922, 1929, 1938, 1947, 1956, 1965, 1973, 1986, 1994, 2035, - 2042, 2057, 2067, 2077, 2084, 2091, 2098, 2107, 2115, 2129, - 2150, 2171, 2183, 2195, 2207, 2216, 2237, 2247, 2256, 2264, - 2272, 2285, 2298, 2313, 2328, 2337, 2346, 2352, 2361, 2370, - 2380, 2390, 2403, 2416, 2428, 2442, 2454, 2468, 2483, 2494, - 2504, 2511, 2518, 2527, 2536, 2546, 2556, 2566, 2573, 2580, - 2589, 2598, 2608, 2618, 2625, 2632, 2639, 2647, 2657, 2667, - 2677, 2687, 2726, 2736, 2744, 2752, 2767, 2776, 2781, 2782, - 2783, 2783, 2783, 2784, 2784, 2784, 2785, 2785, 2787, 2797, - 2806, 2813, 2820, 2827, 2834, 2841, 2848, 2853, 2854, 2855, - 2855, 2855, 2856, 2856, 2856, 2857, 2858, 2858, 2859, 2859, - 2860, 2860, 2861, 2862, 2863, 2864, 2865, 2866, 2868, 2877, - 2887, 2894, 2901, 2910, 2917, 2924, 2931, 2938, 2947, 2956, - 2963, 2970, 2980, 2990, 3000, 3010, 3020, 3030, 3035, 3036, - 3037, 3039, 3045, 3050, 3051, 3052, 3054, 3060, 3070, 3077, - 3086, 3094, 3099, 3100, 3102, 3102, 3102, 3103, 3103, 3104, - 3105, 3106, 3107, 3108, 3110, 3120, 3129, 3136, 3145, 3152, - 3161, 3169, 3182, 3190, 3203, 3208, 3209, 3210, 3210, 3211, - 3211, 3211, 3212, 3214, 3226, 3238, 3250, 3265, 3278, 3291, - 3302, 3307, 3308, 3309, 3309, 3311, 3326 + 0, 185, 185, 185, 186, 186, 187, 187, 188, 188, + 188, 189, 189, 190, 190, 191, 191, 192, 194, 200, + 205, 206, 207, 207, 207, 208, 208, 209, 209, 209, + 210, 210, 211, 211, 211, 212, 212, 213, 213, 213, + 214, 214, 214, 215, 215, 216, 216, 217, 217, 218, + 218, 219, 219, 220, 220, 221, 221, 222, 222, 223, + 223, 223, 224, 224, 224, 225, 225, 225, 226, 226, + 227, 227, 228, 228, 229, 229, 230, 230, 230, 231, + 231, 232, 232, 233, 233, 233, 234, 234, 235, 235, + 236, 236, 237, 237, 237, 238, 238, 239, 239, 240, + 240, 241, 241, 242, 242, 243, 243, 243, 244, 244, + 245, 245, 245, 246, 246, 246, 247, 247, 247, 248, + 248, 248, 248, 249, 250, 250, 250, 251, 251, 251, + 252, 252, 253, 254, 254, 254, 255, 255, 256, 256, + 257, 257, 257, 258, 258, 259, 259, 259, 260, 261, + 261, 262, 262, 263, 264, 264, 265, 265, 266, 266, + 267, 268, 268, 269, 269, 270, 270, 271, 271, 272, + 272, 273, 273, 273, 274, 274, 275, 275, 276, 276, + 277, 277, 278, 278, 279, 279, 280, 280, 280, 281, + 281, 281, 282, 282, 282, 283, 283, 284, 285, 285, + 286, 286, 287, 287, 288, 288, 289, 289, 289, 290, + 290, 290, 291, 291, 291, 292, 292, 293, 293, 294, + 294, 295, 295, 296, 298, 310, 311, 312, 312, 312, + 312, 312, 313, 313, 315, 327, 328, 329, 329, 329, + 329, 330, 330, 332, 346, 347, 348, 348, 348, 348, + 349, 349, 349, 351, 368, 369, 370, 370, 370, 370, + 371, 371, 371, 372, 375, 394, 411, 419, 429, 437, + 454, 455, 456, 456, 456, 456, 456, 457, 457, 457, + 458, 458, 460, 469, 478, 489, 498, 507, 516, 527, + 536, 548, 562, 577, 588, 605, 622, 639, 656, 671, + 686, 699, 714, 723, 732, 741, 750, 759, 768, 777, + 786, 795, 804, 813, 822, 831, 840, 853, 862, 875, + 884, 893, 902, 909, 916, 925, 932, 941, 949, 956, + 963, 971, 980, 987, 1003, 1011, 1019, 1027, 1035, 1044, + 1053, 1067, 1076, 1085, 1094, 1103, 1112, 1121, 1128, 1135, + 1161, 1169, 1176, 1183, 1190, 1197, 1205, 1213, 1221, 1228, + 1239, 1250, 1257, 1266, 1275, 1284, 1291, 1298, 1306, 1314, + 1324, 1334, 1344, 1358, 1366, 1379, 1390, 1398, 1411, 1420, + 1429, 1438, 1448, 1458, 1466, 1479, 1488, 1496, 1505, 1513, + 1526, 1535, 1542, 1552, 1562, 1572, 1582, 1592, 1602, 1612, + 1622, 1629, 1636, 1643, 1652, 1661, 1670, 1679, 1686, 1696, + 1716, 1723, 1741, 1754, 1767, 1776, 1785, 1794, 1803, 1813, + 1823, 1834, 1843, 1852, 1861, 1870, 1879, 1888, 1901, 1914, + 1923, 1930, 1939, 1948, 1957, 1966, 1974, 1987, 1995, 2036, + 2043, 2058, 2068, 2078, 2085, 2092, 2099, 2108, 2116, 2130, + 2151, 2172, 2184, 2196, 2208, 2217, 2238, 2248, 2257, 2265, + 2273, 2286, 2299, 2314, 2329, 2338, 2347, 2353, 2362, 2371, + 2381, 2391, 2404, 2417, 2429, 2443, 2455, 2469, 2478, 2489, + 2499, 2506, 2513, 2522, 2531, 2541, 2551, 2561, 2568, 2575, + 2584, 2593, 2603, 2613, 2620, 2627, 2634, 2642, 2652, 2662, + 2672, 2682, 2721, 2731, 2739, 2747, 2762, 2771, 2776, 2777, + 2778, 2778, 2778, 2779, 2779, 2779, 2780, 2780, 2782, 2792, + 2801, 2808, 2815, 2822, 2829, 2836, 2843, 2848, 2849, 2850, + 2850, 2850, 2851, 2851, 2851, 2852, 2853, 2853, 2854, 2854, + 2855, 2855, 2856, 2857, 2858, 2859, 2860, 2861, 2863, 2872, + 2882, 2889, 2896, 2905, 2912, 2919, 2926, 2933, 2942, 2951, + 2958, 2965, 2975, 2985, 2995, 3005, 3015, 3025, 3030, 3031, + 3032, 3034, 3040, 3045, 3046, 3047, 3049, 3055, 3065, 3072, + 3081, 3089, 3094, 3095, 3097, 3097, 3097, 3098, 3098, 3099, + 3100, 3101, 3102, 3103, 3105, 3115, 3124, 3131, 3140, 3147, + 3156, 3164, 3177, 3185, 3198, 3203, 3204, 3205, 3205, 3206, + 3206, 3206, 3207, 3209, 3221, 3233, 3245, 3260, 3273, 3286, + 3297, 3302, 3303, 3304, 3304, 3306, 3321 }; #endif @@ -1335,15 +1335,15 @@ static const char *const yytname[] = "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", - "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_TAG", - "VAR_EDNS_CLIENT_TAG_OPCODE", "$accept", "toplevelvars", "toplevelvar", - "force_toplevel", "serverstart", "contents_server", "content_server", - "stubstart", "contents_stub", "content_stub", "forwardstart", - "contents_forward", "content_forward", "viewstart", "contents_view", - "content_view", "authstart", "contents_auth", "content_auth", "rpz_tag", - "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name", - "rpzstart", "contents_rpz", "content_rpz", "server_num_threads", - "server_verbosity", "server_statistics_interval", + "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_STRING", + "VAR_EDNS_CLIENT_STRING_OPCODE", "$accept", "toplevelvars", + "toplevelvar", "force_toplevel", "serverstart", "contents_server", + "content_server", "stubstart", "contents_stub", "content_stub", + "forwardstart", "contents_forward", "content_forward", "viewstart", + "contents_view", "content_view", "authstart", "contents_auth", + "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override", + "rpz_log", "rpz_log_name", "rpzstart", "contents_rpz", "content_rpz", + "server_num_threads", "server_verbosity", "server_statistics_interval", "server_statistics_cumulative", "server_extended_statistics", "server_shm_enable", "server_shm_key", "server_port", "server_send_client_subnet", "server_client_subnet_zone", @@ -1428,24 +1428,25 @@ static const char *const yytname[] = "server_qname_minimisation_strict", "server_ipsecmod_enabled", "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook", "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist", - "server_ipsecmod_strict", "server_edns_client_tag", - "server_edns_client_tag_opcode", "stub_name", "stub_host", "stub_addr", - "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_prime", - "forward_name", "forward_host", "forward_addr", "forward_first", - "forward_no_cache", "forward_ssl_upstream", "auth_name", "auth_zonefile", - "auth_master", "auth_url", "auth_allow_notify", "auth_for_downstream", - "auth_for_upstream", "auth_fallback_enabled", "view_name", - "view_local_zone", "view_response_ip", "view_response_ip_data", - "view_local_data", "view_local_data_ptr", "view_first", "rcstart", - "contents_rc", "content_rc", "rc_control_enable", "rc_control_port", - "rc_control_interface", "rc_control_use_cert", "rc_server_key_file", - "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file", - "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable", - "dt_dnstap_bidirectional", "dt_dnstap_socket_path", "dt_dnstap_ip", - "dt_dnstap_tls", "dt_dnstap_tls_server_name", - "dt_dnstap_tls_cert_bundle", "dt_dnstap_tls_client_key_file", - "dt_dnstap_tls_client_cert_file", "dt_dnstap_send_identity", - "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version", + "server_ipsecmod_strict", "server_edns_client_string", + "server_edns_client_string_opcode", "stub_name", "stub_host", + "stub_addr", "stub_first", "stub_no_cache", "stub_ssl_upstream", + "stub_prime", "forward_name", "forward_host", "forward_addr", + "forward_first", "forward_no_cache", "forward_ssl_upstream", "auth_name", + "auth_zonefile", "auth_master", "auth_url", "auth_allow_notify", + "auth_for_downstream", "auth_for_upstream", "auth_fallback_enabled", + "view_name", "view_local_zone", "view_response_ip", + "view_response_ip_data", "view_local_data", "view_local_data_ptr", + "view_first", "rcstart", "contents_rc", "content_rc", + "rc_control_enable", "rc_control_port", "rc_control_interface", + "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file", + "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt", + "content_dt", "dt_dnstap_enable", "dt_dnstap_bidirectional", + "dt_dnstap_socket_path", "dt_dnstap_ip", "dt_dnstap_tls", + "dt_dnstap_tls_server_name", "dt_dnstap_tls_cert_bundle", + "dt_dnstap_tls_client_key_file", "dt_dnstap_tls_client_cert_file", + "dt_dnstap_send_identity", "dt_dnstap_send_version", + "dt_dnstap_identity", "dt_dnstap_version", "dt_dnstap_log_resolver_query_messages", "dt_dnstap_log_resolver_response_messages", "dt_dnstap_log_client_query_messages", @@ -2859,23 +2860,23 @@ yyreduce: switch (yyn) { case 18: -#line 194 "./util/configparser.y" +#line 195 "./util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); } -#line 2867 "util/configparser.c" +#line 2868 "util/configparser.c" break; case 19: -#line 200 "./util/configparser.y" +#line 201 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } -#line 2875 "util/configparser.c" +#line 2876 "util/configparser.c" break; case 224: -#line 298 "./util/configparser.y" +#line 299 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2886,11 +2887,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2890 "util/configparser.c" +#line 2891 "util/configparser.c" break; case 234: -#line 315 "./util/configparser.y" +#line 316 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2901,11 +2902,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2905 "util/configparser.c" +#line 2906 "util/configparser.c" break; case 243: -#line 332 "./util/configparser.y" +#line 333 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2918,11 +2919,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2922 "util/configparser.c" +#line 2923 "util/configparser.c" break; case 253: -#line 351 "./util/configparser.y" +#line 352 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2938,11 +2939,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2942 "util/configparser.c" +#line 2943 "util/configparser.c" break; case 264: -#line 375 "./util/configparser.y" +#line 376 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -2959,11 +2960,11 @@ yyreduce: } } -#line 2963 "util/configparser.c" +#line 2964 "util/configparser.c" break; case 265: -#line 394 "./util/configparser.y" +#line 395 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && @@ -2978,21 +2979,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2982 "util/configparser.c" +#line 2983 "util/configparser.c" break; case 266: -#line 411 "./util/configparser.y" +#line 412 "./util/configparser.y" { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2992 "util/configparser.c" +#line 2993 "util/configparser.c" break; case 267: -#line 419 "./util/configparser.y" +#line 420 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3000,21 +3001,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3004 "util/configparser.c" +#line 3005 "util/configparser.c" break; case 268: -#line 429 "./util/configparser.y" +#line 430 "./util/configparser.y" { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 3014 "util/configparser.c" +#line 3015 "util/configparser.c" break; case 269: -#line 437 "./util/configparser.y" +#line 438 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -3030,11 +3031,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3034 "util/configparser.c" +#line 3035 "util/configparser.c" break; case 282: -#line 460 "./util/configparser.y" +#line 461 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3042,11 +3043,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3046 "util/configparser.c" +#line 3047 "util/configparser.c" break; case 283: -#line 469 "./util/configparser.y" +#line 470 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3054,11 +3055,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3058 "util/configparser.c" +#line 3059 "util/configparser.c" break; case 284: -#line 478 "./util/configparser.y" +#line 479 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -3068,11 +3069,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3072 "util/configparser.c" +#line 3073 "util/configparser.c" break; case 285: -#line 489 "./util/configparser.y" +#line 490 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3080,11 +3081,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3084 "util/configparser.c" +#line 3085 "util/configparser.c" break; case 286: -#line 498 "./util/configparser.y" +#line 499 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3092,11 +3093,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3096 "util/configparser.c" +#line 3097 "util/configparser.c" break; case 287: -#line 507 "./util/configparser.y" +#line 508 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3104,11 +3105,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3108 "util/configparser.c" +#line 3109 "util/configparser.c" break; case 288: -#line 516 "./util/configparser.y" +#line 517 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -3118,11 +3119,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3122 "util/configparser.c" +#line 3123 "util/configparser.c" break; case 289: -#line 527 "./util/configparser.y" +#line 528 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3130,11 +3131,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3134 "util/configparser.c" +#line 3135 "util/configparser.c" break; case 290: -#line 536 "./util/configparser.y" +#line 537 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3145,11 +3146,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3149 "util/configparser.c" +#line 3150 "util/configparser.c" break; case 291: -#line 548 "./util/configparser.y" +#line 549 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3161,11 +3162,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3165 "util/configparser.c" +#line 3166 "util/configparser.c" break; case 292: -#line 562 "./util/configparser.y" +#line 563 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3179,11 +3180,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3183 "util/configparser.c" +#line 3184 "util/configparser.c" break; case 293: -#line 577 "./util/configparser.y" +#line 578 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3193,11 +3194,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3197 "util/configparser.c" +#line 3198 "util/configparser.c" break; case 294: -#line 588 "./util/configparser.y" +#line 589 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3213,11 +3214,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3217 "util/configparser.c" +#line 3218 "util/configparser.c" break; case 295: -#line 605 "./util/configparser.y" +#line 606 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3233,11 +3234,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3237 "util/configparser.c" +#line 3238 "util/configparser.c" break; case 296: -#line 622 "./util/configparser.y" +#line 623 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3253,11 +3254,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3257 "util/configparser.c" +#line 3258 "util/configparser.c" break; case 297: -#line 639 "./util/configparser.y" +#line 640 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3273,11 +3274,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3277 "util/configparser.c" +#line 3278 "util/configparser.c" break; case 298: -#line 656 "./util/configparser.y" +#line 657 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3291,11 +3292,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3295 "util/configparser.c" +#line 3296 "util/configparser.c" break; case 299: -#line 671 "./util/configparser.y" +#line 672 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3309,11 +3310,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3313 "util/configparser.c" +#line 3314 "util/configparser.c" break; case 300: -#line 686 "./util/configparser.y" +#line 687 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3325,11 +3326,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3329 "util/configparser.c" +#line 3330 "util/configparser.c" break; case 301: -#line 699 "./util/configparser.y" +#line 700 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3343,11 +3344,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3347 "util/configparser.c" +#line 3348 "util/configparser.c" break; case 302: -#line 714 "./util/configparser.y" +#line 715 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3355,11 +3356,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3359 "util/configparser.c" +#line 3360 "util/configparser.c" break; case 303: -#line 723 "./util/configparser.y" +#line 724 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3367,11 +3368,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3371 "util/configparser.c" +#line 3372 "util/configparser.c" break; case 304: -#line 732 "./util/configparser.y" +#line 733 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3379,11 +3380,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3383 "util/configparser.c" +#line 3384 "util/configparser.c" break; case 305: -#line 741 "./util/configparser.y" +#line 742 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3391,11 +3392,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3395 "util/configparser.c" +#line 3396 "util/configparser.c" break; case 306: -#line 750 "./util/configparser.y" +#line 751 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3403,11 +3404,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3407 "util/configparser.c" +#line 3408 "util/configparser.c" break; case 307: -#line 759 "./util/configparser.y" +#line 760 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3415,11 +3416,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3419 "util/configparser.c" +#line 3420 "util/configparser.c" break; case 308: -#line 768 "./util/configparser.y" +#line 769 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3427,11 +3428,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3431 "util/configparser.c" +#line 3432 "util/configparser.c" break; case 309: -#line 777 "./util/configparser.y" +#line 778 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3439,11 +3440,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3443 "util/configparser.c" +#line 3444 "util/configparser.c" break; case 310: -#line 786 "./util/configparser.y" +#line 787 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3451,11 +3452,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3455 "util/configparser.c" +#line 3456 "util/configparser.c" break; case 311: -#line 795 "./util/configparser.y" +#line 796 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3463,11 +3464,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3467 "util/configparser.c" +#line 3468 "util/configparser.c" break; case 312: -#line 804 "./util/configparser.y" +#line 805 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3475,11 +3476,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3479 "util/configparser.c" +#line 3480 "util/configparser.c" break; case 313: -#line 813 "./util/configparser.y" +#line 814 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3487,11 +3488,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3491 "util/configparser.c" +#line 3492 "util/configparser.c" break; case 314: -#line 822 "./util/configparser.y" +#line 823 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3499,11 +3500,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3503 "util/configparser.c" +#line 3504 "util/configparser.c" break; case 315: -#line 831 "./util/configparser.y" +#line 832 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3511,11 +3512,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3515 "util/configparser.c" +#line 3516 "util/configparser.c" break; case 316: -#line 840 "./util/configparser.y" +#line 841 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3527,11 +3528,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3531 "util/configparser.c" +#line 3532 "util/configparser.c" break; case 317: -#line 853 "./util/configparser.y" +#line 854 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3539,11 +3540,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3543 "util/configparser.c" +#line 3544 "util/configparser.c" break; case 318: -#line 862 "./util/configparser.y" +#line 863 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3555,11 +3556,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3559 "util/configparser.c" +#line 3560 "util/configparser.c" break; case 319: -#line 875 "./util/configparser.y" +#line 876 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3567,11 +3568,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3571 "util/configparser.c" +#line 3572 "util/configparser.c" break; case 320: -#line 884 "./util/configparser.y" +#line 885 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3579,11 +3580,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3583 "util/configparser.c" +#line 3584 "util/configparser.c" break; case 321: -#line 893 "./util/configparser.y" +#line 894 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3591,31 +3592,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3595 "util/configparser.c" +#line 3596 "util/configparser.c" break; case 322: -#line 902 "./util/configparser.y" +#line 903 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3605 "util/configparser.c" +#line 3606 "util/configparser.c" break; case 323: -#line 909 "./util/configparser.y" +#line 910 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3615 "util/configparser.c" +#line 3616 "util/configparser.c" break; case 324: -#line 916 "./util/configparser.y" +#line 917 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3623,21 +3624,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3627 "util/configparser.c" +#line 3628 "util/configparser.c" break; case 325: -#line 925 "./util/configparser.y" +#line 926 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3637 "util/configparser.c" +#line 3638 "util/configparser.c" break; case 326: -#line 932 "./util/configparser.y" +#line 933 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3645,53 +3646,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3649 "util/configparser.c" +#line 3650 "util/configparser.c" break; case 327: -#line 941 "./util/configparser.y" +#line 942 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3660 "util/configparser.c" +#line 3661 "util/configparser.c" break; case 328: -#line 949 "./util/configparser.y" +#line 950 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3670 "util/configparser.c" +#line 3671 "util/configparser.c" break; case 329: -#line 956 "./util/configparser.y" +#line 957 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3680 "util/configparser.c" +#line 3681 "util/configparser.c" break; case 330: -#line 963 "./util/configparser.y" +#line 964 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3691 "util/configparser.c" +#line 3692 "util/configparser.c" break; case 331: -#line 971 "./util/configparser.y" +#line 972 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3699,22 +3700,22 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3703 "util/configparser.c" +#line 3704 "util/configparser.c" break; case 332: -#line 980 "./util/configparser.y" +#line 981 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); } -#line 3714 "util/configparser.c" +#line 3715 "util/configparser.c" break; case 333: -#line 987 "./util/configparser.y" +#line 988 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -3730,11 +3731,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3734 "util/configparser.c" +#line 3735 "util/configparser.c" break; case 334: -#line 1003 "./util/configparser.y" +#line 1004 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3742,11 +3743,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3746 "util/configparser.c" +#line 3747 "util/configparser.c" break; case 335: -#line 1011 "./util/configparser.y" +#line 1012 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3754,11 +3755,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3758 "util/configparser.c" +#line 3759 "util/configparser.c" break; case 336: -#line 1019 "./util/configparser.y" +#line 1020 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3766,11 +3767,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3770 "util/configparser.c" +#line 3771 "util/configparser.c" break; case 337: -#line 1027 "./util/configparser.y" +#line 1028 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3778,11 +3779,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3782 "util/configparser.c" +#line 3783 "util/configparser.c" break; case 338: -#line 1035 "./util/configparser.y" +#line 1036 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3790,11 +3791,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3794 "util/configparser.c" +#line 3795 "util/configparser.c" break; case 339: -#line 1044 "./util/configparser.y" +#line 1045 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3802,11 +3803,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3806 "util/configparser.c" +#line 3807 "util/configparser.c" break; case 340: -#line 1053 "./util/configparser.y" +#line 1054 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3819,11 +3820,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3823 "util/configparser.c" +#line 3824 "util/configparser.c" break; case 341: -#line 1067 "./util/configparser.y" +#line 1068 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3831,11 +3832,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3835 "util/configparser.c" +#line 3836 "util/configparser.c" break; case 342: -#line 1076 "./util/configparser.y" +#line 1077 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3843,11 +3844,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3847 "util/configparser.c" +#line 3848 "util/configparser.c" break; case 343: -#line 1085 "./util/configparser.y" +#line 1086 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3855,11 +3856,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3859 "util/configparser.c" +#line 3860 "util/configparser.c" break; case 344: -#line 1094 "./util/configparser.y" +#line 1095 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3867,11 +3868,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3871 "util/configparser.c" +#line 3872 "util/configparser.c" break; case 345: -#line 1103 "./util/configparser.y" +#line 1104 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3879,11 +3880,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3883 "util/configparser.c" +#line 3884 "util/configparser.c" break; case 346: -#line 1112 "./util/configparser.y" +#line 1113 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3891,31 +3892,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3895 "util/configparser.c" +#line 3896 "util/configparser.c" break; case 347: -#line 1121 "./util/configparser.y" +#line 1122 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3905 "util/configparser.c" +#line 3906 "util/configparser.c" break; case 348: -#line 1128 "./util/configparser.y" +#line 1129 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3915 "util/configparser.c" +#line 3916 "util/configparser.c" break; case 349: -#line 1135 "./util/configparser.y" +#line 1136 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3940,105 +3941,105 @@ yyreduce: } } } -#line 3944 "util/configparser.c" +#line 3945 "util/configparser.c" break; case 350: -#line 1161 "./util/configparser.y" +#line 1162 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3955 "util/configparser.c" +#line 3956 "util/configparser.c" break; case 351: -#line 1169 "./util/configparser.y" +#line 1170 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3965 "util/configparser.c" +#line 3966 "util/configparser.c" break; case 352: -#line 1176 "./util/configparser.y" +#line 1177 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3975 "util/configparser.c" +#line 3976 "util/configparser.c" break; case 353: -#line 1183 "./util/configparser.y" +#line 1184 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3985 "util/configparser.c" +#line 3986 "util/configparser.c" break; case 354: -#line 1190 "./util/configparser.y" +#line 1191 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3995 "util/configparser.c" +#line 3996 "util/configparser.c" break; case 355: -#line 1197 "./util/configparser.y" +#line 1198 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4006 "util/configparser.c" +#line 4007 "util/configparser.c" break; case 356: -#line 1205 "./util/configparser.y" +#line 1206 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4017 "util/configparser.c" +#line 4018 "util/configparser.c" break; case 357: -#line 1213 "./util/configparser.y" +#line 1214 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4028 "util/configparser.c" +#line 4029 "util/configparser.c" break; case 358: -#line 1221 "./util/configparser.y" +#line 1222 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4038 "util/configparser.c" +#line 4039 "util/configparser.c" break; case 359: -#line 1228 "./util/configparser.y" +#line 1229 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4048,11 +4049,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4052 "util/configparser.c" +#line 4053 "util/configparser.c" break; case 360: -#line 1239 "./util/configparser.y" +#line 1240 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4062,21 +4063,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4066 "util/configparser.c" +#line 4067 "util/configparser.c" break; case 361: -#line 1250 "./util/configparser.y" +#line 1251 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4076 "util/configparser.c" +#line 4077 "util/configparser.c" break; case 362: -#line 1257 "./util/configparser.y" +#line 1258 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4084,11 +4085,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4088 "util/configparser.c" +#line 4089 "util/configparser.c" break; case 363: -#line 1266 "./util/configparser.y" +#line 1267 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4096,11 +4097,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4100 "util/configparser.c" +#line 4101 "util/configparser.c" break; case 364: -#line 1275 "./util/configparser.y" +#line 1276 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4108,53 +4109,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4112 "util/configparser.c" +#line 4113 "util/configparser.c" break; case 365: -#line 1284 "./util/configparser.y" +#line 1285 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4122 "util/configparser.c" +#line 4123 "util/configparser.c" break; case 366: -#line 1291 "./util/configparser.y" +#line 1292 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4132 "util/configparser.c" +#line 4133 "util/configparser.c" break; case 367: -#line 1298 "./util/configparser.y" +#line 1299 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4143 "util/configparser.c" +#line 4144 "util/configparser.c" break; case 368: -#line 1306 "./util/configparser.y" +#line 1307 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4154 "util/configparser.c" +#line 4155 "util/configparser.c" break; case 369: -#line 1314 "./util/configparser.y" +#line 1315 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4163,11 +4164,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4167 "util/configparser.c" +#line 4168 "util/configparser.c" break; case 370: -#line 1324 "./util/configparser.y" +#line 1325 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4176,11 +4177,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4180 "util/configparser.c" +#line 4181 "util/configparser.c" break; case 371: -#line 1334 "./util/configparser.y" +#line 1335 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4189,11 +4190,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4193 "util/configparser.c" +#line 4194 "util/configparser.c" break; case 372: -#line 1344 "./util/configparser.y" +#line 1345 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4206,22 +4207,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4210 "util/configparser.c" +#line 4211 "util/configparser.c" break; case 373: -#line 1358 "./util/configparser.y" +#line 1359 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4221 "util/configparser.c" +#line 4222 "util/configparser.c" break; case 374: -#line 1366 "./util/configparser.y" +#line 1367 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4233,11 +4234,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4237 "util/configparser.c" +#line 4238 "util/configparser.c" break; case 375: -#line 1379 "./util/configparser.y" +#line 1380 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4247,22 +4248,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4251 "util/configparser.c" +#line 4252 "util/configparser.c" break; case 376: -#line 1390 "./util/configparser.y" +#line 1391 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4262 "util/configparser.c" +#line 4263 "util/configparser.c" break; case 377: -#line 1398 "./util/configparser.y" +#line 1399 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4274,11 +4275,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4278 "util/configparser.c" +#line 4279 "util/configparser.c" break; case 378: -#line 1411 "./util/configparser.y" +#line 1412 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4286,11 +4287,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4290 "util/configparser.c" +#line 4291 "util/configparser.c" break; case 379: -#line 1420 "./util/configparser.y" +#line 1421 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4298,11 +4299,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4302 "util/configparser.c" +#line 4303 "util/configparser.c" break; case 380: -#line 1429 "./util/configparser.y" +#line 1430 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4310,11 +4311,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4314 "util/configparser.c" +#line 4315 "util/configparser.c" break; case 381: -#line 1438 "./util/configparser.y" +#line 1439 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4323,11 +4324,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4327 "util/configparser.c" +#line 4328 "util/configparser.c" break; case 382: -#line 1448 "./util/configparser.y" +#line 1449 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4336,22 +4337,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4340 "util/configparser.c" +#line 4341 "util/configparser.c" break; case 383: -#line 1458 "./util/configparser.y" +#line 1459 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4351 "util/configparser.c" +#line 4352 "util/configparser.c" break; case 384: -#line 1466 "./util/configparser.y" +#line 1467 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4363,11 +4364,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4367 "util/configparser.c" +#line 4368 "util/configparser.c" break; case 385: -#line 1479 "./util/configparser.y" +#line 1480 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4375,22 +4376,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4379 "util/configparser.c" +#line 4380 "util/configparser.c" break; case 386: -#line 1488 "./util/configparser.y" +#line 1489 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4390 "util/configparser.c" +#line 4391 "util/configparser.c" break; case 387: -#line 1496 "./util/configparser.y" +#line 1497 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4398,22 +4399,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4402 "util/configparser.c" +#line 4403 "util/configparser.c" break; case 388: -#line 1505 "./util/configparser.y" +#line 1506 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4413 "util/configparser.c" +#line 4414 "util/configparser.c" break; case 389: -#line 1513 "./util/configparser.y" +#line 1514 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4425,11 +4426,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4429 "util/configparser.c" +#line 4430 "util/configparser.c" break; case 390: -#line 1526 "./util/configparser.y" +#line 1527 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4437,21 +4438,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4441 "util/configparser.c" +#line 4442 "util/configparser.c" break; case 391: -#line 1535 "./util/configparser.y" +#line 1536 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4451 "util/configparser.c" +#line 4452 "util/configparser.c" break; case 392: -#line 1542 "./util/configparser.y" +#line 1543 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4460,11 +4461,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4464 "util/configparser.c" +#line 4465 "util/configparser.c" break; case 393: -#line 1552 "./util/configparser.y" +#line 1553 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4473,11 +4474,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4477 "util/configparser.c" +#line 4478 "util/configparser.c" break; case 394: -#line 1562 "./util/configparser.y" +#line 1563 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4486,11 +4487,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4490 "util/configparser.c" +#line 4491 "util/configparser.c" break; case 395: -#line 1572 "./util/configparser.y" +#line 1573 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4499,11 +4500,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4503 "util/configparser.c" +#line 4504 "util/configparser.c" break; case 396: -#line 1582 "./util/configparser.y" +#line 1583 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4512,11 +4513,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4516 "util/configparser.c" +#line 4517 "util/configparser.c" break; case 397: -#line 1592 "./util/configparser.y" +#line 1593 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4525,11 +4526,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4529 "util/configparser.c" +#line 4530 "util/configparser.c" break; case 398: -#line 1602 "./util/configparser.y" +#line 1603 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4538,11 +4539,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4542 "util/configparser.c" +#line 4543 "util/configparser.c" break; case 399: -#line 1612 "./util/configparser.y" +#line 1613 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4551,41 +4552,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4555 "util/configparser.c" +#line 4556 "util/configparser.c" break; case 400: -#line 1622 "./util/configparser.y" +#line 1623 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4565 "util/configparser.c" +#line 4566 "util/configparser.c" break; case 401: -#line 1629 "./util/configparser.y" +#line 1630 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4575 "util/configparser.c" +#line 4576 "util/configparser.c" break; case 402: -#line 1636 "./util/configparser.y" +#line 1637 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4585 "util/configparser.c" +#line 4586 "util/configparser.c" break; case 403: -#line 1643 "./util/configparser.y" +#line 1644 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4593,11 +4594,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4597 "util/configparser.c" +#line 4598 "util/configparser.c" break; case 404: -#line 1652 "./util/configparser.y" +#line 1653 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4605,11 +4606,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4609 "util/configparser.c" +#line 4610 "util/configparser.c" break; case 405: -#line 1661 "./util/configparser.y" +#line 1662 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4617,11 +4618,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4621 "util/configparser.c" +#line 4622 "util/configparser.c" break; case 406: -#line 1670 "./util/configparser.y" +#line 1671 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4629,21 +4630,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4633 "util/configparser.c" +#line 4634 "util/configparser.c" break; case 407: -#line 1679 "./util/configparser.y" +#line 1680 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4643 "util/configparser.c" +#line 4644 "util/configparser.c" break; case 408: -#line 1686 "./util/configparser.y" +#line 1687 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4652,11 +4653,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4656 "util/configparser.c" +#line 4657 "util/configparser.c" break; case 409: -#line 1696 "./util/configparser.y" +#line 1697 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && @@ -4675,21 +4676,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4679 "util/configparser.c" +#line 4680 "util/configparser.c" break; case 410: -#line 1716 "./util/configparser.y" +#line 1717 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4689 "util/configparser.c" +#line 4690 "util/configparser.c" break; case 411: -#line 1723 "./util/configparser.y" +#line 1724 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4706,11 +4707,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4710 "util/configparser.c" +#line 4711 "util/configparser.c" break; case 412: -#line 1741 "./util/configparser.y" +#line 1742 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4722,11 +4723,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4726 "util/configparser.c" +#line 4727 "util/configparser.c" break; case 413: -#line 1754 "./util/configparser.y" +#line 1755 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4738,11 +4739,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4742 "util/configparser.c" +#line 4743 "util/configparser.c" break; case 414: -#line 1767 "./util/configparser.y" +#line 1768 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4750,11 +4751,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4754 "util/configparser.c" +#line 4755 "util/configparser.c" break; case 415: -#line 1776 "./util/configparser.y" +#line 1777 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4762,11 +4763,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4766 "util/configparser.c" +#line 4767 "util/configparser.c" break; case 416: -#line 1785 "./util/configparser.y" +#line 1786 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4774,11 +4775,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4778 "util/configparser.c" +#line 4779 "util/configparser.c" break; case 417: -#line 1794 "./util/configparser.y" +#line 1795 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4786,11 +4787,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4790 "util/configparser.c" +#line 4791 "util/configparser.c" break; case 418: -#line 1803 "./util/configparser.y" +#line 1804 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4799,11 +4800,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4803 "util/configparser.c" +#line 4804 "util/configparser.c" break; case 419: -#line 1813 "./util/configparser.y" +#line 1814 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4812,11 +4813,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4816 "util/configparser.c" +#line 4817 "util/configparser.c" break; case 420: -#line 1823 "./util/configparser.y" +#line 1824 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4826,11 +4827,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4830 "util/configparser.c" +#line 4831 "util/configparser.c" break; case 421: -#line 1834 "./util/configparser.y" +#line 1835 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4838,11 +4839,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4842 "util/configparser.c" +#line 4843 "util/configparser.c" break; case 422: -#line 1843 "./util/configparser.y" +#line 1844 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4850,11 +4851,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4854 "util/configparser.c" +#line 4855 "util/configparser.c" break; case 423: -#line 1852 "./util/configparser.y" +#line 1853 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4862,11 +4863,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4866 "util/configparser.c" +#line 4867 "util/configparser.c" break; case 424: -#line 1861 "./util/configparser.y" +#line 1862 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4874,11 +4875,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4878 "util/configparser.c" +#line 4879 "util/configparser.c" break; case 425: -#line 1870 "./util/configparser.y" +#line 1871 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4886,11 +4887,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4890 "util/configparser.c" +#line 4891 "util/configparser.c" break; case 426: -#line 1879 "./util/configparser.y" +#line 1880 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4898,11 +4899,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4902 "util/configparser.c" +#line 4903 "util/configparser.c" break; case 427: -#line 1888 "./util/configparser.y" +#line 1889 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4914,11 +4915,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4918 "util/configparser.c" +#line 4919 "util/configparser.c" break; case 428: -#line 1901 "./util/configparser.y" +#line 1902 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4930,11 +4931,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4934 "util/configparser.c" +#line 4935 "util/configparser.c" break; case 429: -#line 1914 "./util/configparser.y" +#line 1915 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4942,21 +4943,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4946 "util/configparser.c" +#line 4947 "util/configparser.c" break; case 430: -#line 1923 "./util/configparser.y" +#line 1924 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4956 "util/configparser.c" +#line 4957 "util/configparser.c" break; case 431: -#line 1930 "./util/configparser.y" +#line 1931 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4964,11 +4965,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4968 "util/configparser.c" +#line 4969 "util/configparser.c" break; case 432: -#line 1939 "./util/configparser.y" +#line 1940 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4976,11 +4977,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4980 "util/configparser.c" +#line 4981 "util/configparser.c" break; case 433: -#line 1948 "./util/configparser.y" +#line 1949 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4988,11 +4989,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4992 "util/configparser.c" +#line 4993 "util/configparser.c" break; case 434: -#line 1957 "./util/configparser.y" +#line 1958 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5001,22 +5002,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5005 "util/configparser.c" +#line 5006 "util/configparser.c" break; case 435: -#line 1966 "./util/configparser.y" +#line 1967 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5016 "util/configparser.c" +#line 5017 "util/configparser.c" break; case 436: -#line 1974 "./util/configparser.y" +#line 1975 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5028,22 +5029,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5032 "util/configparser.c" +#line 5033 "util/configparser.c" break; case 437: -#line 1987 "./util/configparser.y" +#line 1988 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5043 "util/configparser.c" +#line 5044 "util/configparser.c" break; case 438: -#line 1995 "./util/configparser.y" +#line 1996 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5083,21 +5084,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5087 "util/configparser.c" +#line 5088 "util/configparser.c" break; case 439: -#line 2036 "./util/configparser.y" +#line 2037 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 5097 "util/configparser.c" +#line 5098 "util/configparser.c" break; case 440: -#line 2043 "./util/configparser.y" +#line 2044 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5111,11 +5112,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5115 "util/configparser.c" +#line 5116 "util/configparser.c" break; case 441: -#line 2058 "./util/configparser.y" +#line 2059 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5124,11 +5125,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5128 "util/configparser.c" +#line 5129 "util/configparser.c" break; case 442: -#line 2068 "./util/configparser.y" +#line 2069 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5137,41 +5138,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5141 "util/configparser.c" +#line 5142 "util/configparser.c" break; case 443: -#line 2078 "./util/configparser.y" +#line 2079 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5151 "util/configparser.c" +#line 5152 "util/configparser.c" break; case 444: -#line 2085 "./util/configparser.y" +#line 2086 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5161 "util/configparser.c" +#line 5162 "util/configparser.c" break; case 445: -#line 2092 "./util/configparser.y" +#line 2093 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5171 "util/configparser.c" +#line 5172 "util/configparser.c" break; case 446: -#line 2099 "./util/configparser.y" +#line 2100 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5179,22 +5180,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5183 "util/configparser.c" +#line 5184 "util/configparser.c" break; case 447: -#line 2108 "./util/configparser.y" +#line 2109 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5194 "util/configparser.c" +#line 5195 "util/configparser.c" break; case 448: -#line 2116 "./util/configparser.y" +#line 2117 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5207,11 +5208,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5211 "util/configparser.c" +#line 5212 "util/configparser.c" break; case 449: -#line 2130 "./util/configparser.y" +#line 2131 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5231,11 +5232,11 @@ yyreduce: } } } -#line 5235 "util/configparser.c" +#line 5236 "util/configparser.c" break; case 450: -#line 2151 "./util/configparser.y" +#line 2152 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5255,11 +5256,11 @@ yyreduce: } } } -#line 5259 "util/configparser.c" +#line 5260 "util/configparser.c" break; case 451: -#line 2172 "./util/configparser.y" +#line 2173 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -5270,11 +5271,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5274 "util/configparser.c" +#line 5275 "util/configparser.c" break; case 452: -#line 2184 "./util/configparser.y" +#line 2185 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -5285,11 +5286,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5289 "util/configparser.c" +#line 5290 "util/configparser.c" break; case 453: -#line 2196 "./util/configparser.y" +#line 2197 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -5300,11 +5301,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5304 "util/configparser.c" +#line 5305 "util/configparser.c" break; case 454: -#line 2208 "./util/configparser.y" +#line 2209 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5312,11 +5313,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5316 "util/configparser.c" +#line 5317 "util/configparser.c" break; case 455: -#line 2217 "./util/configparser.y" +#line 2218 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5336,11 +5337,11 @@ yyreduce: } } } -#line 5340 "util/configparser.c" +#line 5341 "util/configparser.c" break; case 456: -#line 2238 "./util/configparser.y" +#line 2239 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5348,11 +5349,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5352 "util/configparser.c" +#line 5353 "util/configparser.c" break; case 457: -#line 2248 "./util/configparser.y" +#line 2249 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5360,33 +5361,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5364 "util/configparser.c" +#line 5365 "util/configparser.c" break; case 458: -#line 2257 "./util/configparser.y" +#line 2258 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5375 "util/configparser.c" +#line 5376 "util/configparser.c" break; case 459: -#line 2265 "./util/configparser.y" +#line 2266 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5386 "util/configparser.c" +#line 5387 "util/configparser.c" break; case 460: -#line 2273 "./util/configparser.y" +#line 2274 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5398,11 +5399,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5402 "util/configparser.c" +#line 5403 "util/configparser.c" break; case 461: -#line 2286 "./util/configparser.y" +#line 2287 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5414,11 +5415,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5418 "util/configparser.c" +#line 5419 "util/configparser.c" break; case 462: -#line 2299 "./util/configparser.y" +#line 2300 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5432,11 +5433,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5436 "util/configparser.c" +#line 5437 "util/configparser.c" break; case 463: -#line 2314 "./util/configparser.y" +#line 2315 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5450,11 +5451,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5454 "util/configparser.c" +#line 5455 "util/configparser.c" break; case 464: -#line 2329 "./util/configparser.y" +#line 2330 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5462,11 +5463,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5466 "util/configparser.c" +#line 5467 "util/configparser.c" break; case 465: -#line 2338 "./util/configparser.y" +#line 2339 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5474,20 +5475,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5478 "util/configparser.c" +#line 5479 "util/configparser.c" break; case 466: -#line 2347 "./util/configparser.y" +#line 2348 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5487 "util/configparser.c" +#line 5488 "util/configparser.c" break; case 467: -#line 2353 "./util/configparser.y" +#line 2354 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5495,11 +5496,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5499 "util/configparser.c" +#line 5500 "util/configparser.c" break; case 468: -#line 2362 "./util/configparser.y" +#line 2363 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5507,11 +5508,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5511 "util/configparser.c" +#line 5512 "util/configparser.c" break; case 469: -#line 2371 "./util/configparser.y" +#line 2372 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5520,11 +5521,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5524 "util/configparser.c" +#line 5525 "util/configparser.c" break; case 470: -#line 2381 "./util/configparser.y" +#line 2382 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5533,11 +5534,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5537 "util/configparser.c" +#line 5538 "util/configparser.c" break; case 471: -#line 2391 "./util/configparser.y" +#line 2392 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5549,11 +5550,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5553 "util/configparser.c" +#line 5554 "util/configparser.c" break; case 472: -#line 2404 "./util/configparser.y" +#line 2405 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5565,11 +5566,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5569 "util/configparser.c" +#line 5570 "util/configparser.c" break; case 473: -#line 2417 "./util/configparser.y" +#line 2418 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5580,11 +5581,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5584 "util/configparser.c" +#line 5585 "util/configparser.c" break; case 474: -#line 2429 "./util/configparser.y" +#line 2430 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5597,11 +5598,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5601 "util/configparser.c" +#line 5602 "util/configparser.c" break; case 475: -#line 2443 "./util/configparser.y" +#line 2444 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5612,11 +5613,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5616 "util/configparser.c" +#line 5617 "util/configparser.c" break; case 476: -#line 2455 "./util/configparser.y" +#line 2456 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5629,43 +5630,37 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5633 "util/configparser.c" +#line 5634 "util/configparser.c" break; case 477: -#line 2469 "./util/configparser.y" - { - int tag_data; - OUTYY(("P(server_edns_client_tag:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - tag_data = atoi((yyvsp[0].str)); - if(tag_data > 65535 || tag_data < 0 || - (tag_data == 0 && (strlen((yyvsp[0].str)) != 1 || (yyvsp[0].str)[0] != '0'))) - yyerror("edns-client-tag data invalid, needs to be a " - "number from 0 to 65535"); +#line 2470 "./util/configparser.y" + { + OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( - &cfg_parser->cfg->edns_client_tags, (yyvsp[-1].str), (yyvsp[0].str))) + &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding " - "edns-client-tag"); + "edns-client-string"); } -#line 5651 "util/configparser.c" +#line 5646 "util/configparser.c" break; case 478: -#line 2484 "./util/configparser.y" +#line 2479 "./util/configparser.y" { - OUTYY(("P(edns_client_tag_opcode:%s)\n", (yyvsp[0].str))); + OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("option code expected"); else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0) yyerror("option code must be in interval [0, 65535]"); - else cfg_parser->cfg->edns_client_tag_opcode = atoi((yyvsp[0].str)); + else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); } -#line 5665 "util/configparser.c" +#line 5660 "util/configparser.c" break; case 479: -#line 2495 "./util/configparser.y" +#line 2490 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5674,31 +5669,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5678 "util/configparser.c" +#line 5673 "util/configparser.c" break; case 480: -#line 2505 "./util/configparser.y" +#line 2500 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5688 "util/configparser.c" +#line 5683 "util/configparser.c" break; case 481: -#line 2512 "./util/configparser.y" +#line 2507 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5698 "util/configparser.c" +#line 5693 "util/configparser.c" break; case 482: -#line 2519 "./util/configparser.y" +#line 2514 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5706,11 +5701,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5710 "util/configparser.c" +#line 5705 "util/configparser.c" break; case 483: -#line 2528 "./util/configparser.y" +#line 2523 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5718,11 +5713,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5722 "util/configparser.c" +#line 5717 "util/configparser.c" break; case 484: -#line 2537 "./util/configparser.y" +#line 2532 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5731,11 +5726,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5735 "util/configparser.c" +#line 5730 "util/configparser.c" break; case 485: -#line 2547 "./util/configparser.y" +#line 2542 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5744,11 +5739,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5748 "util/configparser.c" +#line 5743 "util/configparser.c" break; case 486: -#line 2557 "./util/configparser.y" +#line 2552 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5757,31 +5752,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5761 "util/configparser.c" +#line 5756 "util/configparser.c" break; case 487: -#line 2567 "./util/configparser.y" +#line 2562 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5771 "util/configparser.c" +#line 5766 "util/configparser.c" break; case 488: -#line 2574 "./util/configparser.y" +#line 2569 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5781 "util/configparser.c" +#line 5776 "util/configparser.c" break; case 489: -#line 2581 "./util/configparser.y" +#line 2576 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5789,11 +5784,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5793 "util/configparser.c" +#line 5788 "util/configparser.c" break; case 490: -#line 2590 "./util/configparser.y" +#line 2585 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5801,11 +5796,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5805 "util/configparser.c" +#line 5800 "util/configparser.c" break; case 491: -#line 2599 "./util/configparser.y" +#line 2594 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5814,11 +5809,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5818 "util/configparser.c" +#line 5813 "util/configparser.c" break; case 492: -#line 2609 "./util/configparser.y" +#line 2604 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5827,52 +5822,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5831 "util/configparser.c" +#line 5826 "util/configparser.c" break; case 493: -#line 2619 "./util/configparser.y" +#line 2614 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5841 "util/configparser.c" +#line 5836 "util/configparser.c" break; case 494: -#line 2626 "./util/configparser.y" +#line 2621 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5851 "util/configparser.c" +#line 5846 "util/configparser.c" break; case 495: -#line 2633 "./util/configparser.y" +#line 2628 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5861 "util/configparser.c" +#line 5856 "util/configparser.c" break; case 496: -#line 2640 "./util/configparser.y" +#line 2635 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5872 "util/configparser.c" +#line 5867 "util/configparser.c" break; case 497: -#line 2648 "./util/configparser.y" +#line 2643 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5881,11 +5876,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5885 "util/configparser.c" +#line 5880 "util/configparser.c" break; case 498: -#line 2658 "./util/configparser.y" +#line 2653 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5894,11 +5889,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5898 "util/configparser.c" +#line 5893 "util/configparser.c" break; case 499: -#line 2668 "./util/configparser.y" +#line 2663 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5907,11 +5902,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5911 "util/configparser.c" +#line 5906 "util/configparser.c" break; case 500: -#line 2678 "./util/configparser.y" +#line 2673 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5920,11 +5915,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5924 "util/configparser.c" +#line 5919 "util/configparser.c" break; case 501: -#line 2688 "./util/configparser.y" +#line 2683 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5962,11 +5957,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5966 "util/configparser.c" +#line 5961 "util/configparser.c" break; case 502: -#line 2727 "./util/configparser.y" +#line 2722 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5975,33 +5970,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5979 "util/configparser.c" +#line 5974 "util/configparser.c" break; case 503: -#line 2737 "./util/configparser.y" +#line 2732 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5990 "util/configparser.c" +#line 5985 "util/configparser.c" break; case 504: -#line 2745 "./util/configparser.y" +#line 2740 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 6001 "util/configparser.c" +#line 5996 "util/configparser.c" break; case 505: -#line 2753 "./util/configparser.y" +#line 2748 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6015,11 +6010,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6019 "util/configparser.c" +#line 6014 "util/configparser.c" break; case 506: -#line 2768 "./util/configparser.y" +#line 2763 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6027,19 +6022,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6031 "util/configparser.c" +#line 6026 "util/configparser.c" break; case 507: -#line 2777 "./util/configparser.y" +#line 2772 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6039 "util/configparser.c" +#line 6034 "util/configparser.c" break; case 518: -#line 2788 "./util/configparser.y" +#line 2783 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6048,11 +6043,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6052 "util/configparser.c" +#line 6047 "util/configparser.c" break; case 519: -#line 2798 "./util/configparser.y" +#line 2793 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6060,79 +6055,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6064 "util/configparser.c" +#line 6059 "util/configparser.c" break; case 520: -#line 2807 "./util/configparser.y" +#line 2802 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6074 "util/configparser.c" +#line 6069 "util/configparser.c" break; case 521: -#line 2814 "./util/configparser.y" +#line 2809 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6084 "util/configparser.c" +#line 6079 "util/configparser.c" break; case 522: -#line 2821 "./util/configparser.y" +#line 2816 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6094 "util/configparser.c" +#line 6089 "util/configparser.c" break; case 523: -#line 2828 "./util/configparser.y" +#line 2823 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6104 "util/configparser.c" +#line 6099 "util/configparser.c" break; case 524: -#line 2835 "./util/configparser.y" +#line 2830 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6114 "util/configparser.c" +#line 6109 "util/configparser.c" break; case 525: -#line 2842 "./util/configparser.y" +#line 2837 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6124 "util/configparser.c" +#line 6119 "util/configparser.c" break; case 526: -#line 2849 "./util/configparser.y" +#line 2844 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6132 "util/configparser.c" +#line 6127 "util/configparser.c" break; case 548: -#line 2869 "./util/configparser.y" +#line 2864 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6140,11 +6135,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6144 "util/configparser.c" +#line 6139 "util/configparser.c" break; case 549: -#line 2878 "./util/configparser.y" +#line 2873 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6153,31 +6148,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6157 "util/configparser.c" +#line 6152 "util/configparser.c" break; case 550: -#line 2888 "./util/configparser.y" +#line 2883 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6167 "util/configparser.c" +#line 6162 "util/configparser.c" break; case 551: -#line 2895 "./util/configparser.y" +#line 2890 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6177 "util/configparser.c" +#line 6172 "util/configparser.c" break; case 552: -#line 2902 "./util/configparser.y" +#line 2897 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6185,51 +6180,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6189 "util/configparser.c" +#line 6184 "util/configparser.c" break; case 553: -#line 2911 "./util/configparser.y" +#line 2906 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6199 "util/configparser.c" +#line 6194 "util/configparser.c" break; case 554: -#line 2918 "./util/configparser.y" +#line 2913 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6209 "util/configparser.c" +#line 6204 "util/configparser.c" break; case 555: -#line 2925 "./util/configparser.y" +#line 2920 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6219 "util/configparser.c" +#line 6214 "util/configparser.c" break; case 556: -#line 2932 "./util/configparser.y" +#line 2927 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6229 "util/configparser.c" +#line 6224 "util/configparser.c" break; case 557: -#line 2939 "./util/configparser.y" +#line 2934 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6237,11 +6232,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6241 "util/configparser.c" +#line 6236 "util/configparser.c" break; case 558: -#line 2948 "./util/configparser.y" +#line 2943 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6249,31 +6244,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6253 "util/configparser.c" +#line 6248 "util/configparser.c" break; case 559: -#line 2957 "./util/configparser.y" +#line 2952 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6263 "util/configparser.c" +#line 6258 "util/configparser.c" break; case 560: -#line 2964 "./util/configparser.y" +#line 2959 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6273 "util/configparser.c" +#line 6268 "util/configparser.c" break; case 561: -#line 2971 "./util/configparser.y" +#line 2966 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6282,11 +6277,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6286 "util/configparser.c" +#line 6281 "util/configparser.c" break; case 562: -#line 2981 "./util/configparser.y" +#line 2976 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6295,11 +6290,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6299 "util/configparser.c" +#line 6294 "util/configparser.c" break; case 563: -#line 2991 "./util/configparser.y" +#line 2986 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6308,11 +6303,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6312 "util/configparser.c" +#line 6307 "util/configparser.c" break; case 564: -#line 3001 "./util/configparser.y" +#line 2996 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6321,11 +6316,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6325 "util/configparser.c" +#line 6320 "util/configparser.c" break; case 565: -#line 3011 "./util/configparser.y" +#line 3006 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6334,11 +6329,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6338 "util/configparser.c" +#line 6333 "util/configparser.c" break; case 566: -#line 3021 "./util/configparser.y" +#line 3016 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6347,47 +6342,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6351 "util/configparser.c" +#line 6346 "util/configparser.c" break; case 567: -#line 3031 "./util/configparser.y" +#line 3026 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6359 "util/configparser.c" +#line 6354 "util/configparser.c" break; case 571: -#line 3040 "./util/configparser.y" +#line 3035 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6369 "util/configparser.c" +#line 6364 "util/configparser.c" break; case 572: -#line 3046 "./util/configparser.y" +#line 3041 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6377 "util/configparser.c" +#line 6372 "util/configparser.c" break; case 576: -#line 3055 "./util/configparser.y" +#line 3050 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6387 "util/configparser.c" +#line 6382 "util/configparser.c" break; case 577: -#line 3061 "./util/configparser.y" +#line 3056 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6396,21 +6391,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6400 "util/configparser.c" +#line 6395 "util/configparser.c" break; case 578: -#line 3071 "./util/configparser.y" +#line 3066 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6410 "util/configparser.c" +#line 6405 "util/configparser.c" break; case 579: -#line 3078 "./util/configparser.y" +#line 3073 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6418,30 +6413,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6422 "util/configparser.c" +#line 6417 "util/configparser.c" break; case 580: -#line 3087 "./util/configparser.y" +#line 3082 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6433 "util/configparser.c" +#line 6428 "util/configparser.c" break; case 581: -#line 3095 "./util/configparser.y" +#line 3090 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6441 "util/configparser.c" +#line 6436 "util/configparser.c" break; case 594: -#line 3111 "./util/configparser.y" +#line 3106 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6449,11 +6444,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6453 "util/configparser.c" +#line 6448 "util/configparser.c" break; case 595: -#line 3121 "./util/configparser.y" +#line 3116 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6461,21 +6456,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6465 "util/configparser.c" +#line 6460 "util/configparser.c" break; case 596: -#line 3130 "./util/configparser.y" +#line 3125 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6475 "util/configparser.c" +#line 6470 "util/configparser.c" break; case 597: -#line 3137 "./util/configparser.y" +#line 3132 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6483,21 +6478,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6487 "util/configparser.c" +#line 6482 "util/configparser.c" break; case 598: -#line 3146 "./util/configparser.y" +#line 3141 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6497 "util/configparser.c" +#line 6492 "util/configparser.c" break; case 599: -#line 3153 "./util/configparser.y" +#line 3148 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6505,22 +6500,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6509 "util/configparser.c" +#line 6504 "util/configparser.c" break; case 600: -#line 3162 "./util/configparser.y" +#line 3157 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6520 "util/configparser.c" +#line 6515 "util/configparser.c" break; case 601: -#line 3170 "./util/configparser.y" +#line 3165 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6532,22 +6527,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6536 "util/configparser.c" +#line 6531 "util/configparser.c" break; case 602: -#line 3183 "./util/configparser.y" +#line 3178 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6547 "util/configparser.c" +#line 6542 "util/configparser.c" break; case 603: -#line 3191 "./util/configparser.y" +#line 3186 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6559,19 +6554,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6563 "util/configparser.c" +#line 6558 "util/configparser.c" break; case 604: -#line 3204 "./util/configparser.y" +#line 3199 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6571 "util/configparser.c" +#line 6566 "util/configparser.c" break; case 613: -#line 3215 "./util/configparser.y" +#line 3210 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6582,11 +6577,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6586 "util/configparser.c" +#line 6581 "util/configparser.c" break; case 614: -#line 3227 "./util/configparser.y" +#line 3222 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6597,11 +6592,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6601 "util/configparser.c" +#line 6596 "util/configparser.c" break; case 615: -#line 3239 "./util/configparser.y" +#line 3234 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6612,11 +6607,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6616 "util/configparser.c" +#line 6611 "util/configparser.c" break; case 616: -#line 3251 "./util/configparser.y" +#line 3246 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6630,11 +6625,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6634 "util/configparser.c" +#line 6629 "util/configparser.c" break; case 617: -#line 3266 "./util/configparser.y" +#line 3261 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6646,11 +6641,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6650 "util/configparser.c" +#line 6645 "util/configparser.c" break; case 618: -#line 3279 "./util/configparser.y" +#line 3274 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6662,11 +6657,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6666 "util/configparser.c" +#line 6661 "util/configparser.c" break; case 619: -#line 3292 "./util/configparser.y" +#line 3287 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6676,19 +6671,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6680 "util/configparser.c" +#line 6675 "util/configparser.c" break; case 620: -#line 3303 "./util/configparser.y" +#line 3298 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6688 "util/configparser.c" +#line 6683 "util/configparser.c" break; case 625: -#line 3312 "./util/configparser.y" +#line 3307 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6702,11 +6697,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6706 "util/configparser.c" +#line 6701 "util/configparser.c" break; case 626: -#line 3327 "./util/configparser.y" +#line 3322 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6720,11 +6715,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6724 "util/configparser.c" +#line 6719 "util/configparser.c" break; -#line 6728 "util/configparser.c" +#line 6723 "util/configparser.c" default: break; } @@ -6956,7 +6951,7 @@ yyreturn: #endif return yyresult; } -#line 3341 "./util/configparser.y" +#line 3336 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 3a5ea579d..d9a78e107 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -344,8 +344,8 @@ extern int yydebug; VAR_RPZ_LOG_NAME = 550, VAR_DYNLIB = 551, VAR_DYNLIB_FILE = 552, - VAR_EDNS_CLIENT_TAG = 553, - VAR_EDNS_CLIENT_TAG_OPCODE = 554 + VAR_EDNS_CLIENT_STRING = 553, + VAR_EDNS_CLIENT_STRING_OPCODE = 554 }; #endif /* Tokens. */ @@ -644,8 +644,8 @@ extern int yydebug; #define VAR_RPZ_LOG_NAME 550 #define VAR_DYNLIB 551 #define VAR_DYNLIB_FILE 552 -#define VAR_EDNS_CLIENT_TAG 553 -#define VAR_EDNS_CLIENT_TAG_OPCODE 554 +#define VAR_EDNS_CLIENT_STRING 553 +#define VAR_EDNS_CLIENT_STRING_OPCODE 554 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED diff --git a/util/configparser.y b/util/configparser.y index 43a886f24..ebc71a8bb 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -178,7 +178,8 @@ extern struct config_parser_state* cfg_parser; %token VAR_IPSET VAR_IPSET_NAME_V4 VAR_IPSET_NAME_V6 %token VAR_TLS_SESSION_TICKET_KEYS VAR_RPZ VAR_TAGS VAR_RPZ_ACTION_OVERRIDE %token VAR_RPZ_CNAME_OVERRIDE VAR_RPZ_LOG VAR_RPZ_LOG_NAME -%token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_TAG VAR_EDNS_CLIENT_TAG_OPCODE +%token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_STRING +%token VAR_EDNS_CLIENT_STRING_OPCODE %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -291,8 +292,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_unknown_server_time_limit | server_log_tag_queryreply | server_stream_wait_size | server_tls_ciphers | server_tls_ciphersuites | server_tls_session_ticket_keys | - server_tls_use_sni | server_edns_client_tag | - server_edns_client_tag_opcode + server_tls_use_sni | server_edns_client_string | + server_edns_client_string_opcode ; stubstart: VAR_STUB_ZONE { @@ -2465,29 +2466,23 @@ server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG #endif } ; -server_edns_client_tag: VAR_EDNS_CLIENT_TAG STRING_ARG STRING_ARG +server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG { - int tag_data; - OUTYY(("P(server_edns_client_tag:%s %s)\n", $2, $3)); - tag_data = atoi($3); - if(tag_data > 65535 || tag_data < 0 || - (tag_data == 0 && (strlen($3) != 1 || $3[0] != '0'))) - yyerror("edns-client-tag data invalid, needs to be a " - "number from 0 to 65535"); + OUTYY(("P(server_edns_client_string:%s %s)\n", $2, $3)); if(!cfg_str2list_insert( - &cfg_parser->cfg->edns_client_tags, $2, $3)) + &cfg_parser->cfg->edns_client_strings, $2, $3)) fatal_exit("out of memory adding " - "edns-client-tag"); + "edns-client-string"); } ; -server_edns_client_tag_opcode: VAR_EDNS_CLIENT_TAG_OPCODE STRING_ARG +server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG { - OUTYY(("P(edns_client_tag_opcode:%s)\n", $2)); + OUTYY(("P(edns_client_string_opcode:%s)\n", $2)); if(atoi($2) == 0 && strcmp($2, "0") != 0) yyerror("option code expected"); else if(atoi($2) > 65535 || atoi($2) < 0) yyerror("option code must be in interval [0, 65535]"); - else cfg_parser->cfg->edns_client_tag_opcode = atoi($2); + else cfg_parser->cfg->edns_client_string_opcode = atoi($2); } ; diff --git a/util/edns.c b/util/edns.c index c83a4a545..ddbb46e89 100644 --- a/util/edns.c +++ b/util/edns.c @@ -48,81 +48,84 @@ #include "util/data/msgparse.h" #include "util/data/msgreply.h" -struct edns_tags* edns_tags_create(void) +struct edns_strings* edns_strings_create(void) { - struct edns_tags* edns_tags = calloc(1, sizeof(struct edns_tags)); - if(!edns_tags) + struct edns_strings* edns_strings = calloc(1, + sizeof(struct edns_strings)); + if(!edns_strings) return NULL; - if(!(edns_tags->region = regional_create())) { - edns_tags_delete(edns_tags); + if(!(edns_strings->region = regional_create())) { + edns_strings_delete(edns_strings); return NULL; } - return edns_tags; + return edns_strings; } -void edns_tags_delete(struct edns_tags* edns_tags) +void edns_strings_delete(struct edns_strings* edns_strings) { - if(!edns_tags) + if(!edns_strings) return; - regional_destroy(edns_tags->region); - free(edns_tags); + regional_destroy(edns_strings->region); + free(edns_strings); } static int -edns_tags_client_insert(struct edns_tags* edns_tags, +edns_strings_client_insert(struct edns_strings* edns_strings, struct sockaddr_storage* addr, socklen_t addrlen, int net, - uint16_t tag_data) + const char* string) { - struct edns_tag_addr* eta = regional_alloc_zero(edns_tags->region, - sizeof(struct edns_tag_addr)); - if(!eta) + struct edns_string_addr* esa = regional_alloc_zero(edns_strings->region, + sizeof(struct edns_string_addr)); + if(!esa) return 0; - eta->tag_data = tag_data; - if(!addr_tree_insert(&edns_tags->client_tags, &eta->node, addr, addrlen, - net)) { - verbose(VERB_QUERY, "duplicate EDNS client tag ignored."); + esa->string_len = strlen(string); + esa->string = regional_alloc_init(edns_strings->region, string, + esa->string_len); + if(!esa->string) + return 0; + if(!addr_tree_insert(&edns_strings->client_strings, &esa->node, addr, + addrlen, net)) { + verbose(VERB_QUERY, "duplicate EDNS client string ignored."); } return 1; } -int edns_tags_apply_cfg(struct edns_tags* edns_tags, +int edns_strings_apply_cfg(struct edns_strings* edns_strings, struct config_file* config) { struct config_str2list* c; - regional_free_all(edns_tags->region); - addr_tree_init(&edns_tags->client_tags); + regional_free_all(edns_strings->region); + addr_tree_init(&edns_strings->client_strings); - for(c=config->edns_client_tags; c; c=c->next) { + for(c=config->edns_client_strings; c; c=c->next) { struct sockaddr_storage addr; socklen_t addrlen; int net; - uint16_t tag_data; log_assert(c->str && c->str2); if(!netblockstrtoaddr(c->str, UNBOUND_DNS_PORT, &addr, &addrlen, &net)) { - log_err("cannot parse EDNS client tag IP netblock: %s", - c->str); + log_err("cannot parse EDNS client string IP netblock: " + "%s", c->str); return 0; } - tag_data = atoi(c->str2); /* validated in config parser */ - if(!edns_tags_client_insert(edns_tags, &addr, addrlen, net, - tag_data)) { - log_err("out of memory while adding EDNS tags"); + if(!edns_strings_client_insert(edns_strings, &addr, addrlen, + net, c->str2)) { + log_err("out of memory while adding EDNS strings"); return 0; } } - edns_tags->client_tag_opcode = config->edns_client_tag_opcode; + edns_strings->client_string_opcode = config->edns_client_string_opcode; - addr_tree_init_parents(&edns_tags->client_tags); + addr_tree_init_parents(&edns_strings->client_strings); return 1; } -struct edns_tag_addr* -edns_tag_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, +struct edns_string_addr* +edns_string_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, socklen_t addrlen) { - return (struct edns_tag_addr*)addr_tree_lookup(tree, addr, addrlen); + return (struct edns_string_addr*)addr_tree_lookup(tree, addr, addrlen); } static int edns_keepalive(struct edns_data* edns_out, struct edns_data* edns_in, diff --git a/util/edns.h b/util/edns.h index cf9f8707e..11742eb5b 100644 --- a/util/edns.h +++ b/util/edns.h @@ -50,58 +50,60 @@ struct comm_point; struct regional; /** - * Structure containing all EDNS tags. + * Structure containing all EDNS strings. */ -struct edns_tags { - /** Tree of EDNS client tags to use in upstream queries, per address - * prefix. Contains nodes of type edns_tag_addr. */ - rbtree_type client_tags; - /** EDNS opcode to use for client tags */ - uint16_t client_tag_opcode; +struct edns_strings { + /** Tree of EDNS client strings to use in upstream queries, per address + * prefix. Contains nodes of type edns_string_addr. */ + rbtree_type client_strings; + /** EDNS opcode to use for client strings */ + uint16_t client_string_opcode; /** region to allocate tree nodes in */ struct regional* region; }; /** - * EDNS tag. Node of rbtree, containing tag and prefix. + * EDNS string. Node of rbtree, containing string and prefix. */ -struct edns_tag_addr { +struct edns_string_addr { /** node in address tree, used for tree lookups. Need to be the first * member of this struct. */ struct addr_tree_node node; - /** tag data, in host byte ordering */ - uint16_t tag_data; + /** string, ascii format */ + uint8_t* string; + /** length of string */ + size_t string_len; }; /** - * Create structure to hold EDNS tags - * @return: newly created edns_tags, NULL on alloc failure. + * Create structure to hold EDNS strings + * @return: newly created edns_strings, NULL on alloc failure. */ -struct edns_tags* edns_tags_create(void); +struct edns_strings* edns_strings_create(void); -/** Delete EDNS tags structure - * @param edns_tags: struct to delete +/** Delete EDNS strings structure + * @param edns_strings: struct to delete */ -void edns_tags_delete(struct edns_tags* edns_tags); +void edns_strings_delete(struct edns_strings* edns_strings); /** - * Add configured EDNS tags - * @param edns_tags: edns tags to apply config to - * @param config: struct containing EDNS tags configuration + * Add configured EDNS strings + * @param edns_strings: edns strings to apply config to + * @param config: struct containing EDNS strings configuration * @return 0 on error */ -int edns_tags_apply_cfg(struct edns_tags* edns_tags, +int edns_strings_apply_cfg(struct edns_strings* edns_strings, struct config_file* config); /** - * Find tag for address. - * @param tree: tree containing EDNS tags per address prefix. + * Find string for address. + * @param tree: tree containing EDNS strings per address prefix. * @param addr: address to use for tree lookup * @param addrlen: length of address * @return: matching tree node, NULL otherwise */ -struct edns_tag_addr* -edns_tag_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, +struct edns_string_addr* +edns_string_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, socklen_t addrlen); /** diff --git a/util/module.h b/util/module.h index 1eed21300..7b833f8ad 100644 --- a/util/module.h +++ b/util/module.h @@ -520,8 +520,8 @@ struct module_env { struct edns_known_option* edns_known_options; /* Number of known edns options */ size_t edns_known_options_num; - /** EDNS client tag information */ - struct edns_tags* edns_tags; + /** EDNS client string information */ + struct edns_strings* edns_strings; /* Make every mesh state unique, do not aggregate mesh states. */ int unique_mesh;