diff --git a/Makefile.in b/Makefile.in index 3189731ad..bf78a694d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -139,7 +139,7 @@ validator/val_sigcrypt.c validator/val_utils.c dns64/dns64.c \ edns-subnet/edns-subnet.c edns-subnet/subnetmod.c \ edns-subnet/addrtree.c edns-subnet/subnet-whitelist.c \ $(CACHEDB_SRC) respip/respip.c $(CHECKLOCK_SRC) \ -$(DNSTAP_SRC) $(DNSCRYPT_SRC) $(IPSECMOD_SRC) $(IPSET_SRC) +$(DNSTAP_SRC) $(DNSCRYPT_SRC) $(IPSECMOD_SRC) $(IPSET_SRC) daemon/acl_list.c COMMON_OBJ_WITHOUT_NETCALL=dns.lo infra.lo rrset.lo dname.lo msgencode.lo \ as112.lo msgparse.lo msgreply.lo packed_rrset.lo iterator.lo iter_delegpt.lo \ iter_donotq.lo iter_fwd.lo iter_hints.lo iter_priv.lo iter_resptype.lo \ @@ -154,7 +154,7 @@ val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo $(CACHEDB_OBJ) authzone.lo $(SUBNET_OBJ) $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) $(DNSCRYPT_OBJ) \ $(IPSECMOD_OBJ) $(IPSET_OBJ) $(DYNLIBMOD_OBJ) respip.lo COMMON_OBJ_WITHOUT_UB_EVENT=$(COMMON_OBJ_WITHOUT_NETCALL) netevent.lo listen_dnsport.lo \ -outside_network.lo +outside_network.lo acl_list.lo COMMON_OBJ=$(COMMON_OBJ_WITHOUT_UB_EVENT) ub_event.lo # set to $COMMON_OBJ or to "" if --enableallsymbols COMMON_OBJ_ALL_SYMBOLS=@COMMON_OBJ_ALL_SYMBOLS@ @@ -186,9 +186,9 @@ readhex.lo testpkts.lo unitldns.lo unitecs.lo unitauth.lo unitzonemd.lo \ unittcpreuse.lo UNITTEST_OBJ_LINK=$(UNITTEST_OBJ) worker_cb.lo $(COMMON_OBJ) $(SLDNS_OBJ) \ $(COMPAT_OBJ) -DAEMON_SRC=daemon/acl_list.c daemon/cachedump.c daemon/daemon.c \ +DAEMON_SRC=daemon/cachedump.c daemon/daemon.c \ daemon/remote.c daemon/stats.c daemon/unbound.c daemon/worker.c @WIN_DAEMON_SRC@ -DAEMON_OBJ=acl_list.lo cachedump.lo daemon.lo \ +DAEMON_OBJ=cachedump.lo daemon.lo \ shm_main.lo remote.lo stats.lo unbound.lo \ worker.lo @WIN_DAEMON_OBJ@ DAEMON_OBJ_LINK=$(DAEMON_OBJ) $(COMMON_OBJ_ALL_SYMBOLS) $(SLDNS_OBJ) \ diff --git a/daemon/acl_list.c b/daemon/acl_list.c index aecb3e0c6..2006f9592 100644 --- a/daemon/acl_list.c +++ b/daemon/acl_list.c @@ -46,9 +46,10 @@ #include "util/config_file.h" #include "util/net_help.h" #include "services/localzone.h" +#include "services/listen_dnsport.h" #include "sldns/str2wire.h" -struct acl_list* +struct acl_list* acl_list_create(void) { struct acl_list* acl = (struct acl_list*)calloc(1, @@ -63,10 +64,10 @@ acl_list_create(void) return acl; } -void +void acl_list_delete(struct acl_list* acl) { - if(!acl) + if(!acl) return; regional_destroy(acl->region); free(acl); @@ -74,8 +75,8 @@ acl_list_delete(struct acl_list* acl) /** insert new address into acl_list structure */ static struct acl_addr* -acl_list_insert(struct acl_list* acl, struct sockaddr_storage* addr, - socklen_t addrlen, int net, enum acl_access control, +acl_list_insert(struct acl_list* acl, struct sockaddr_storage* addr, + socklen_t addrlen, int net, enum acl_access control, int complain_duplicates) { struct acl_addr* node = regional_alloc_zero(acl->region, @@ -90,6 +91,31 @@ acl_list_insert(struct acl_list* acl, struct sockaddr_storage* addr, return node; } +/** parse str to acl_access enum */ +static int +parse_acl_access(const char* str, enum acl_access* control) +{ + if(strcmp(str, "allow") == 0) + *control = acl_allow; + else if(strcmp(str, "deny") == 0) + *control = acl_deny; + else if(strcmp(str, "refuse") == 0) + *control = acl_refuse; + else if(strcmp(str, "deny_non_local") == 0) + *control = acl_deny_non_local; + else if(strcmp(str, "refuse_non_local") == 0) + *control = acl_refuse_non_local; + else if(strcmp(str, "allow_snoop") == 0) + *control = acl_allow_snoop; + else if(strcmp(str, "allow_setrd") == 0) + *control = acl_allow_setrd; + else { + log_err("access control type %s unknown", str); + return 0; + } + return 1; +} + /** apply acl_list string */ static int acl_list_str_cfg(struct acl_list* acl, const char* str, const char* s2, @@ -99,29 +125,14 @@ acl_list_str_cfg(struct acl_list* acl, const char* str, const char* s2, int net; socklen_t addrlen; enum acl_access control; - if(strcmp(s2, "allow") == 0) - control = acl_allow; - else if(strcmp(s2, "deny") == 0) - control = acl_deny; - else if(strcmp(s2, "refuse") == 0) - control = acl_refuse; - else if(strcmp(s2, "deny_non_local") == 0) - control = acl_deny_non_local; - else if(strcmp(s2, "refuse_non_local") == 0) - control = acl_refuse_non_local; - else if(strcmp(s2, "allow_snoop") == 0) - control = acl_allow_snoop; - else if(strcmp(s2, "allow_setrd") == 0) - control = acl_allow_setrd; - else { - log_err("access control type %s unknown", str); + if(!parse_acl_access(s2, &control)) { return 0; } if(!netblockstrtoaddr(str, UNBOUND_DNS_PORT, &addr, &addrlen, &net)) { log_err("cannot parse access control: %s %s", str, s2); return 0; } - if(!acl_list_insert(acl, &addr, addrlen, net, control, + if(!acl_list_insert(acl, &addr, addrlen, net, control, complain_duplicates)) { log_err("out of memory"); return 0; @@ -131,19 +142,27 @@ acl_list_str_cfg(struct acl_list* acl, const char* str, const char* s2, /** find or create node (NULL on parse or error) */ static struct acl_addr* -acl_find_or_create(struct acl_list* acl, const char* str) +acl_find_or_create(struct acl_list* acl, const char* str, int is_interface, + int port) { struct acl_addr* node; struct sockaddr_storage addr; - int net; socklen_t addrlen; - if(!netblockstrtoaddr(str, UNBOUND_DNS_PORT, &addr, &addrlen, &net)) { - log_err("cannot parse netblock: %s", str); - return NULL; + int net = (str_is_ip6(str)?128:32); + if(is_interface) { + if(!extstrtoaddr(str, &addr, &addrlen, port)) { + log_err("cannot parse interface: %s", str); + return NULL; + } + } else { + if(!netblockstrtoaddr(str, UNBOUND_DNS_PORT, &addr, &addrlen, &net)) { + log_err("cannot parse netblock: %s", str); + return NULL; + } } /* find or create node */ if(!(node=(struct acl_addr*)addr_tree_find(&acl->tree, &addr, - addrlen, net))) { + addrlen, net)) && !is_interface) { /* create node, type 'allow' since otherwise tags are * pointless, can override with specific access-control: cfg */ if(!(node=(struct acl_addr*)acl_list_insert(acl, &addr, @@ -155,13 +174,54 @@ acl_find_or_create(struct acl_list* acl, const char* str) return node; } +/** apply acl_interface string */ +static int +acl_interface_str_cfg(struct acl_list* acl_interface, const char* interface, + const char* s2, int port) +{ + struct acl_addr* node; + enum acl_access control; + if(!parse_acl_access(s2, &control)) { + return 0; + } + if(!(node=acl_find_or_create(acl_interface, interface, 1, port))) { + log_err("cannot update ACL on non-existing interface: %s %d", + interface, port); + return 0; + } + node->control = control; + return 1; +} + +struct acl_addr* +acl_interface_insert(struct acl_list* acl_interface, const char* interface, + const char* s2, int port) +{ + struct acl_addr* node; + struct sockaddr_storage addr; + socklen_t addrlen; + enum acl_access control; + int net = (str_is_ip6(interface)?128:32); + if(!parse_acl_access(s2, &control)) { + return NULL; + } + if((node=acl_find_or_create(acl_interface, interface, 1, port))) { + return node; + } + if(!extstrtoaddr(interface, &addr, &addrlen, port)) { + log_err("cannot parse access control: %s %s", interface, s2); + return NULL; + } + return acl_list_insert(acl_interface, &addr, addrlen, net, control, 1); +} + /** apply acl_tag string */ static int acl_list_tags_cfg(struct acl_list* acl, const char* str, uint8_t* bitmap, - size_t bitmaplen) + size_t bitmaplen, int is_interface, int port) { struct acl_addr* node; - if(!(node=acl_find_or_create(acl, str))) + if(!(node=acl_find_or_create(acl, str, is_interface, port))) return 0; node->taglen = bitmaplen; node->taglist = regional_alloc_init(acl->region, bitmap, bitmaplen); @@ -175,10 +235,10 @@ acl_list_tags_cfg(struct acl_list* acl, const char* str, uint8_t* bitmap, /** apply acl_view string */ static int acl_list_view_cfg(struct acl_list* acl, const char* str, const char* str2, - struct views* vs) + struct views* vs, int is_interface, int port) { struct acl_addr* node; - if(!(node=acl_find_or_create(acl, str))) + if(!(node=acl_find_or_create(acl, str, is_interface, port))) return 0; node->view = views_find_view(vs, str2, 0 /* get read lock*/); if(!node->view) { @@ -192,12 +252,13 @@ acl_list_view_cfg(struct acl_list* acl, const char* str, const char* str2, /** apply acl_tag_action string */ static int acl_list_tag_action_cfg(struct acl_list* acl, struct config_file* cfg, - const char* str, const char* tag, const char* action) + const char* str, const char* tag, const char* action, + int is_interface, int port) { struct acl_addr* node; int tagid; enum localzone_type t; - if(!(node=acl_find_or_create(acl, str))) + if(!(node=acl_find_or_create(acl, str, is_interface, port))) return 0; /* allocate array if not yet */ if(!node->tag_actions) { @@ -281,12 +342,13 @@ check_data(const char* data, const struct config_strlist* head) /** apply acl_tag_data string */ static int acl_list_tag_data_cfg(struct acl_list* acl, struct config_file* cfg, - const char* str, const char* tag, const char* data) + const char* str, const char* tag, const char* data, + int is_interface, int port) { struct acl_addr* node; int tagid; char* dupdata; - if(!(node=acl_find_or_create(acl, str))) + if(!(node=acl_find_or_create(acl, str, is_interface, port))) return 0; /* allocate array if not yet */ if(!node->tag_datas) { @@ -329,11 +391,11 @@ acl_list_tag_data_cfg(struct acl_list* acl, struct config_file* cfg, } /** read acl_list config */ -static int -read_acl_list(struct acl_list* acl, struct config_file* cfg) +static int +read_acl_list(struct acl_list* acl, struct config_str2list* acls) { struct config_str2list* p; - for(p = cfg->acls; p; p = p->next) { + for(p = acls; p; p = p->next) { log_assert(p->str && p->str2); if(!acl_list_str_cfg(acl, p->str, p->str2, 1)) return 0; @@ -341,15 +403,38 @@ read_acl_list(struct acl_list* acl, struct config_file* cfg) return 1; } -/** read acl tags config */ -static int -read_acl_tags(struct acl_list* acl, struct config_file* cfg) +/** read acl view config */ +static int +read_acl_view(struct acl_list* acl, struct config_str2list** acl_view, + struct views* v) { - struct config_strbytelist* np, *p = cfg->acl_tags; - cfg->acl_tags = NULL; + struct config_str2list* np, *p = *acl_view; + *acl_view = NULL; while(p) { log_assert(p->str && p->str2); - if(!acl_list_tags_cfg(acl, p->str, p->str2, p->str2len)) { + if(!acl_list_view_cfg(acl, p->str, p->str2, v, 0, 0)) { + config_deldblstrlist(p); + return 0; + } + /* free the items as we go to free up memory */ + np = p->next; + free(p->str); + free(p->str2); + free(p); + p = np; + } + return 1; +} + +/** read acl tags config */ +static int +read_acl_tags(struct acl_list* acl, struct config_strbytelist** acl_tags) +{ + struct config_strbytelist* np, *p = *acl_tags; + *acl_tags = NULL; + while(p) { + log_assert(p->str && p->str2); + if(!acl_list_tags_cfg(acl, p->str, p->str2, p->str2len, 0, 0)) { config_del_strbytelist(p); return 0; } @@ -363,38 +448,18 @@ read_acl_tags(struct acl_list* acl, struct config_file* cfg) return 1; } -/** read acl view config */ -static int -read_acl_view(struct acl_list* acl, struct config_file* cfg, struct views* v) -{ - struct config_str2list* np, *p = cfg->acl_view; - cfg->acl_view = NULL; - while(p) { - log_assert(p->str && p->str2); - if(!acl_list_view_cfg(acl, p->str, p->str2, v)) { - return 0; - } - /* free the items as we go to free up memory */ - np = p->next; - free(p->str); - free(p->str2); - free(p); - p = np; - } - return 1; -} - /** read acl tag actions config */ -static int -read_acl_tag_actions(struct acl_list* acl, struct config_file* cfg) +static int +read_acl_tag_actions(struct acl_list* acl, struct config_file* cfg, + struct config_str3list** acl_tag_actions) { struct config_str3list* p, *np; - p = cfg->acl_tag_actions; - cfg->acl_tag_actions = NULL; + p = *acl_tag_actions; + *acl_tag_actions = NULL; while(p) { log_assert(p->str && p->str2 && p->str3); if(!acl_list_tag_action_cfg(acl, cfg, p->str, p->str2, - p->str3)) { + p->str3, 0, 0)) { config_deltrplstrlist(p); return 0; } @@ -410,15 +475,17 @@ read_acl_tag_actions(struct acl_list* acl, struct config_file* cfg) } /** read acl tag datas config */ -static int -read_acl_tag_datas(struct acl_list* acl, struct config_file* cfg) +static int +read_acl_tag_datas(struct acl_list* acl, struct config_file* cfg, + struct config_str3list** acl_tag_datas) { struct config_str3list* p, *np; - p = cfg->acl_tag_datas; - cfg->acl_tag_datas = NULL; + p = *acl_tag_datas; + *acl_tag_datas = NULL; while(p) { log_assert(p->str && p->str2 && p->str3); - if(!acl_list_tag_data_cfg(acl, cfg, p->str, p->str2, p->str3)) { + if(!acl_list_tag_data_cfg(acl, cfg, p->str, p->str2, p->str3, + 0, 0)) { config_deltrplstrlist(p); return 0; } @@ -433,30 +500,27 @@ read_acl_tag_datas(struct acl_list* acl, struct config_file* cfg) return 1; } -int +int acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg, struct views* v) { regional_free_all(acl->region); addr_tree_init(&acl->tree); - if(!read_acl_list(acl, cfg)) + if(!read_acl_list(acl, cfg->acls)) return 0; - if(!read_acl_view(acl, cfg, v)) + if(!read_acl_view(acl, &cfg->acl_view, v)) return 0; - if(!read_acl_tags(acl, cfg)) + if(!read_acl_tags(acl, &cfg->acl_tags)) return 0; - if(!read_acl_tag_actions(acl, cfg)) + if(!read_acl_tag_actions(acl, cfg, &cfg->acl_tag_actions)) return 0; - if(!read_acl_tag_datas(acl, cfg)) + if(!read_acl_tag_datas(acl, cfg, &cfg->acl_tag_datas)) return 0; /* insert defaults, with '0' to ignore them if they are duplicates */ - if(!acl_list_str_cfg(acl, "0.0.0.0/0", "refuse", 0)) - return 0; + /* the 'refuse' defaults for /0 are now done per interface instead */ if(!acl_list_str_cfg(acl, "127.0.0.0/8", "allow", 0)) return 0; if(cfg->do_ip6) { - if(!acl_list_str_cfg(acl, "::0/0", "refuse", 0)) - return 0; if(!acl_list_str_cfg(acl, "::1", "allow", 0)) return 0; if(!acl_list_str_cfg(acl, "::ffff:127.0.0.1", "allow", 0)) @@ -466,7 +530,221 @@ acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg, return 1; } -enum acl_access +int +acl_interface_compare(const void* k1, const void* k2) +{ + struct addr_tree_node* n1 = (struct addr_tree_node*)k1; + struct addr_tree_node* n2 = (struct addr_tree_node*)k2; + return sockaddr_cmp(&n1->addr, n1->addrlen, &n2->addr, + n2->addrlen); + /* We don't care about comparing node->net. All addresses in the + * acl_interface tree have either 32 (ipv4) or 128 (ipv6). */ +} + +void +acl_interface_init(struct acl_list* acl_interface) +{ + regional_free_all(acl_interface->region); + /* We want comparison in the tree to include both IP and port. + * Initialise with the given compare fucntion but keep treating it as + * an addr_tree. */ + rbtree_init(&acl_interface->tree, &acl_interface_compare); +} + +static int +read_acl_interface_action(struct acl_list* acl_interface, + struct config_str2list* acls, int port) +{ + struct config_str2list* p; + for(p = acls; p; p = p->next) { + char** resif = NULL; + int num_resif = 0; + int i; + log_assert(p->str && p->str2); + if(!resolve_interface_names(&p->str, 1, NULL, &resif, &num_resif)) + return 0; + for(i = 0; istr2, port)){ + config_del_strarray(resif, num_resif); + return 0; + } + } + config_del_strarray(resif, num_resif); + } + return 1; +} + +/** read acl view config for interface */ +static int +read_acl_interface_view(struct acl_list* acl_interface, + struct config_str2list** acl_view, + struct views* v, int port) +{ + struct config_str2list* np, *p = *acl_view; + *acl_view = NULL; + while(p) { + char** resif = NULL; + int num_resif = 0; + int i; + log_assert(p->str && p->str2); + if(!resolve_interface_names(&p->str, 1, NULL, &resif, &num_resif)) { + config_deldblstrlist(p); + return 0; + } + for(i = 0; istr, p->str2, + v, 1, port)) { + config_del_strarray(resif, num_resif); + config_deldblstrlist(p); + return 0; + } + } + config_del_strarray(resif, num_resif); + /* free the items as we go to free up memory */ + np = p->next; + free(p->str); + free(p->str2); + free(p); + p = np; + } + return 1; +} + +/** read acl tags config for interface */ +static int +read_acl_interface_tags(struct acl_list* acl_interface, + struct config_strbytelist** acl_tags, int port) +{ + struct config_strbytelist* np, *p = *acl_tags; + *acl_tags = NULL; + while(p) { + char** resif = NULL; + int num_resif = 0; + int i; + log_assert(p->str && p->str2); + if(!resolve_interface_names(&p->str, 1, NULL, &resif, &num_resif)) { + config_del_strbytelist(p); + return 0; + } + for(i = 0; istr, p->str2, + p->str2len, 1, port)) { + config_del_strbytelist(p); + config_del_strarray(resif, num_resif); + return 0; + } + } + config_del_strarray(resif, num_resif); + /* free the items as we go to free up memory */ + np = p->next; + free(p->str); + free(p->str2); + free(p); + p = np; + } + return 1; +} + +/** read acl tag actions config for interface*/ +static int +read_acl_interface_tag_actions(struct acl_list* acl_interface, + struct config_file* cfg, + struct config_str3list** acl_tag_actions, int port) +{ + struct config_str3list* p, *np; + p = *acl_tag_actions; + *acl_tag_actions = NULL; + while(p) { + char** resif = NULL; + int num_resif = 0; + int i; + log_assert(p->str && p->str2 && p->str3); + if(!resolve_interface_names(&p->str, 1, NULL, &resif, &num_resif)) { + config_deltrplstrlist(p); + return 0; + } + for(i = 0; istr, + p->str2, p->str3, 1, port)) { + config_deltrplstrlist(p); + config_del_strarray(resif, num_resif); + return 0; + } + } + config_del_strarray(resif, num_resif); + /* free the items as we go to free up memory */ + np = p->next; + free(p->str); + free(p->str2); + free(p->str3); + free(p); + p = np; + } + return 1; +} + +/** read acl tag datas config for interface */ +static int +read_acl_interface_tag_datas(struct acl_list* acl_interface, + struct config_file* cfg, + struct config_str3list** acl_tag_datas, int port) +{ + struct config_str3list* p, *np; + p = *acl_tag_datas; + *acl_tag_datas = NULL; + while(p) { + char** resif = NULL; + int num_resif = 0; + int i; + log_assert(p->str && p->str2 && p->str3); + if(!resolve_interface_names(&p->str, 1, NULL, &resif, &num_resif)) { + config_deltrplstrlist(p); + return 0; + } + for(i = 0; istr, + p->str2, p->str3, 1, port)) { + config_deltrplstrlist(p); + config_del_strarray(resif, num_resif); + return 0; + } + } + config_del_strarray(resif, num_resif); + /* free the items as we go to free up memory */ + np = p->next; + free(p->str); + free(p->str2); + free(p->str3); + free(p); + p = np; + } + return 1; +} + +int +acl_interface_apply_cfg(struct acl_list* acl_interface, struct config_file* cfg, + struct views* v) +{ + if(!read_acl_interface_action(acl_interface, cfg->interface_actions, + cfg->port)) + return 0; + if(!read_acl_interface_view(acl_interface, &cfg->interface_view, v, + cfg->port)) + return 0; + if(!read_acl_interface_tags(acl_interface, &cfg->interface_tags, + cfg->port)) + return 0; + if(!read_acl_interface_tag_actions(acl_interface, cfg, + &cfg->interface_tag_actions, cfg->port)) + return 0; + if(!read_acl_interface_tag_datas(acl_interface, cfg, + &cfg->interface_tag_datas, cfg->port)) + return 0; + addr_tree_init_parents(&acl_interface->tree); + return 1; +} + +enum acl_access acl_get_control(struct acl_addr* acl) { if(acl) return acl->control; @@ -481,7 +759,7 @@ acl_addr_lookup(struct acl_list* acl, struct sockaddr_storage* addr, addr, addrlen); } -size_t +size_t acl_list_get_mem(struct acl_list* acl) { if(!acl) return 0; diff --git a/daemon/acl_list.h b/daemon/acl_list.h index c09e832a1..6617ec8c4 100644 --- a/daemon/acl_list.h +++ b/daemon/acl_list.h @@ -36,7 +36,7 @@ /** * \file * - * This file keeps track of the list of clients that are allowed to + * This file keeps track of the list of clients that are allowed to * access the server. */ @@ -74,7 +74,7 @@ enum acl_access { struct acl_list { /** regional for allocation */ struct regional* region; - /** + /** * Tree of the addresses that are allowed/blocked. * contents of type acl_addr. */ @@ -108,7 +108,7 @@ struct acl_addr { }; /** - * Create acl structure + * Create acl structure * @return new structure or NULL on error. */ struct acl_list* acl_list_create(void); @@ -119,6 +119,19 @@ struct acl_list* acl_list_create(void); */ void acl_list_delete(struct acl_list* acl); +/** + * Insert interface in the alc_list. This should happen when the listening + * interface is setup. + * @param acl_interface: acl_list to insert to. + * @param interface: interface (IP) in string format. + * @param s2: acl_access in string format. + * @param port: default port. + * @return new structure or NULL on error. + */ +struct acl_addr* +acl_interface_insert(struct acl_list* acl_interface, const char* interface, + const char* s2, int port); + /** * Process access control config. * @param acl: where to store. @@ -129,6 +142,25 @@ void acl_list_delete(struct acl_list* acl); int acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg, struct views* v); +/** compare ACL interface "addr_tree" nodes (+port) */ +int acl_interface_compare(const void* k1, const void* k2); + +/** + * Initialise (also clean) the acl_interface struct. + * @param acl_interface: where to store. + */ +void acl_interface_init(struct acl_list* acl_interface); + +/** + * Process interface control config. + * @param acl_interface: where to store. + * @param cfg: config options. + * @param v: views structure + * @return 0 on error. + */ +int acl_interface_apply_cfg(struct acl_list* acl_interface, struct config_file* cfg, + struct views* v); + /** * Lookup access control status for acl structure. * @param acl: structure for acl storage. diff --git a/daemon/daemon.c b/daemon/daemon.c index 4ed531855..28a06175d 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -271,8 +271,17 @@ daemon_init(void) free(daemon); return NULL; } + daemon->acl_interface = acl_list_create(); + if(!daemon->acl_interface) { + acl_list_delete(daemon->acl); + edns_known_options_delete(daemon->env); + free(daemon->env); + free(daemon); + return NULL; + } daemon->tcl = tcl_list_create(); if(!daemon->tcl) { + acl_list_delete(daemon->acl_interface); acl_list_delete(daemon->acl); edns_known_options_delete(daemon->env); free(daemon->env); @@ -284,6 +293,7 @@ daemon_init(void) log_err("gettimeofday: %s", strerror(errno)); daemon->time_last_stat = daemon->time_boot; if((daemon->env->auth_zones = auth_zones_create()) == 0) { + acl_list_delete(daemon->acl_interface); acl_list_delete(daemon->acl); tcl_list_delete(daemon->tcl); edns_known_options_delete(daemon->env); @@ -293,6 +303,7 @@ daemon_init(void) } if(!(daemon->env->edns_strings = edns_strings_create())) { auth_zones_delete(daemon->env->auth_zones); + acl_list_delete(daemon->acl_interface); acl_list_delete(daemon->acl); tcl_list_delete(daemon->tcl); edns_known_options_delete(daemon->env); @@ -320,6 +331,8 @@ daemon_open_shared_ports(struct daemon* daemon) free(daemon->ports); daemon->ports = NULL; } + /* clean acl_interface */ + acl_interface_init(daemon->acl_interface); if(!resolve_interface_names(daemon->cfg->ifs, daemon->cfg->num_ifs, NULL, &resif, &num_resif)) return 0; @@ -329,7 +342,8 @@ daemon_open_shared_ports(struct daemon* daemon) daemon->reuseport = 1; #endif /* try to use reuseport */ - p0 = listening_ports_open(daemon->cfg, resif, num_resif, &daemon->reuseport); + p0 = listening_ports_open(daemon->cfg, daemon->acl_interface, + resif, num_resif, &daemon->reuseport); if(!p0) { listening_ports_free(p0); config_del_strarray(resif, num_resif); @@ -355,6 +369,7 @@ daemon_open_shared_ports(struct daemon* daemon) for(i=1; inum_ports; i++) { if(!(daemon->ports[i]= listening_ports_open(daemon->cfg, + daemon->acl_interface, resif, num_resif, &daemon->reuseport)) || !daemon->reuseport ) { @@ -604,6 +619,9 @@ daemon_fork(struct daemon* daemon) if(!acl_list_apply_cfg(daemon->acl, daemon->cfg, daemon->views)) fatal_exit("Could not setup access control list"); + if(!acl_interface_apply_cfg(daemon->acl_interface, daemon->cfg, + daemon->views)) + fatal_exit("Could not setup interface control list"); if(!tcl_list_apply_cfg(daemon->tcl, daemon->cfg)) fatal_exit("Could not setup TCP connection limits"); if(daemon->cfg->dnscrypt) { @@ -780,6 +798,7 @@ daemon_delete(struct daemon* daemon) ub_randfree(daemon->rand); alloc_clear(&daemon->superalloc); acl_list_delete(daemon->acl); + acl_list_delete(daemon->acl_interface); tcl_list_delete(daemon->tcl); listen_desetup_locks(); free(daemon->chroot); diff --git a/daemon/daemon.h b/daemon/daemon.h index 3effbafb7..58713e9ce 100644 --- a/daemon/daemon.h +++ b/daemon/daemon.h @@ -113,6 +113,8 @@ struct daemon { struct module_stack mods; /** access control, which client IPs are allowed to connect */ struct acl_list* acl; + /** access control, which interfaces are allowed to connect */ + struct acl_list* acl_interface; /** TCP connection limit, limit connections from client IPs */ struct tcl_list* tcl; /** local authority zones */ diff --git a/daemon/worker.c b/daemon/worker.c index 4a06f53ec..94b7d9b53 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1330,6 +1330,10 @@ worker_handle_request(struct comm_point* c, void* arg, int error, #endif acladdr = acl_addr_lookup(worker->daemon->acl, &repinfo->addr, repinfo->addrlen); + /* If there is no ACL based on client IP use the interface ACL. */ + if(!acladdr) { + acladdr = c->socket->acl; + } acl = acl_get_control(acladdr); if((ret=deny_refuse_all(c, acl, worker, repinfo, acladdr, diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 377ae9916..9153f0404 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -1960,7 +1960,7 @@ static int dtio_open_output_tcp(struct dt_io_thread* dtio) memset(&addr, 0, sizeof(addr)); addrlen = (socklen_t)sizeof(addr); - if(!extstrtoaddr(dtio->ip_str, &addr, &addrlen)) { + if(!extstrtoaddr(dtio->ip_str, &addr, &addrlen, UNBOUND_DNS_PORT)) { log_err("could not parse IP '%s'", dtio->ip_str); return 0; } diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 1cc450277..3bf889463 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -272,7 +272,7 @@ static int make_tcp_accept(char* ip) memset(&addr, 0, sizeof(addr)); len = (socklen_t)sizeof(addr); - if(!extstrtoaddr(ip, &addr, &len)) { + if(!extstrtoaddr(ip, &addr, &len, UNBOUND_DNS_PORT)) { log_err("could not parse IP '%s'", ip); return -1; } diff --git a/doc/example.conf.in b/doc/example.conf.in index 27281608f..2bd106448 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -17,7 +17,7 @@ server: # whitespace is not necessary, but looks cleaner. # verbosity number, 0 is least verbose. 1 is default. - verbosity: 1 + # verbosity: 1 # print statistics to the log (for every thread) every N seconds. # Set to "" or 0 to disable. Default is disabled. @@ -50,6 +50,7 @@ server: # interface: 192.0.2.154 # interface: 192.0.2.154@5003 # interface: 2001:DB8::5 + # interface: eth0@5003 # enable this feature to copy the source address of queries to reply. # Socket options are not supported on all platforms. experimental. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 3e6baaa92..23a0237e6 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -118,7 +118,7 @@ The number of threads to create to serve clients. Use 1 for no threading. .B port: \fI The port number, default 53, on which the server responds to queries. .TP -.B interface: \fI +.B interface: \fI Interface to use to connect to the network. This interface is listened to for queries from clients, and answers to clients are given from it. Can be given multiple times to work on several interfaces. If none are @@ -129,7 +129,7 @@ A port number can be specified with @port (without spaces between interface and port number), if not specified the default port (from \fBport\fR) is used. .TP -.B ip\-address: \fI +.B ip\-address: \fI Same as interface: (for ease of compatibility with nsd.conf). .TP .B interface\-automatic: \fI @@ -1823,9 +1823,11 @@ section for options. To setup the correct self\-signed certificates use the The option is used to enable remote control, default is "no". If turned off, the server does not listen for control commands. .TP 5 -.B control\-interface: \fI +.B control\-interface: \fI Give IPv4 or IPv6 addresses or local socket path to listen on for control commands. +If an interface name is used instead of an ip address, the list of ip addresses +on that interface are used. By default localhost (127.0.0.1 and ::1) is listened to. Use 0.0.0.0 and ::0 to listen to all interfaces. If you change this and permissions have been dropped, you must restart diff --git a/iterator/iter_hints.c b/iterator/iter_hints.c index 9b1a200bb..a60d9a6b1 100644 --- a/iterator/iter_hints.c +++ b/iterator/iter_hints.c @@ -100,7 +100,7 @@ ah(struct delegpt* dp, const char* sv, const char* ip) return 0; } if(!delegpt_add_ns_mlc(dp, dname, 0, NULL, UNBOUND_DNS_PORT) || - !extstrtoaddr(ip, &addr, &addrlen) || + !extstrtoaddr(ip, &addr, &addrlen, UNBOUND_DNS_PORT) || !delegpt_add_target_mlc(dp, dname, dname_len, &addr, addrlen, 0, 0)) { free(dname); diff --git a/libunbound/libunbound.c b/libunbound/libunbound.c index 038b7b927..ea5ef24bb 100644 --- a/libunbound/libunbound.c +++ b/libunbound/libunbound.c @@ -951,7 +951,7 @@ ub_ctx_set_fwd(struct ub_ctx* ctx, const char* addr) lock_basic_unlock(&ctx->cfglock); /* check syntax for addr */ - if(!extstrtoaddr(addr, &storage, &stlen)) { + if(!extstrtoaddr(addr, &storage, &stlen, UNBOUND_DNS_PORT)) { errno=EINVAL; return UB_SYNTAX; } @@ -1031,7 +1031,7 @@ int ub_ctx_set_stub(struct ub_ctx* ctx, const char* zone, const char* addr, if(addr) { struct sockaddr_storage storage; socklen_t stlen; - if(!extstrtoaddr(addr, &storage, &stlen)) { + if(!extstrtoaddr(addr, &storage, &stlen, UNBOUND_DNS_PORT)) { errno=EINVAL; return UB_SYNTAX; } diff --git a/services/authzone.c b/services/authzone.c index b9e0b11ef..6de1e4319 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -3699,7 +3699,7 @@ addr_matches_master(struct auth_master* master, struct sockaddr_storage* addr, /* compare address (but not port number, that is the destination * port of the master, the port number of the received notify is * allowed to by any port on that master) */ - if(extstrtoaddr(master->host, &a, &alen) && + if(extstrtoaddr(master->host, &a, &alen, UNBOUND_DNS_PORT) && sockaddr_cmp_addr(addr, addrlen, &a, alen)==0) { *fromhost = master; return 1; @@ -5381,7 +5381,7 @@ xfr_transfer_lookup_host(struct auth_xfer* xfr, struct module_env* env) struct edns_data edns; sldns_buffer* buf = env->scratch_buffer; if(!master) return 0; - if(extstrtoaddr(master->host, &addr, &addrlen)) { + if(extstrtoaddr(master->host, &addr, &addrlen, UNBOUND_DNS_PORT)) { /* not needed, host is in IP addr format */ return 0; } @@ -6572,7 +6572,7 @@ xfr_probe_lookup_host(struct auth_xfer* xfr, struct module_env* env) struct edns_data edns; sldns_buffer* buf = env->scratch_buffer; if(!master) return 0; - if(extstrtoaddr(master->host, &addr, &addrlen)) { + if(extstrtoaddr(master->host, &addr, &addrlen, UNBOUND_DNS_PORT)) { /* not needed, host is in IP addr format */ return 0; } diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 1263e0ead..fb2c53ba2 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -124,12 +124,12 @@ verbose_print_addr(struct addrinfo *addr) (void)strlcpy(buf, "(null)", sizeof(buf)); } buf[sizeof(buf)-1] = 0; - verbose(VERB_ALGO, "creating %s%s socket %s %d", + verbose(VERB_ALGO, "creating %s%s socket %s %d", addr->ai_socktype==SOCK_DGRAM?"udp": addr->ai_socktype==SOCK_STREAM?"tcp":"otherproto", addr->ai_family==AF_INET?"4": addr->ai_family==AF_INET6?"6": - "_otherfam", buf, + "_otherfam", buf, ntohs(((struct sockaddr_in*)addr->ai_addr)->sin_port)); } } @@ -140,7 +140,9 @@ verbose_print_unbound_socket(struct unbound_socket* ub_sock) if(verbosity >= VERB_ALGO) { log_info("listing of unbound_socket structure:"); verbose_print_addr(ub_sock->addr); - log_info("s is: %d, fam is: %s", ub_sock->s, ub_sock->fam == AF_INET?"AF_INET":"AF_INET6"); + log_info("s is: %d, fam is: %s, acl: %s", ub_sock->s, + ub_sock->fam == AF_INET?"AF_INET":"AF_INET6", + ub_sock->acl?"yes":"no"); } } @@ -1046,6 +1048,7 @@ make_sock(int stype, const char* ifname, const char* port, ub_sock->addr = res; ub_sock->s = s; ub_sock->fam = hints->ai_family; + ub_sock->acl = NULL; return s; } @@ -1193,6 +1196,7 @@ if_is_ssl(const char* ifname, const char* port, int ssl_port, * @param hints: for getaddrinfo. family and flags have to be set by caller. * @param port: Port number to use (as string). * @param list: list of open ports, appended to, changed to point to list head. + * @param acl_interface: acl list with options for the interface. * @param rcv: receive buffer size for UDP * @param snd: send buffer size for UDP * @param ssl_port: ssl service port number @@ -1210,9 +1214,9 @@ if_is_ssl(const char* ifname, const char* port, int ssl_port, * @return: returns false on error. */ static int -ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, +ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, struct addrinfo *hints, const char* port, struct listen_port** list, - size_t rcv, size_t snd, int ssl_port, + struct acl_list* acl_interface, size_t rcv, size_t snd, int ssl_port, struct config_strlist* tls_additional_port, int https_port, int* reuseport, int transparent, int tcp_mss, int freebind, int http2_nodelay, int use_systemd, int dnscrypt_port, int dscp) @@ -1221,8 +1225,9 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, int is_https = if_is_https(ifname, port, https_port); int nodelay = is_https && http2_nodelay; struct unbound_socket* ub_sock; + struct acl_addr* acl_node; #ifdef USE_DNSCRYPT - int is_dnscrypt = ((strchr(ifname, '@') && + int is_dnscrypt = ((strchr(ifname, '@') && atoi(strchr(ifname, '@')+1) == dnscrypt_port) || (!strchr(ifname, '@') && atoi(port) == dnscrypt_port)); #else @@ -1235,9 +1240,10 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, if(do_auto) { ub_sock = calloc(1, sizeof(struct unbound_socket)); + acl_node = NULL; if(!ub_sock) return 0; - if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, + if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, &noip6, rcv, snd, reuseport, transparent, tcp_mss, nodelay, freebind, use_systemd, dscp, ub_sock)) == -1) { freeaddrinfo(ub_sock->addr); @@ -1255,19 +1261,29 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, free(ub_sock); return 0; } - if(!port_insert(list, s, - is_dnscrypt?listen_type_udpancil_dnscrypt:listen_type_udpancil, ub_sock)) { + if(!port_insert(list, s, is_dnscrypt + ?listen_type_udpancil_dnscrypt:listen_type_udpancil, + ub_sock)) { sock_close(s); freeaddrinfo(ub_sock->addr); free(ub_sock); return 0; } + if(!(acl_node = acl_interface_insert(acl_interface, ifname, + "refuse", ntohs(((struct sockaddr_in*)ub_sock->addr->ai_addr)->sin_port)))) { + sock_close(s); + freeaddrinfo(ub_sock->addr); + free(ub_sock); + return 0; + } + ub_sock->acl = acl_node; } else if(do_udp) { ub_sock = calloc(1, sizeof(struct unbound_socket)); + acl_node = NULL; if(!ub_sock) return 0; /* regular udp socket */ - if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, + if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, &noip6, rcv, snd, reuseport, transparent, tcp_mss, nodelay, freebind, use_systemd, dscp, ub_sock)) == -1) { freeaddrinfo(ub_sock->addr); @@ -1278,19 +1294,28 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, } return 0; } - if(!port_insert(list, s, - is_dnscrypt?listen_type_udp_dnscrypt:listen_type_udp, ub_sock)) { + if(!port_insert(list, s, is_dnscrypt + ?listen_type_udp_dnscrypt:listen_type_udp, ub_sock)) { sock_close(s); freeaddrinfo(ub_sock->addr); free(ub_sock); return 0; } + if(!(acl_node = acl_interface_insert(acl_interface, ifname, + "refuse", ntohs(((struct sockaddr_in*)ub_sock->addr->ai_addr)->sin_port)))) { + sock_close(s); + freeaddrinfo(ub_sock->addr); + free(ub_sock); + return 0; + } + ub_sock->acl = acl_node; } if(do_tcp) { int is_ssl = if_is_ssl(ifname, port, ssl_port, tls_additional_port); enum listen_type port_type; ub_sock = calloc(1, sizeof(struct unbound_socket)); + acl_node = NULL; if(!ub_sock) return 0; if(is_ssl) @@ -1301,7 +1326,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, port_type = listen_type_tcp_dnscrypt; else port_type = listen_type_tcp; - if((s = make_sock_port(SOCK_STREAM, ifname, port, hints, 1, + if((s = make_sock_port(SOCK_STREAM, ifname, port, hints, 1, &noip6, 0, 0, reuseport, transparent, tcp_mss, nodelay, freebind, use_systemd, dscp, ub_sock)) == -1) { freeaddrinfo(ub_sock->addr); @@ -1320,6 +1345,14 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, free(ub_sock); return 0; } + if(!(acl_node = acl_interface_insert(acl_interface, ifname, + "refuse", ntohs(((struct sockaddr_in*)ub_sock->addr->ai_addr)->sin_port)))) { + sock_close(s); + freeaddrinfo(ub_sock->addr); + free(ub_sock); + return 0; + } + ub_sock->acl = acl_node; } return 1; } @@ -1716,9 +1749,9 @@ int resolve_interface_names(char** ifs, int num_ifs, #endif /* HAVE_GETIFADDRS */ } -struct listen_port* -listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, - int* reuseport) +struct listen_port* +listening_ports_open(struct config_file* cfg, struct acl_list* acl_interface, + char** ifs, int num_ifs, int* reuseport) { struct listen_port* list = NULL; struct addrinfo hints; @@ -1807,9 +1840,9 @@ listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, } if(do_ip6) { hints.ai_family = AF_INET6; - if(!ports_create_if(do_auto?"::0":"::1", - do_auto, cfg->do_udp, do_tcp, - &hints, portbuf, &list, + if(!ports_create_if(do_auto?"::0":"::1", + do_auto, cfg->do_udp, do_tcp, + &hints, portbuf, &list, acl_interface, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, cfg->https_port, reuseport, cfg->ip_transparent, @@ -1822,9 +1855,9 @@ listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, } if(do_ip4) { hints.ai_family = AF_INET; - if(!ports_create_if(do_auto?"0.0.0.0":"127.0.0.1", - do_auto, cfg->do_udp, do_tcp, - &hints, portbuf, &list, + if(!ports_create_if(do_auto?"0.0.0.0":"127.0.0.1", + do_auto, cfg->do_udp, do_tcp, + &hints, portbuf, &list, acl_interface, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, cfg->https_port, reuseport, cfg->ip_transparent, @@ -1841,7 +1874,7 @@ listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, continue; hints.ai_family = AF_INET6; if(!ports_create_if(ifs[i], 0, cfg->do_udp, - do_tcp, &hints, portbuf, &list, + do_tcp, &hints, portbuf, &list, acl_interface, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, cfg->https_port, reuseport, cfg->ip_transparent, @@ -1856,7 +1889,7 @@ listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, continue; hints.ai_family = AF_INET; if(!ports_create_if(ifs[i], 0, cfg->do_udp, - do_tcp, &hints, portbuf, &list, + do_tcp, &hints, portbuf, &list, acl_interface, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, cfg->https_port, reuseport, cfg->ip_transparent, diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index 0e63236bc..70b3da0f0 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -43,6 +43,7 @@ #define LISTEN_DNSPORT_H #include "util/netevent.h" +#include "daemon/acl_list.h" #ifdef HAVE_NGHTTP2_NGHTTP2_H #include #endif @@ -107,11 +108,13 @@ enum listen_type { */ struct unbound_socket { /** socket-address structure */ - struct addrinfo * addr; + struct addrinfo* addr; /** socket descriptor returned by socket() syscall */ - int s; + int s; /** address family (AF_INET/IF_INET6) */ - int fam; + int fam; + /** ACL on the socket (listening interface) */ + struct acl_addr* acl; }; /** @@ -135,6 +138,7 @@ struct listen_port { * interfaces for IP4 and/or IP6, for UDP and/or TCP. * On the given port number. It creates the sockets. * @param cfg: settings on what ports to open. + * @param acl_interface: acl list for interface options. * @param ifs: interfaces to open, array of IP addresses, "ip[@port]". * @param num_ifs: length of ifs. * @param reuseport: set to true if you want reuseport, or NULL to not have it, @@ -143,6 +147,7 @@ struct listen_port { * @return: linked list of ports or NULL on error. */ struct listen_port* listening_ports_open(struct config_file* cfg, + struct acl_list* acl_interface, char** ifs, int num_ifs, int* reuseport); /** diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index c25182bd2..39b507499 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -316,7 +316,7 @@ warn_hosts(const char* typ, struct config_stub* list) struct config_strlist* h; for(s=list; s; s=s->next) { for(h=s->hosts; h; h=h->next) { - if(extstrtoaddr(h->str, &a, &alen)) { + if(extstrtoaddr(h->str, &a, &alen, UNBOUND_DNS_PORT)) { fprintf(stderr, "unbound-checkconf: warning:" " %s %s: \"%s\" is an IP%s address, " "and when looked up as a host name " @@ -361,7 +361,7 @@ interfacechecks(struct config_file* cfg) } /* search for duplicates in the returned addresses */ for(j=0; jifs[i], resif[i][j]) != 0) fatal_exit("cannot parse interface address '%s' from the interface specified as '%s'", resif[i][j], cfg->ifs[i]); diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index d473702c4..34fb801bb 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -601,7 +601,7 @@ contact_server(const char* svr, struct config_file* cfg, int statuscmd) struct sockaddr_storage addr2; socklen_t addrlen2; if(extstrtoaddr(cfg->control_ifs.first->str, &addr2, - &addrlen2)) { + &addrlen2, UNBOUND_DNS_PORT)) { svr = cfg->control_ifs.first->str; } else { if(!resolve_interface_names(NULL, 0, @@ -629,7 +629,7 @@ contact_server(const char* svr, struct config_file* cfg, int statuscmd) svr = "::1"; } if(strchr(svr, '@')) { - if(!extstrtoaddr(svr, &addr, &addrlen)) + if(!extstrtoaddr(svr, &addr, &addrlen, UNBOUND_DNS_PORT)) fatal_exit("could not parse IP@port: %s", svr); #ifdef HAVE_SYS_UN_H } else if(svr[0] == '/') { diff --git a/testcode/delayer.c b/testcode/delayer.c index e915961f5..647a4e24c 100644 --- a/testcode/delayer.c +++ b/testcode/delayer.c @@ -974,7 +974,7 @@ service(const char* bind_str, int bindport, const char* serv_str, dl_tv_add(&reuse, &delay); if(reuse.tv_sec == 0) reuse.tv_sec = 1; - if(!extstrtoaddr(serv_str, &srv_addr, &srv_len)) { + if(!extstrtoaddr(serv_str, &srv_addr, &srv_len, UNBOUND_DNS_PORT)) { printf("cannot parse forward address: %s\n", serv_str); exit(1); } diff --git a/testcode/fake_event.c b/testcode/fake_event.c index be06a4721..a50e2f3b1 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1341,6 +1341,7 @@ int resolve_interface_names(char** ATTR_UNUSED(ifs), int ATTR_UNUSED(num_ifs), } struct listen_port* listening_ports_open(struct config_file* ATTR_UNUSED(cfg), + struct acl_list* ATTR_UNUSED(acl_interface), char** ATTR_UNUSED(ifs), int ATTR_UNUSED(num_ifs), int* ATTR_UNUSED(reuseport)) { diff --git a/testcode/perf.c b/testcode/perf.c index 55d6483c7..7fb524e22 100644 --- a/testcode/perf.c +++ b/testcode/perf.c @@ -618,7 +618,7 @@ int main(int argc, char* argv[]) printf("error: pass server IP address on commandline.\n"); usage(nm); } - if(!extstrtoaddr(argv[0], &info.dest, &info.destlen)) { + if(!extstrtoaddr(argv[0], &info.dest, &info.destlen, UNBOUND_DNS_PORT)) { printf("Could not parse ip: %s\n", argv[0]); exit(1); } diff --git a/testcode/replay.c b/testcode/replay.c index 2487c146f..43101d6ac 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -179,7 +179,8 @@ replay_range_read(char* remain, FILE* in, const char* name, while(isspace((unsigned char)*parse)) parse++; strip_end_white(parse); - if(!extstrtoaddr(parse, &rng->addr, &rng->addrlen)) { + if(!extstrtoaddr(parse, &rng->addr, &rng->addrlen, + UNBOUND_DNS_PORT)) { log_err("Line %d: could not read ADDRESS: %s", pstate->lineno, parse); free(rng); @@ -287,7 +288,8 @@ replay_moment_read(char* remain, FILE* in, const char* name, } else if(parse_keyword(&remain, "QUERY")) { mom->evt_type = repevt_front_query; readentry = 1; - if(!extstrtoaddr("127.0.0.1", &mom->addr, &mom->addrlen)) + if(!extstrtoaddr("127.0.0.1", &mom->addr, &mom->addrlen, + UNBOUND_DNS_PORT)) fatal_exit("internal error"); } else if(parse_keyword(&remain, "CHECK_ANSWER")) { mom->evt_type = repevt_front_reply; @@ -354,7 +356,7 @@ replay_moment_read(char* remain, FILE* in, const char* name, m++; while(isspace((unsigned char)*m)) m++; - if(!extstrtoaddr(s, &mom->addr, &mom->addrlen)) + if(!extstrtoaddr(s, &mom->addr, &mom->addrlen, UNBOUND_DNS_PORT)) fatal_exit("bad infra_rtt address %s", s); strip_end_white(m); mom->variable = strdup(remain); @@ -372,7 +374,8 @@ replay_moment_read(char* remain, FILE* in, const char* name, while(isspace((unsigned char)*remain)) remain++; strip_end_white(remain); - if(!extstrtoaddr(remain, &mom->addr, &mom->addrlen)) { + if(!extstrtoaddr(remain, &mom->addr, &mom->addrlen, + UNBOUND_DNS_PORT)) { log_err("line %d: could not parse ADDRESS: %s", pstate->lineno, remain); free(mom); diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index ecc83c1cf..0761e9d18 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -89,7 +89,7 @@ open_svr(const char* svr, int udp) int fd = -1; /* svr can be ip@port */ memset(&addr, 0, sizeof(addr)); - if(!extstrtoaddr(svr, &addr, &addrlen)) { + if(!extstrtoaddr(svr, &addr, &addrlen, UNBOUND_DNS_PORT)) { printf("fatal: bad server specs '%s'\n", svr); exit(1); } diff --git a/util/config_file.c b/util/config_file.c index 9721ca696..158169c42 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -822,7 +822,7 @@ int config_set_option(struct config_file* cfg, const char* opt, * stub-ssl-upstream, forward-zone, auth-zone * name, forward-addr, forward-host, * ratelimit-for-domain, ratelimit-below-domain, - * local-zone-tag, access-control-view, + * local-zone-tag, access-control-view, interface-*, * send-client-subnet, client-subnet-always-forward, * max-client-subnet-ipv4, max-client-subnet-ipv6, * min-client-subnet-ipv4, min-client-subnet-ipv6, @@ -1252,6 +1252,11 @@ 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, "interface-action", interface_actions) + else O_LTG(opt, "interface-tag", interface_tags) + else O_LS3(opt, "interface-tag-action", interface_tag_actions) + else O_LS3(opt, "interface-tag-data", interface_tag_datas) + else O_LS2(opt, "interface-view", interface_view) else O_YNO(opt, "pad-responses", pad_responses) else O_DEC(opt, "pad-responses-block-size", pad_responses_block_size) else O_YNO(opt, "pad-queries", pad_queries) @@ -1607,10 +1612,16 @@ config_delete(struct config_file* cfg) config_deltrplstrlist(cfg->local_zone_overrides); config_del_strarray(cfg->tagname, cfg->num_tags); config_del_strbytelist(cfg->local_zone_tags); - config_del_strbytelist(cfg->acl_tags); config_del_strbytelist(cfg->respip_tags); + config_deldblstrlist(cfg->acl_view); + config_del_strbytelist(cfg->acl_tags); config_deltrplstrlist(cfg->acl_tag_actions); config_deltrplstrlist(cfg->acl_tag_datas); + config_deldblstrlist(cfg->interface_actions); + config_deldblstrlist(cfg->interface_view); + config_del_strbytelist(cfg->interface_tags); + config_deltrplstrlist(cfg->interface_tag_actions); + config_deltrplstrlist(cfg->interface_tag_datas); config_delstrlist(cfg->control_ifs.first); free(cfg->server_key_file); free(cfg->server_cert_file); diff --git a/util/config_file.h b/util/config_file.h index 90b4db834..bbc6d4ac1 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -461,6 +461,16 @@ struct config_file { struct config_str3list* acl_tag_datas; /** list of aclname, view*/ struct config_str2list* acl_view; + /** list of interface action entries, linked list */ + struct config_str2list* interface_actions; + /** list of interface, tagbitlist */ + struct config_strbytelist* interface_tags; + /** list of interface, tagname, localzonetype */ + struct config_str3list* interface_tag_actions; + /** list of interface, tagname, redirectdata */ + struct config_str3list* interface_tag_datas; + /** list of interface, view*/ + struct config_str2list* interface_view; /** list of IP-netblock, tagbitlist */ struct config_strbytelist* respip_tags; /** list of response-driven access control entries, linked list */ diff --git a/util/configlexer.c b/util/configlexer.c index eeac5ba2f..0323464e3 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 363 -#define YY_END_OF_BUFFER 364 +#define YY_NUM_RULES 368 +#define YY_END_OF_BUFFER 369 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,404 +363,407 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3600] = +static const flex_int16_t yy_accept[3628] = { 0, - 1, 1, 337, 337, 341, 341, 345, 345, 349, 349, - 1, 1, 353, 353, 357, 357, 364, 361, 1, 335, - 335, 362, 2, 362, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 337, 338, 338, 339, - 362, 341, 342, 342, 343, 362, 348, 345, 346, 346, - 347, 362, 349, 350, 350, 351, 362, 360, 336, 2, - 340, 362, 360, 356, 353, 354, 354, 355, 362, 357, - 358, 358, 359, 362, 361, 0, 1, 2, 2, 2, - 2, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 1, 1, 342, 342, 346, 346, 350, 350, 354, 354, + 1, 1, 358, 358, 362, 362, 369, 366, 1, 340, + 340, 367, 2, 367, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 342, 343, 343, 344, + 367, 346, 347, 347, 348, 367, 353, 350, 351, 351, + 352, 367, 354, 355, 355, 356, 367, 365, 341, 2, + 345, 367, 365, 361, 358, 359, 359, 360, 367, 362, + 363, 363, 364, 367, 366, 0, 1, 2, 2, 2, + 2, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 337, - 0, 341, 0, 348, 0, 345, 349, 0, 360, 0, - 2, 2, 360, 356, 0, 353, 357, 0, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 342, + 0, 346, 0, 353, 0, 350, 354, 0, 365, 0, + 2, 2, 365, 361, 0, 358, 362, 0, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 360, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 365, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 334, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 133, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 143, 361, 361, 361, 361, 361, 361, - 361, 360, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 339, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 133, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 143, 366, 366, 366, 366, 366, 366, + 366, 365, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 115, 361, 333, 361, 361, 361, 361, 361, - 361, 361, 361, 8, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 115, 366, 338, 366, 366, 366, 366, 366, + 366, 366, 366, 8, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 134, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 148, 361, - 361, 360, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 134, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 148, 366, + 366, 365, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 326, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 331, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 360, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 69, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 255, 361, 14, 15, 361, 19, 18, - 361, 361, 239, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 365, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 69, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 260, 366, 14, 15, 366, 19, 18, + 366, 366, 240, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 141, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 237, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 3, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 141, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 238, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 3, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 360, 361, 361, 361, 361, - 361, 361, 361, 320, 361, 361, 319, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 365, 366, 366, 366, 366, + 366, 366, 366, 325, 366, 366, 324, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 344, 361, 361, - 361, 361, 361, 361, 361, 361, 68, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 72, 361, 289, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 327, 328, 361, 361, 361, - 361, 361, 361, 361, 361, 73, 361, 361, 142, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 137, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 226, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 349, 366, 366, + 366, 366, 366, 366, 366, 366, 68, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 72, 366, 294, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 332, 333, 366, 366, 366, + 366, 366, 366, 366, 366, 73, 366, 366, 142, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 137, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 227, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 21, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 168, 361, 361, 361, 361, 361, 360, 344, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 113, - 361, 361, 361, 361, 361, 361, 361, 297, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 195, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 21, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 169, 366, 366, 366, 366, 366, 365, 349, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 113, + 366, 366, 366, 366, 366, 366, 366, 302, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 196, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 167, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 112, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 168, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 112, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 35, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 36, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 70, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 140, 361, 361, 361, - 360, 361, 361, 361, 361, 361, 132, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 71, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 259, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 35, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 36, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 70, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 140, 366, 366, 366, + 365, 366, 366, 366, 366, 366, 132, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 71, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 264, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 196, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 58, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 197, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 58, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 277, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 63, 361, 64, - 361, 361, 361, 361, 361, 116, 361, 117, 361, 361, - 361, 361, 361, 114, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 7, 361, 361, - 361, 361, 360, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 282, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 63, 366, 64, + 366, 366, 366, 366, 366, 116, 366, 117, 366, 366, + 366, 366, 366, 114, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 7, 366, 366, + 366, 366, 365, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 248, 361, 361, 361, 361, 171, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 260, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 49, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 59, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 218, - 361, 217, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 249, 366, 366, 366, 366, 172, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 265, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 49, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 59, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 219, 366, 218, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 16, 17, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 74, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 225, 361, 361, 361, 361, 361, 361, 119, 361, - 118, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 209, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 149, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 16, 17, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 74, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 226, 366, 366, 366, 366, 366, 366, + 119, 366, 118, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 210, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 149, - 361, 360, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 107, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 95, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 238, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 100, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 67, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 365, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 107, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 95, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 239, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 100, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 67, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 212, 213, 361, 361, 361, 291, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 6, 361, 361, 361, 361, 361, 361, 361, 310, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 295, 361, - 361, 361, 361, 361, 361, 361, 321, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 46, 361, 361, 361, 361, 361, 48, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 213, 214, 366, + 366, 366, 296, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 6, 366, 366, 366, + 366, 366, 366, 366, 315, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 300, 366, 366, 366, 366, 366, 366, + 366, 326, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 46, 366, 366, 366, - 361, 96, 361, 361, 361, 361, 361, 56, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 360, - 361, 205, 361, 361, 361, 144, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 230, 361, 206, 361, - 361, 361, 245, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 57, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 146, 125, 361, 126, 361, - 361, 361, 361, 124, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 164, 361, 361, 54, 361, 361, 361, + 366, 366, 48, 366, 366, 366, 96, 366, 366, 366, + 366, 366, 56, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 365, 366, 206, 366, 366, 366, + 144, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 231, 366, 207, 366, 366, 366, 246, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 57, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 146, 125, 366, 126, 366, 366, 366, 366, 124, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 165, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 276, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 207, 361, 361, 361, 361, 361, - 210, 361, 216, 361, 361, 361, 361, 361, 361, 244, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 111, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 138, 361, 361, - 361, 361, 361, 361, 361, 361, 65, 361, 361, 361, - 29, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 54, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 281, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 208, 366, 366, 366, 366, 366, 211, 366, + 217, 366, 366, 366, 366, 366, 366, 245, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 111, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 138, 366, 366, 366, 366, + 366, 366, 366, 366, 65, 366, 366, 366, 29, 366, - 361, 361, 361, 20, 361, 361, 361, 361, 361, 361, - 361, 30, 39, 361, 176, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 203, - 361, 361, 360, 361, 361, 361, 361, 361, 361, 82, - 84, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 299, 361, 361, 361, 361, 256, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 127, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 163, 361, 50, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 20, 366, 366, 366, 366, 366, 366, 366, 30, + 39, 366, 177, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 204, 366, 366, + 365, 366, 366, 366, 366, 366, 366, 82, 84, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 304, 366, 366, 366, 366, 261, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 127, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 314, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 170, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 308, 361, 361, 361, - 236, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 324, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 188, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 120, 361, 361, 361, 361, 361, + 366, 366, 366, 164, 366, 50, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 255, 366, 366, 366, + 366, 366, 366, 366, 319, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 171, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 313, 366, + 366, 366, 237, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 329, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 189, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 183, 361, - 197, 361, 361, 361, 361, 361, 361, 361, 360, 361, - 152, 361, 361, 361, 361, 361, 106, 361, 361, 361, - 361, 228, 361, 361, 361, 361, 361, 361, 246, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 268, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 145, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 187, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 120, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 184, 366, 198, 366, 366, 366, 366, 366, 366, 366, + 365, 366, 152, 366, 366, 366, 366, 366, 106, 366, + 366, 366, 366, 229, 366, 366, 366, 366, 366, 366, + 247, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 273, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 145, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 85, 361, 86, 361, 361, 361, 361, - 361, 361, 66, 317, 361, 361, 361, 361, 361, 94, - 198, 361, 219, 361, 249, 361, 361, 211, 292, 361, - 361, 361, 361, 361, 361, 78, 361, 200, 361, 361, - 361, 361, 361, 361, 9, 361, 361, 361, 361, 361, - 110, 361, 361, 361, 361, 361, 281, 361, 361, 361, - 361, 227, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 188, 366, 366, + 366, 366, 366, 366, 366, 85, 366, 86, 366, 366, + 366, 366, 366, 258, 366, 366, 366, 366, 66, 322, + 366, 366, 366, 366, 366, 94, 199, 366, 220, 366, + 250, 366, 366, 212, 297, 366, 366, 366, 366, 366, + 366, 78, 366, 201, 366, 366, 366, 366, 366, 366, + 9, 366, 366, 366, 366, 366, 110, 366, 366, 366, + 366, 366, 286, 366, 366, 366, 366, 228, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 360, 361, 361, 361, - 361, 186, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 172, 361, 298, 361, 361, 361, 361, 361, - 267, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 240, 361, 361, 361, 361, 361, 361, 290, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 169, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 318, 361, 199, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 365, 366, 366, 366, 366, 187, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 173, 366, + 303, 366, 366, 366, 366, 366, 272, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 241, 366, + 366, 366, 366, 366, 366, 295, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 170, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 77, 79, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 109, 361, - 361, 361, 361, 361, 279, 361, 361, 361, 361, 294, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 232, 37, 31, 33, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 38, - 361, 32, 34, 361, 40, 361, 361, 361, 361, 361, - 361, 361, 105, 361, 182, 361, 361, 361, 361, 361, - 361, 361, 360, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 234, 231, 361, 361, 361, 361, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 323, 366, 200, 366, 366, 366, + 366, 366, 366, 366, 366, 77, 79, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 109, 366, 366, + 366, 366, 366, 284, 366, 366, 366, 366, 299, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 233, 37, 31, 33, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 38, 366, + 32, 34, 366, 40, 366, 366, 366, 366, 366, 366, + 366, 105, 366, 183, 366, 366, 366, 366, 366, 366, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 76, 361, 361, 361, 147, - 361, 128, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 165, 51, 361, 361, 361, 352, 13, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 312, 361, 315, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 12, 361, 361, 22, - 361, 361, 361, 361, 361, 361, 285, 361, 361, 361, - 361, 296, 361, 361, 361, 361, 80, 361, 242, 361, - 361, 361, 361, 361, 233, 361, 361, 75, 361, 361, + 366, 365, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 235, 232, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 76, 366, 366, 366, 147, 366, + 128, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 166, 51, 366, 366, 366, 357, 13, 366, 366, + 366, 366, 366, 366, 366, 153, 366, 366, 366, 366, + 366, 366, 366, 317, 366, 320, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 12, 366, + 366, 22, 366, 366, 366, 366, 366, 366, 290, 366, - 361, 361, 361, 361, 23, 361, 361, 47, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 181, 180, 361, 361, 352, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 235, 229, 361, 247, 361, 361, - 300, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 193, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 87, 361, 361, - 361, 361, 361, 280, 361, 361, 361, 361, 215, 361, - 361, 361, 361, 361, 241, 361, 361, 361, 361, 361, + 366, 366, 366, 301, 366, 366, 366, 366, 80, 366, + 243, 366, 366, 366, 366, 366, 234, 366, 366, 75, + 366, 366, 366, 366, 366, 366, 23, 366, 366, 47, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 182, 181, 366, 366, 357, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 236, 230, 366, 248, + 366, 366, 305, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 194, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 87, - 361, 361, 361, 361, 287, 361, 361, 361, 322, 323, - 178, 361, 361, 361, 81, 361, 361, 361, 361, 189, - 361, 361, 361, 121, 123, 122, 361, 361, 361, 25, - 361, 361, 173, 361, 175, 361, 220, 361, 361, 361, - 361, 179, 361, 361, 361, 361, 250, 361, 361, 361, - 361, 361, 361, 361, 154, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 258, 361, 361, - 361, 361, 361, 361, 361, 331, 361, 27, 361, 293, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 92, 221, 361, + 366, 366, 366, 366, 366, 366, 366, 285, 366, 366, + 366, 366, 216, 366, 366, 366, 366, 366, 242, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 292, 366, + 366, 366, 327, 328, 179, 366, 366, 366, 81, 366, + 366, 366, 366, 190, 366, 366, 366, 121, 123, 122, + 366, 366, 366, 25, 366, 366, 174, 366, 176, 366, + 221, 366, 366, 366, 366, 180, 366, 366, 366, 366, + 251, 366, 366, 366, 366, 366, 366, 366, 155, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 263, 366, 366, 366, 366, 366, 366, 366, 336, - 361, 361, 278, 361, 316, 361, 214, 361, 361, 361, - 361, 361, 288, 60, 361, 361, 361, 361, 361, 361, - 4, 361, 361, 361, 361, 136, 361, 153, 361, 361, - 361, 194, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 253, 41, 42, 361, 361, 361, 361, 361, 361, 361, - 301, 361, 361, 361, 361, 361, 361, 361, 266, 361, - 361, 361, 361, 361, 361, 361, 361, 224, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 91, 90, 361, 361, 61, 361, 284, 361, + 366, 27, 366, 298, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 92, 222, 366, 366, 257, 366, 366, 283, 366, + 321, 366, 215, 366, 366, 366, 366, 366, 293, 60, + 366, 366, 366, 366, 366, 366, 4, 366, 366, 366, + 366, 136, 366, 154, 366, 366, 366, 195, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 254, 41, 42, 366, + 366, 366, 366, 366, 366, 366, 306, 366, 366, 366, + 366, 366, 366, 366, 271, 366, 366, 366, 366, 366, - 254, 361, 361, 361, 361, 361, 11, 361, 361, 361, - 361, 361, 361, 361, 361, 135, 361, 361, 361, 361, - 361, 222, 97, 361, 361, 44, 361, 361, 361, 361, - 361, 361, 361, 361, 185, 361, 361, 361, 361, 361, - 361, 361, 156, 361, 361, 361, 361, 257, 361, 361, - 361, 361, 361, 265, 361, 361, 361, 361, 150, 361, - 361, 361, 129, 131, 130, 361, 361, 361, 99, 103, - 98, 166, 361, 361, 361, 361, 88, 361, 286, 361, - 361, 361, 361, 361, 361, 10, 361, 361, 361, 361, - 361, 282, 325, 361, 361, 361, 361, 361, 361, 330, + 366, 366, 366, 225, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 91, 90, + 366, 366, 61, 366, 366, 289, 366, 259, 366, 366, + 366, 366, 366, 11, 366, 366, 366, 366, 366, 366, + 366, 366, 135, 366, 366, 366, 366, 366, 223, 97, + 366, 366, 44, 366, 366, 366, 366, 366, 366, 366, + 366, 186, 366, 366, 366, 366, 366, 366, 366, 157, + 366, 366, 366, 366, 262, 366, 366, 366, 366, 366, + 270, 366, 366, 366, 366, 150, 366, 366, 366, 129, + 131, 130, 366, 366, 366, 99, 103, 98, 167, 366, - 43, 361, 361, 361, 361, 361, 184, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 104, 102, 361, 55, 361, 361, 89, 361, - 313, 361, 361, 361, 361, 24, 361, 361, 361, 361, - 361, 208, 361, 361, 361, 361, 361, 361, 223, 361, - 361, 361, 361, 361, 361, 361, 361, 204, 361, 361, - 174, 83, 361, 361, 361, 361, 361, 302, 361, 361, - 361, 361, 361, 361, 361, 262, 361, 361, 261, 151, - 361, 361, 101, 52, 361, 361, 157, 158, 161, 162, + 366, 366, 366, 88, 366, 256, 291, 366, 366, 366, + 366, 366, 366, 10, 366, 366, 366, 366, 366, 287, + 330, 366, 366, 366, 366, 366, 366, 335, 43, 366, + 366, 366, 366, 366, 185, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 104, 102, 366, 55, 366, 366, 89, 366, 318, 366, + 366, 366, 366, 24, 366, 366, 366, 366, 366, 209, + 366, 366, 366, 366, 366, 366, 224, 366, 366, 366, + 366, 366, 366, 366, 366, 205, 366, 366, 175, 83, - 159, 160, 93, 311, 361, 361, 283, 139, 361, 361, - 361, 26, 361, 177, 361, 361, 361, 361, 202, 361, - 252, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 191, 190, 45, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 309, 361, - 361, 361, 361, 108, 361, 251, 361, 275, 306, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 332, 361, 53, 62, 5, 361, 361, 243, 361, 361, + 366, 366, 366, 366, 366, 307, 366, 366, 366, 366, + 366, 366, 366, 267, 366, 366, 266, 151, 366, 366, + 101, 52, 366, 366, 158, 159, 162, 163, 160, 161, + 93, 316, 366, 366, 288, 139, 366, 366, 366, 26, + 366, 178, 366, 366, 366, 366, 203, 366, 253, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 192, 191, 45, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 314, 366, 366, 366, - 307, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 263, 28, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 264, 361, 361, 361, 155, 361, - 361, 361, 361, 361, 361, 361, 361, 192, 361, 201, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 303, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 329, 361, 361, - 271, 361, 361, 361, 361, 361, 304, 361, 361, 361, - 361, 361, 361, 305, 361, 361, 361, 269, 361, 272, - 273, 361, 361, 361, 361, 361, 270, 274, 0 + 366, 108, 366, 252, 366, 280, 311, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 337, 366, + 53, 62, 5, 366, 366, 244, 366, 366, 312, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 268, 28, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 269, 366, 366, 366, 156, 366, 366, 366, + 366, 366, 366, 366, 366, 193, 366, 202, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 308, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 334, 366, 366, 276, 366, + 366, 366, 366, 366, 309, 366, 366, 366, 366, 366, + 366, 310, 366, 366, 366, 274, 366, 277, 278, 366, + 366, 366, 366, 366, 275, 279, 0 } ; static const YY_CHAR yy_ec[256] = @@ -803,17 +806,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[3618] = +static const flex_int16_t yy_base[3646] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 4341, 4181, 81, 7019, - 7019, 7019, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 4833, 4680, 81, 7073, + 7073, 7073, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 3534, 7019, 7019, 7019, - 107, 3162, 7019, 7019, 7019, 154, 3102, 2669, 7019, 7019, - 7019, 245, 2592, 7019, 7019, 7019, 163, 2519, 7019, 249, - 7019, 253, 148, 2320, 2287, 7019, 7019, 7019, 257, 2134, - 7019, 7019, 7019, 233, 1825, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 4078, 7073, 7073, 7073, + 107, 3686, 7073, 7073, 7073, 154, 3641, 2669, 7073, 7073, + 7073, 245, 2592, 7073, 7073, 7073, 163, 2519, 7073, 249, + 7073, 253, 148, 2320, 2287, 7073, 7073, 7073, 257, 2134, + 7073, 7073, 7073, 233, 1825, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -838,15 +841,15 @@ static const flex_int16_t yy_base[3618] = 660, 663, 670, 669, 671, 672, 673, 675, 652, 682, 678, 686, 679, 692, 691, 693, 695, 697, 699, 698, - 700, 702, 703, 705, 7019, 716, 706, 721, 717, 728, + 700, 702, 703, 705, 7073, 716, 706, 721, 717, 728, 723, 707, 725, 732, 735, 718, 731, 734, 733, 736, 739, 740, 741, 743, 747, 750, 748, 753, 752, 763, 767, 759, 774, 760, 761, 772, 782, 775, 768, 776, 795, 790, 796, 802, 804, 805, 807, 808, 806, 809, 811, 812, 813, 827, 816, 829, 823, 819, 830, 832, - 839, 840, 7019, 836, 837, 851, 844, 853, 857, 854, + 839, 840, 7073, 836, 837, 851, 844, 853, 857, 854, 863, 846, 869, 867, 872, 873, 885, 907, 875, 880, - 874, 876, 890, 7019, 893, 897, 931, 877, 900, 919, + 874, 876, 890, 7073, 893, 897, 931, 877, 900, 919, 914, 881, 905, 917, 916, 921, 935, 915, 922, 937, 954, 952, 936, 939, 938, 955, 949, 967, 962, 965, @@ -856,15 +859,15 @@ static const flex_int16_t yy_base[3618] = 1016, 1038, 1036, 1045, 1049, 1041, 1051, 1053, 1056, 1057, 1058, 1059, 1069, 1064, 1065, 1067, 1070, 1072, 1073, 1078, 1076, 1079, 1081, 1083, 1084, 1087, 1092, 1094, 1098, 1085, - 1099, 1101, 7019, 1107, 7019, 1105, 1102, 1109, 1111, 1112, - 1113, 1114, 1115, 7019, 1117, 1121, 1116, 1124, 1125, 1122, + 1099, 1101, 7073, 1107, 7073, 1105, 1102, 1109, 1111, 1112, + 1113, 1114, 1115, 7073, 1117, 1121, 1116, 1124, 1125, 1122, 1146, 1142, 1129, 1141, 1145, 1144, 1150, 1151, 1159, 1154, 1161, 1162, 1155, 1163, 1157, 1166, 1128, 1167, 1170, 1171, - 1173, 1175, 1177, 1195, 7019, 1178, 1181, 1182, 1184, 1186, + 1173, 1175, 1177, 1195, 7073, 1178, 1181, 1182, 1184, 1186, 1199, 1191, 1206, 1208, 1212, 1218, 1200, 1183, 1226, 1222, 1224, 1225, 1229, 1230, 1232, 1234, 1235, 1238, 1239, 1241, - 1244, 1242, 1246, 1249, 1248, 1247, 1255, 1258, 7019, 1260, + 1244, 1242, 1246, 1249, 1248, 1247, 1255, 1258, 7073, 1260, 1263, 1271, 1278, 1262, 1265, 1273, 1276, 1279, 1277, 1281, 1283, 1282, 1286, 1289, 1288, 1299, 1291, 1304, 1300, 1302, 1301, 1306, 1308, 1311, 1307, 1309, 1328, 1317, 1319, 1332, @@ -873,7 +876,7 @@ static const flex_int16_t yy_base[3618] = 1364, 1366, 1370, 1372, 1374, 1375, 1380, 1379, 1377, 1381, 1392, 1390, 1388, 1397, 1394, 1403, 1399, 1391, 1406, 1410, - 1413, 1414, 7019, 1422, 1419, 1418, 1420, 1425, 1423, 1431, + 1413, 1414, 7073, 1422, 1419, 1418, 1420, 1425, 1423, 1431, 1432, 1433, 1434, 1437, 1435, 1438, 1443, 1444, 1445, 1439, 1447, 1452, 1454, 1455, 1456, 1465, 1472, 1471, 1473, 1457, 1467, 1476, 1477, 1479, 1486, 1483, 1491, 1484, 1489, 1492, @@ -886,21 +889,21 @@ static const flex_int16_t yy_base[3618] = 1599, 1595, 1606, 1614, 1608, 1596, 1616, 1617, 1619, 1620, 1621, 1625, 1623, 1628, 1632, 1626, 1629, 1637, 1635, 1641, 1643, 1644, 1645, 1586, 1655, 1646, 1656, 1657, 1660, 1662, - 1663, 1665, 1647, 1667, 1672, 1670, 1675, 1676, 7019, 1664, + 1663, 1665, 1647, 1667, 1672, 1670, 1675, 1676, 7073, 1664, 1688, 1677, 1686, 1684, 1687, 1689, 1698, 1691, 1693, 1695, - 1694, 1701, 1722, 7019, 1702, 7019, 7019, 848, 7019, 7019, - 1705, 1703, 7019, 1704, 1710, 1706, 1720, 1725, 1732, 1737, + 1694, 1701, 1722, 7073, 1702, 7073, 7073, 848, 7073, 7073, + 1705, 1703, 7073, 1704, 1710, 1706, 1720, 1725, 1732, 1737, 1728, 1730, 1735, 1723, 1746, 1750, 1745, 1753, 1755, 1756, 1759, 1747, 1760, 1761, 1767, 1770, 1772, 1773, 1708, 1783, 1778, 1788, 1779, 1790, 1791, 1796, 1781, 1797, 1800, 1803, 1804, 1793, 1806, 1807, 1809, 1811, 1813, 1808, 1815, 1817, - 1820, 1821, 1822, 1830, 1826, 1835, 1842, 7019, 1832, 1845, + 1820, 1821, 1822, 1830, 1826, 1835, 1842, 7073, 1832, 1845, 1840, 1849, 1846, 1853, 1852, 1848, 1850, 1857, 1861, 1862, 1863, 1864, 1867, 1865, 1866, 1873, 1868, 1875, 1876, 1878, - 1880, 1883, 1882, 7019, 1888, 1890, 1891, 1893, 1894, 1892, + 1880, 1883, 1882, 7073, 1888, 1890, 1891, 1893, 1894, 1892, 1900, 1896, 1902, 1904, 1906, 1917, 1907, 1908, 1914, 1912, - 1923, 1918, 1920, 1922, 7019, 1924, 1935, 1928, 1936, 1930, + 1923, 1918, 1920, 1922, 7073, 1924, 1935, 1928, 1936, 1930, 1937, 1939, 1940, 1943, 1944, 1945, 1946, 1947, 1948, 1958, 1955, 1954, 1956, 1960, 1961, 1970, 1969, 1971, 1973, 1981, @@ -908,706 +911,712 @@ static const flex_int16_t yy_base[3618] = 1996, 2003, 1998, 2005, 2000, 2001, 2019, 2022, 2020, 2006, 2017, 2018, 2009, 2026, 2034, 2038, 2033, 2031, 2035, 2045, 2040, 2042, 2043, 2046, 2047, 2058, 2044, 2062, 2053, 2055, - 2056, 2064, 2067, 7019, 2068, 2070, 7019, 2072, 2071, 2073, + 2056, 2064, 2067, 7073, 2068, 2070, 7073, 2072, 2071, 2073, 2095, 2074, 2078, 2081, 2080, 2083, 2089, 2087, 2099, 2105, 2101, 2118, 2088, 2107, 2119, 2109, 2122, 2114, 2120, 2128, 2129, 2130, 2131, 2133, 2139, 2136, 2149, 2152, 2148, 2156, 2159, 2132, 2155, 2157, 2176, 2158, 2160, 2164, 2161, 2162, 2166, 2172, 2167, 2179, 2168, 2169, 2181, 2191, 2189, 2186, - 2192, 2199, 2200, 2201, 2204, 2205, 2206, 7019, 2213, 2208, - 2212, 2216, 2090, 2220, 2217, 2223, 7019, 2224, 2225, 2227, + 2192, 2199, 2200, 2201, 2204, 2205, 2206, 7073, 2213, 2208, + 2212, 2216, 2090, 2220, 2217, 2223, 7073, 2224, 2225, 2227, 2235, 2228, 2230, 2236, 2232, 2239, 2238, 2244, 2245, 2246, - 2251, 2247, 2265, 7019, 2250, 7019, 2248, 2240, 2263, 2261, - 2267, 2269, 2270, 2271, 2272, 7019, 7019, 2273, 2274, 2288, - 2290, 2292, 2282, 2279, 2293, 7019, 2295, 2302, 7019, 2299, + 2251, 2247, 2265, 7073, 2250, 7073, 2248, 2240, 2263, 2261, + 2267, 2269, 2270, 2271, 2272, 7073, 7073, 2273, 2274, 2288, + 2290, 2292, 2282, 2279, 2293, 7073, 2295, 2302, 7073, 2299, 2304, 2298, 2297, 2305, 2308, 2309, 2310, 2319, 2314, 2324, - 2315, 2323, 2327, 7019, 2331, 2333, 2316, 2335, 2338, 2329, - 2339, 2342, 2344, 2346, 7019, 2350, 2351, 2353, 2360, 2362, + 2315, 2323, 2327, 7073, 2331, 2333, 2316, 2335, 2338, 2329, + 2339, 2342, 2344, 2346, 7073, 2350, 2351, 2353, 2360, 2362, 2355, 2352, 2363, 2368, 2357, 2365, 2371, 2373, 2372, 2380, - 2383, 2387, 2388, 2389, 2392, 2390, 2402, 7019, 2398, 2379, + 2383, 2387, 2388, 2389, 2392, 2390, 2402, 7073, 2398, 2379, 2399, 2406, 2404, 2408, 2401, 2405, 2411, 2412, 2413, 2415, 2417, 2422, 2421, 2423, 2424, 2425, 2434, 2435, 2427, 2438, 2440, 2431, 2437, 2445, 2446, 2382, 2447, 2449, 2448, 2452, - 7019, 2453, 2455, 2460, 2456, 2466, 2459, 171, 2462, 2463, + 7073, 2453, 2455, 2460, 2456, 2466, 2459, 171, 2462, 2463, 2469, 2470, 2473, 2484, 2474, 2486, 2491, 2487, 2488, 2490, - 2495, 2496, 2497, 2499, 2498, 2489, 2502, 2501, 2505, 7019, - 2507, 2512, 2514, 2515, 2517, 2518, 2520, 7019, 2527, 2521, + 2495, 2496, 2497, 2499, 2498, 2489, 2502, 2501, 2505, 7073, + 2507, 2512, 2514, 2515, 2517, 2518, 2520, 7073, 2527, 2521, 2528, 2541, 2535, 2529, 2544, 2537, 2545, 2546, 2548, 2549, - 2550, 2557, 2554, 2552, 2558, 2560, 7019, 2565, 2567, 2570, + 2550, 2557, 2554, 2552, 2558, 2560, 7073, 2565, 2567, 2570, 2561, 2571, 2573, 2574, 2578, 2580, 2582, 2584, 2585, 2590, 2586, 2588, 2589, 2591, 2599, 2602, 2612, 2594, 2603, 2604, - 2611, 2608, 2616, 2615, 2618, 2620, 2625, 2621, 7019, 2630, + 2611, 2608, 2616, 2615, 2618, 2620, 2625, 2621, 7073, 2630, 2622, 2631, 2632, 2629, 2636, 2633, 2639, 2648, 2644, 2646, 2653, 2654, 2667, 2656, 2650, 2664, 2661, 2665, 2673, 2677, 2674, 2678, 2684, 2681, 2687, 2689, 2691, 2695, 2699, 2696, 2697, 2698, 2700, 2701, 2710, 2712, 2715, 2718, 2708, 2716, - 2723, 2724, 2726, 2742, 2733, 7019, 2731, 2737, 2729, 2741, + 2723, 2724, 2726, 2742, 2733, 7073, 2731, 2737, 2729, 2741, 2749, 2745, 2746, 2751, 2753, 2755, 2757, 2758, 2759, 2766, 2761, 2763, 2770, 2765, 2769, 2771, 2772, 2780, 2782, 2783, - 2784, 2791, 2786, 2793, 2707, 7019, 2794, 2798, 2788, 2795, + 2784, 2791, 2786, 2793, 2707, 7073, 2794, 2798, 2788, 2795, 2806, 2796, 2810, 2811, 2813, 2799, 2802, 2814, 2822, 2817, - 2815, 2824, 2819, 2831, 2828, 2829, 2834, 2826, 7019, 2840, + 2815, 2824, 2819, 2831, 2828, 2829, 2834, 2826, 7073, 2840, 2830, 2841, 2842, 2846, 2848, 2849, 2850, 2856, 2858, 2851, - 2861, 2862, 2864, 2865, 2868, 7019, 2873, 2875, 2871, 2874, - 2883, 2878, 2882, 2884, 2886, 2888, 7019, 2889, 2891, 2890, - 2892, 2893, 2896, 2903, 2904, 2899, 7019, 2912, 2902, 2910, + 2861, 2862, 2864, 2865, 2868, 7073, 2873, 2875, 2871, 2874, + 2883, 2878, 2882, 2884, 2886, 2888, 7073, 2889, 2891, 2890, + 2892, 2893, 2896, 2903, 2904, 2899, 7073, 2912, 2902, 2910, 2911, 2914, 2915, 2917, 2920, 2918, 2923, 2924, 2927, 2934, - 2928, 2936, 7019, 2925, 2946, 2937, 2943, 2939, 2949, 2950, - 2953, 2954, 2957, 2956, 2960, 7019, 2967, 2969, 2964, 2978, + 2928, 2936, 7073, 2925, 2946, 2937, 2943, 2939, 2949, 2950, + 2953, 2954, 2957, 2956, 2960, 7073, 2967, 2969, 2964, 2978, 2970, 2976, 2979, 2980, 2981, 2982, 2983, 2984, 2988, 2990, - 7019, 2991, 2994, 2995, 2998, 2992, 3000, 3003, 3014, 3007, + 7073, 2991, 2994, 2995, 2998, 2992, 3000, 3003, 3014, 3007, 3009, 3011, 3006, 3016, 3017, 3015, 3021, 3028, 3024, 3023, 3027, 3033, 3036, 3038, 3040, 3039, 3043, 3051, 3052, 3047, 3054, 3057, 3058, 3050, 3060, 3062, 3069, 3071, 3074, 3072, - 3075, 7019, 3078, 3079, 3080, 3070, 3082, 3084, 3085, 3086, - 3090, 3087, 3095, 3092, 3096, 3099, 3112, 3114, 3101, 3104, - 3109, 3115, 3116, 3117, 3119, 3120, 3123, 3130, 3126, 3127, - 3129, 3139, 3132, 3136, 3143, 3135, 3144, 3145, 3146, 3148, - 3152, 3149, 3153, 3156, 3158, 3150, 3159, 3160, 3174, 3176, + 3075, 7073, 3078, 3079, 3080, 3070, 3082, 3084, 3085, 3086, + 3090, 3087, 3096, 3101, 3099, 3092, 3109, 3116, 3102, 3117, + 3105, 3112, 3114, 3120, 3119, 3121, 3126, 3133, 3129, 3128, + 3130, 3142, 3132, 3137, 3145, 3135, 3140, 3146, 3147, 3149, + 3150, 3152, 3155, 3157, 3160, 3153, 3161, 3162, 3176, 3178, - 3177, 3179, 3171, 3180, 3181, 3185, 7019, 3188, 3190, 3186, - 3192, 3193, 3197, 3198, 3205, 3200, 3207, 3208, 3211, 3210, - 3213, 3218, 3219, 3221, 3222, 3229, 3225, 7019, 3226, 7019, - 3227, 3228, 3231, 3240, 3235, 7019, 3246, 7019, 3236, 3250, - 3241, 3243, 3247, 7019, 3251, 3252, 3256, 3253, 3258, 3260, - 3264, 3265, 3266, 3267, 3268, 3275, 3270, 3274, 3277, 3281, - 3280, 3284, 3287, 3289, 3290, 3292, 3291, 3294, 3298, 3299, - 3300, 3307, 3309, 3310, 3311, 3312, 3313, 7019, 3317, 3320, - 3314, 3325, 3322, 3324, 3326, 3332, 3333, 3334, 3335, 3339, - 3337, 3341, 3346, 3349, 3343, 3350, 3353, 3360, 3362, 3354, + 3179, 3167, 3169, 3181, 3183, 3185, 7073, 3188, 3189, 3186, + 3192, 3193, 3198, 3195, 3205, 3202, 3203, 3213, 3210, 3214, + 3219, 3208, 3211, 3221, 3220, 3231, 3227, 7073, 3224, 7073, + 3222, 3232, 3233, 3241, 3236, 7073, 3239, 7073, 3244, 3246, + 3248, 3249, 3250, 7073, 3251, 3252, 3255, 3253, 3257, 3258, + 3261, 3260, 3263, 3267, 3269, 3274, 3270, 3278, 3279, 3280, + 3284, 3285, 3288, 3286, 3290, 3291, 3292, 3294, 3298, 3299, + 3303, 3301, 3306, 3310, 3311, 3312, 3313, 7073, 3317, 3324, + 3320, 3329, 3314, 3322, 3328, 3326, 3335, 3332, 3336, 3338, + 3339, 3341, 3348, 3344, 3350, 3351, 3352, 3358, 3362, 3360, - 3369, 7019, 3364, 3367, 3368, 3371, 7019, 3375, 3372, 3381, - 3383, 3376, 3373, 3379, 3385, 3392, 3386, 3389, 3395, 3399, - 3403, 3406, 3407, 7019, 3400, 3408, 3398, 3416, 3421, 3412, - 3424, 3428, 3425, 3431, 3433, 3435, 3437, 3414, 3438, 3439, - 3440, 3441, 3449, 3451, 3452, 3448, 3461, 3447, 3454, 3463, - 3464, 3450, 3457, 3465, 3466, 3467, 3471, 3473, 3472, 3474, - 3475, 3476, 3482, 3488, 7019, 3480, 3491, 3483, 3500, 3489, - 3497, 3498, 3493, 3502, 7019, 3505, 3506, 3510, 3508, 3511, - 3514, 3516, 3517, 3519, 3522, 3521, 3525, 3533, 3524, 7019, - 3528, 7019, 3527, 3535, 3547, 3550, 3539, 3544, 3553, 3555, + 3370, 7073, 3365, 3367, 3368, 3369, 7073, 3372, 3373, 3381, + 3383, 3374, 3376, 3378, 3386, 3390, 3385, 3392, 3395, 3396, + 3406, 3405, 3398, 7073, 3407, 3408, 3409, 3418, 3412, 3419, + 3426, 3428, 3424, 3430, 3432, 3441, 3437, 3423, 3427, 3425, + 3438, 3446, 3453, 3454, 3456, 3452, 3461, 3439, 3459, 3466, + 3463, 3451, 3440, 3467, 3470, 3471, 3473, 3474, 3475, 3472, + 3476, 3477, 3481, 3482, 7073, 3483, 3484, 3478, 3498, 3494, + 3499, 3501, 3502, 3503, 3504, 3508, 7073, 3510, 3507, 3513, + 3511, 3519, 3522, 3512, 3525, 3528, 3529, 3530, 3532, 3531, + 3534, 7073, 3533, 7073, 3535, 3541, 3552, 3555, 3547, 3556, - 3557, 3558, 3559, 3560, 3561, 3565, 3567, 3569, 3568, 3573, - 3571, 3581, 3589, 3572, 3574, 3586, 3590, 3591, 3576, 3601, - 3593, 3597, 7019, 7019, 3596, 3602, 3603, 3606, 3607, 3610, - 3612, 3614, 3619, 3617, 3618, 3625, 3634, 7019, 3630, 3631, - 3629, 3632, 3636, 3647, 3638, 3649, 3658, 3640, 3653, 3660, - 3655, 7019, 3642, 3657, 3665, 3663, 3666, 3670, 7019, 3672, - 7019, 3668, 3673, 3674, 3677, 3678, 3679, 3681, 3682, 3684, - 3686, 3689, 3696, 3704, 3705, 3706, 3701, 3708, 3690, 3702, - 3711, 3713, 3715, 3722, 3718, 3719, 3721, 7019, 3724, 3725, - 3727, 3729, 3726, 3732, 3733, 3741, 3736, 7019, 3742, 3743, + 3558, 3563, 3557, 3564, 3566, 3565, 3567, 3569, 3573, 3575, + 3576, 3578, 3577, 3542, 3580, 3585, 3581, 3591, 3582, 3593, + 3594, 3603, 3606, 3596, 7073, 7073, 3598, 3599, 3612, 3605, + 3609, 3614, 3624, 3620, 3622, 3616, 3626, 3628, 3636, 7073, + 3631, 3633, 3637, 3638, 3640, 3650, 3642, 3652, 3655, 3653, + 3656, 3663, 3661, 7073, 3662, 3664, 3671, 3666, 3672, 3674, + 7073, 3669, 7073, 3673, 3676, 3680, 3683, 3684, 3685, 3687, + 3688, 3690, 3693, 3696, 3702, 3704, 3711, 3706, 3708, 3713, + 3714, 3715, 3716, 3718, 3719, 3726, 3722, 3724, 3725, 7073, + 3728, 3729, 3737, 3731, 3730, 3742, 3746, 3739, 3738, 7073, - 3744, 3748, 3749, 3755, 3751, 3756, 3757, 3762, 3758, 3766, - 3763, 3765, 7019, 3767, 3769, 3780, 3771, 3778, 3779, 3782, - 3784, 3791, 7019, 3788, 3792, 3800, 3798, 3795, 3802, 3803, - 3799, 3805, 3808, 3810, 3809, 3811, 3812, 3813, 3815, 3817, - 3820, 3818, 3831, 3832, 3824, 3834, 3841, 3823, 7019, 3840, - 3845, 3846, 3847, 3848, 3849, 3853, 3854, 3858, 3860, 3850, - 3862, 3871, 3852, 3866, 3874, 3876, 3877, 3884, 3879, 7019, - 3886, 3883, 3891, 3888, 3889, 3894, 3899, 3890, 3900, 3903, - 3892, 3896, 3904, 3906, 3912, 3915, 3922, 3918, 3908, 3921, - 3923, 3925, 3924, 7019, 3935, 3926, 3927, 3936, 3941, 3933, + 3745, 3753, 3752, 3754, 3757, 3759, 3760, 3763, 3764, 3768, + 3770, 3769, 3765, 3773, 7073, 3771, 3774, 3786, 3781, 3778, + 3782, 3792, 3795, 3800, 7073, 3797, 3801, 3809, 3805, 3806, + 3787, 3808, 3807, 3812, 3813, 3814, 3815, 3816, 3817, 3823, + 3822, 3819, 3829, 3825, 3828, 3836, 3839, 3843, 3850, 3846, + 7073, 3847, 3830, 3852, 3848, 3853, 3855, 3856, 3858, 3861, + 3866, 3862, 3869, 3874, 3876, 3877, 3878, 3880, 3881, 3889, + 3884, 7073, 3892, 3888, 3896, 3895, 3891, 3901, 3894, 3902, + 3903, 3910, 3905, 3907, 3912, 3913, 3914, 3919, 3927, 3923, + 3911, 3925, 3926, 3938, 3929, 3930, 3933, 3934, 7073, 3953, - 3951, 3946, 3947, 3949, 3954, 3950, 3956, 3958, 3959, 3960, - 3963, 3964, 7019, 7019, 3966, 3968, 3971, 7019, 3973, 3969, - 3983, 3972, 3975, 3979, 3986, 3985, 3987, 3989, 3994, 3991, - 3997, 7019, 4004, 4002, 4005, 4003, 4009, 4012, 4008, 7019, - 4011, 4020, 4019, 4021, 4022, 4024, 4027, 4025, 4029, 4032, - 4033, 4034, 4036, 4045, 4048, 4038, 4040, 4043, 7019, 4049, - 4050, 4052, 4054, 4056, 4059, 4061, 7019, 4062, 4064, 4065, - 4067, 4070, 4075, 4082, 4077, 4084, 4071, 4085, 4087, 4089, - 4090, 4091, 4095, 4102, 4098, 4097, 4100, 4101, 4104, 4107, - 4109, 7019, 4117, 4118, 4119, 4120, 4122, 7019, 4124, 4133, + 3941, 3944, 3954, 3951, 3945, 3963, 3958, 3948, 3961, 3965, + 3966, 3969, 3971, 3972, 3973, 3976, 3977, 7073, 7073, 3979, + 3980, 3981, 7073, 3984, 3983, 3995, 3985, 3987, 3988, 3996, + 3999, 3998, 4000, 4002, 4008, 4012, 7073, 4016, 4013, 4020, + 4015, 4017, 4025, 4021, 7073, 4022, 4033, 4030, 4031, 4037, + 4032, 4038, 4039, 4043, 4044, 4040, 4045, 4048, 4056, 4059, + 4054, 4051, 4060, 7073, 4061, 4062, 4063, 4070, 4065, 4067, + 4072, 7073, 4073, 4075, 4076, 4082, 4085, 4091, 4093, 4095, + 4099, 4083, 4096, 4100, 4102, 4101, 4103, 4105, 4114, 4109, + 4113, 4112, 4116, 4131, 4132, 4118, 7073, 4115, 4126, 4120, - 4136, 7019, 4137, 4128, 4135, 4138, 4147, 7019, 4143, 4142, - 4144, 4148, 4145, 4157, 4152, 4159, 4161, 4158, 4162, 4163, - 4164, 7019, 4166, 4165, 4167, 7019, 4180, 4185, 4188, 4190, - 4171, 4175, 4173, 4192, 4193, 4194, 7019, 4195, 7019, 4198, - 4196, 4204, 7019, 4202, 4206, 4207, 4210, 4211, 4216, 4217, - 4223, 4225, 4213, 4219, 4227, 4215, 4231, 4232, 4236, 4229, - 4239, 4238, 4240, 7019, 4241, 4243, 4246, 4249, 4244, 4250, - 4257, 4259, 4252, 4260, 4262, 7019, 7019, 4268, 7019, 4269, - 4263, 4270, 4274, 7019, 4276, 4278, 4283, 4280, 4281, 4285, - 4284, 4289, 4293, 7019, 4295, 4298, 7019, 4296, 4300, 4309, + 4134, 4136, 7073, 4144, 4147, 4151, 7073, 4154, 4138, 4150, + 4149, 4158, 7073, 4153, 4156, 4157, 4162, 4159, 4172, 4167, + 4174, 4171, 4173, 4175, 4176, 4178, 7073, 4179, 4177, 4180, + 7073, 4183, 4187, 4194, 4198, 4182, 4205, 4200, 4203, 4201, + 4204, 7073, 4209, 7073, 4212, 4210, 4216, 7073, 4211, 4218, + 4219, 4221, 4225, 4226, 4227, 4233, 4229, 4235, 4237, 4238, + 4239, 4240, 4242, 4249, 4241, 4245, 4248, 4250, 7073, 4251, + 4253, 4260, 4261, 4257, 4267, 4265, 4272, 4262, 4273, 4275, + 7073, 7073, 4280, 7073, 4282, 4276, 4281, 4286, 7073, 4289, + 4287, 4296, 4291, 4293, 4298, 4295, 4306, 4299, 7073, 4310, - 4304, 4305, 4307, 4308, 4310, 4313, 4315, 4320, 4321, 4316, - 4323, 4317, 4324, 4338, 7019, 4325, 4326, 4330, 4347, 4334, - 4341, 4348, 4350, 4353, 7019, 4354, 4356, 4360, 4362, 4363, - 7019, 4365, 7019, 4364, 4366, 4368, 4369, 4372, 4383, 7019, - 4379, 4376, 4385, 4386, 4387, 4393, 4389, 4396, 4388, 4397, - 4398, 4405, 4402, 4400, 4404, 4409, 4411, 7019, 4410, 4414, - 4421, 4422, 4424, 4417, 4425, 4433, 4426, 4434, 4430, 4438, - 4440, 4437, 4441, 4443, 4447, 4450, 4451, 7019, 4453, 4452, - 4458, 4459, 4468, 4463, 4465, 4466, 7019, 4470, 4471, 4472, - 7019, 4473, 4479, 4481, 4484, 4485, 4487, 4488, 4491, 4489, + 4311, 7073, 4303, 4314, 4321, 4316, 4317, 4318, 4319, 4322, + 4327, 4325, 4329, 4331, 4332, 4333, 4334, 4335, 4337, 4354, + 4338, 4349, 7073, 4342, 4350, 4357, 4359, 4356, 4363, 4364, + 4365, 4366, 7073, 4371, 4375, 4372, 4379, 4378, 7073, 4380, + 7073, 4381, 4382, 4388, 4392, 4387, 4401, 7073, 4396, 4393, + 4403, 4397, 4404, 4408, 4411, 4412, 4413, 4414, 4405, 4421, + 4419, 4420, 4418, 4428, 4426, 7073, 4429, 4435, 4437, 4438, + 4440, 4441, 4442, 4450, 4447, 4443, 4446, 4453, 4455, 4458, + 4459, 4465, 4463, 4468, 4457, 7073, 4467, 4474, 4476, 4477, + 4485, 4480, 4481, 4482, 7073, 4487, 4488, 4491, 7073, 4489, - 4494, 4495, 4492, 7019, 4500, 4501, 4496, 4493, 4504, 4502, - 4515, 7019, 7019, 4517, 7019, 4518, 4519, 4520, 4521, 4522, - 4525, 4527, 4528, 4530, 4531, 4532, 4540, 4538, 4541, 7019, - 4545, 4552, 4548, 4556, 4559, 4563, 4558, 4560, 4562, 7019, - 7019, 4566, 4571, 4567, 4574, 4577, 4569, 4575, 4585, 4583, - 4589, 4592, 4594, 4601, 7019, 4580, 4587, 4596, 4598, 7019, - 4602, 4603, 4605, 4604, 4606, 4612, 4609, 4613, 4610, 4614, - 4617, 4620, 4622, 4621, 4623, 4629, 4631, 4632, 4634, 4635, - 4638, 4639, 4643, 7019, 4646, 4645, 4647, 4648, 4650, 4652, - 4656, 4658, 4659, 4660, 4668, 7019, 4663, 7019, 4661, 4669, + 4495, 4497, 4501, 4503, 4504, 4505, 4508, 4507, 4511, 4512, + 4509, 7073, 4516, 4517, 4510, 4513, 4526, 4533, 4519, 7073, + 7073, 4534, 7073, 4535, 4520, 4536, 4538, 4539, 4545, 4547, + 4548, 4550, 4544, 4552, 4555, 4558, 4560, 7073, 4561, 4572, + 4565, 4575, 4576, 4583, 4578, 4582, 4568, 7073, 7073, 4585, + 4591, 4586, 4594, 4596, 4567, 4589, 4604, 4600, 4601, 4609, + 4610, 4618, 7073, 4599, 4611, 4616, 4613, 7073, 4614, 4619, + 4621, 4622, 4623, 4625, 4626, 4627, 4629, 4630, 4636, 4641, + 4638, 4646, 4632, 4640, 4649, 4648, 4654, 4656, 4655, 4657, + 4659, 7073, 4662, 4663, 4664, 4665, 4669, 4671, 4672, 4676, - 4680, 4670, 4665, 4688, 4677, 4689, 4684, 4690, 4691, 4693, - 4694, 4699, 4700, 4704, 4696, 4707, 4708, 4712, 4710, 4716, - 4718, 4721, 7019, 4723, 4724, 4725, 4727, 4730, 4732, 4733, - 4735, 4736, 4738, 4740, 4741, 4743, 4748, 4749, 4750, 4751, - 4753, 4756, 7019, 4757, 4761, 4758, 4765, 4766, 4769, 4770, - 4778, 4771, 4780, 4773, 4782, 4783, 7019, 4786, 4788, 4790, - 7019, 4791, 4793, 4794, 4795, 4796, 4799, 4802, 4804, 4803, - 4805, 7019, 4813, 4806, 4815, 4814, 4816, 4819, 4823, 4824, - 4829, 4827, 4831, 4839, 7019, 4841, 4832, 4840, 4843, 4846, - 4847, 4849, 4851, 4852, 7019, 4853, 4861, 4862, 4854, 4874, + 4674, 4677, 4685, 7073, 4678, 7073, 4681, 4687, 4690, 4700, + 4688, 4704, 4705, 4706, 4699, 4689, 4707, 4711, 4714, 4717, + 4718, 4723, 4719, 4725, 4726, 4727, 7073, 4730, 4732, 4735, + 4737, 4742, 4744, 4745, 7073, 4747, 4738, 4748, 4751, 4754, + 4756, 4757, 4760, 4761, 4765, 4762, 4766, 4770, 4773, 4767, + 4774, 4775, 4780, 4778, 7073, 4782, 4785, 4786, 4789, 4790, + 4791, 4793, 4795, 4800, 4803, 4804, 4806, 4807, 7073, 4810, + 4811, 4813, 7073, 4814, 4817, 4815, 4818, 4820, 4827, 4822, + 4831, 4828, 4829, 7073, 4840, 4835, 4842, 4837, 4845, 4846, + 4847, 4848, 4852, 4850, 4854, 4857, 7073, 4867, 4858, 4866, - 4879, 4855, 4865, 4881, 4872, 4882, 4863, 4883, 4886, 4864, - 4885, 4890, 4891, 4892, 4893, 4903, 4904, 4902, 7019, 4895, - 7019, 4905, 4908, 4909, 4918, 4913, 4911, 4923, 4916, 4919, - 7019, 4926, 4927, 4929, 4930, 4931, 7019, 4932, 4933, 4935, - 4934, 7019, 4948, 4947, 4936, 4953, 4938, 4954, 7019, 4958, - 4959, 4961, 4969, 4970, 4967, 4972, 4960, 4977, 4968, 4973, - 4975, 4981, 4985, 4983, 4984, 7019, 4986, 4988, 4993, 4995, - 4996, 4998, 4999, 5002, 5005, 5004, 5006, 7019, 5010, 5011, - 5012, 5013, 5014, 5016, 5017, 5018, 5027, 5024, 5025, 5029, - 5034, 5035, 5036, 5038, 5040, 7019, 5043, 5042, 5044, 5051, + 4868, 4865, 4869, 4872, 4876, 4878, 7073, 4879, 4880, 4883, + 4886, 4895, 4897, 4887, 4892, 4900, 4898, 4905, 4896, 4899, + 4906, 4902, 4911, 4914, 4915, 4916, 4913, 4932, 4934, 4929, + 7073, 4917, 7073, 4918, 4930, 4935, 4946, 4941, 4943, 4944, + 4948, 4947, 7073, 4949, 4954, 4956, 4951, 4959, 7073, 4919, + 4957, 4960, 4962, 7073, 4958, 4971, 4963, 4972, 4978, 4979, + 7073, 4982, 4985, 4986, 4993, 4995, 4990, 4997, 4992, 5000, + 4998, 4994, 5002, 5003, 5011, 5009, 5007, 7073, 5013, 5015, + 5020, 5022, 5024, 5016, 5026, 5014, 5028, 5031, 5033, 7073, + 5036, 5037, 5038, 5039, 5040, 5043, 5042, 5044, 5051, 5050, - 5052, 5048, 5060, 7019, 5057, 7019, 5050, 5067, 5069, 5070, - 5061, 5074, 7019, 7019, 5076, 5071, 5077, 5079, 5081, 7019, - 7019, 5083, 7019, 5084, 7019, 5085, 5088, 7019, 7019, 5086, - 5092, 5093, 5095, 5096, 5098, 7019, 5106, 7019, 5109, 5107, - 5110, 5108, 5094, 5112, 7019, 5113, 5119, 5121, 5123, 5126, - 7019, 5120, 5128, 5136, 5131, 5137, 7019, 5139, 5140, 5141, - 5144, 7019, 5145, 5148, 5150, 5151, 5154, 5153, 5156, 5157, - 5158, 5164, 5165, 5168, 5167, 5170, 5171, 5175, 5180, 5182, - 5184, 5185, 5186, 5188, 5191, 5194, 5198, 5189, 5196, 5200, - 5202, 5203, 5205, 5207, 5208, 5210, 5214, 5215, 5218, 5211, + 5052, 5048, 5055, 5060, 5063, 5061, 5065, 7073, 5069, 5067, + 5070, 5077, 5078, 5076, 5085, 7073, 5080, 7073, 5086, 5088, + 5090, 5092, 5093, 7073, 5096, 5098, 5097, 5103, 7073, 7073, + 5105, 5112, 5107, 5111, 5108, 7073, 7073, 5114, 7073, 5115, + 7073, 5116, 5118, 7073, 7073, 5120, 5121, 5122, 5124, 5126, + 5128, 7073, 5136, 7073, 5138, 5137, 5139, 5142, 5141, 5144, + 7073, 5145, 5148, 5150, 5153, 5155, 7073, 5152, 5160, 5173, + 5156, 5168, 7073, 5170, 5172, 5159, 5171, 7073, 5176, 5180, + 5181, 5182, 5184, 5185, 5187, 5188, 5191, 5194, 5195, 5196, + 5197, 5199, 5204, 5203, 5211, 5213, 5215, 5206, 5216, 5220, - 5225, 5219, 5220, 5228, 5229, 5230, 5235, 5236, 5238, 5239, - 5241, 5242, 5243, 5244, 5246, 5251, 5247, 5256, 5254, 5260, - 5262, 7019, 5248, 5252, 5264, 5269, 5270, 5271, 5273, 5280, - 5282, 5285, 7019, 5288, 7019, 5290, 5283, 5292, 5293, 5294, - 7019, 5295, 5296, 5297, 5298, 5299, 5300, 5302, 5305, 5306, - 5310, 5316, 7019, 5307, 5322, 5313, 5323, 5326, 5330, 7019, - 5331, 5333, 5334, 5336, 5337, 5339, 5338, 5341, 5342, 5347, - 5343, 5344, 5349, 5357, 5350, 5358, 5361, 7019, 5365, 5369, - 5372, 5371, 5373, 5375, 5374, 5378, 5377, 5379, 5383, 5380, - 5381, 5385, 5396, 5401, 5398, 7019, 5388, 7019, 5402, 5404, + 5221, 5223, 5226, 5228, 5229, 5230, 5231, 5232, 5236, 5238, + 5235, 5244, 5246, 5239, 5248, 5255, 5256, 5257, 5241, 5259, + 5258, 5260, 5266, 5262, 5273, 5268, 5270, 5274, 5275, 5277, + 5276, 5279, 5283, 5284, 5288, 5286, 5289, 7073, 5282, 5292, + 5293, 5302, 5296, 5303, 5306, 5313, 5318, 5319, 7073, 5321, + 7073, 5323, 5307, 5315, 5309, 5327, 7073, 5329, 5330, 5331, + 5332, 5334, 5335, 5336, 5337, 5333, 5340, 5344, 7073, 5346, + 5360, 5347, 5341, 5356, 5367, 7073, 5362, 5369, 5354, 5364, + 5370, 5373, 5374, 5375, 5376, 5379, 5377, 5378, 5384, 5387, + 5381, 5390, 5391, 7073, 5399, 5403, 5406, 5392, 5404, 5405, - 5405, 5406, 5408, 5409, 5410, 5412, 7019, 7019, 5415, 5416, - 5418, 5420, 5422, 5424, 5428, 5425, 5429, 5439, 7019, 5432, - 5440, 5441, 5449, 5438, 7019, 5450, 5433, 5452, 5455, 7019, - 5456, 5457, 5458, 5459, 5464, 5461, 5470, 5471, 5473, 5467, - 5474, 5475, 5478, 7019, 7019, 7019, 7019, 5484, 5479, 5488, - 5481, 5489, 5490, 5491, 5496, 5497, 5493, 5498, 5499, 7019, - 5508, 7019, 7019, 5504, 7019, 5510, 5511, 5512, 5513, 5516, - 5519, 5522, 7019, 5523, 7019, 5524, 5526, 5527, 5533, 5537, - 5534, 5540, 5544, 5541, 5545, 5546, 5547, 5555, 5551, 5552, - 5554, 5557, 5561, 5567, 7019, 7019, 5558, 5573, 5574, 5576, + 5407, 5409, 5411, 5413, 5414, 5415, 5417, 5418, 5419, 5425, + 5431, 5428, 5436, 5441, 7073, 5424, 7073, 5442, 5444, 5445, + 5432, 5448, 5449, 5446, 5450, 7073, 7073, 5447, 5455, 5456, + 5461, 5462, 5458, 5465, 5468, 5470, 5471, 7073, 5472, 5474, + 5478, 5484, 5481, 7073, 5486, 5488, 5489, 5491, 7073, 5492, + 5493, 5495, 5496, 5506, 5498, 5511, 5507, 5513, 5500, 5503, + 5514, 5519, 7073, 7073, 7073, 7073, 5520, 5523, 5525, 5526, + 5527, 5528, 5529, 5533, 5535, 5531, 5532, 5536, 7073, 5547, + 7073, 7073, 5543, 7073, 5549, 5550, 5553, 5555, 5537, 5557, + 5559, 7073, 5560, 7073, 5565, 5568, 5561, 5572, 5578, 5569, - 5563, 5578, 5579, 5586, 5581, 5582, 5588, 5584, 5590, 5589, - 5600, 5601, 5591, 5592, 5603, 7019, 5605, 5606, 5613, 7019, - 5607, 7019, 5609, 5615, 5617, 5608, 5618, 5621, 5623, 5624, - 5627, 5628, 7019, 7019, 5629, 5640, 5635, 7019, 7019, 5637, - 5638, 5639, 5642, 5644, 5645, 5646, 5648, 5649, 5651, 5654, - 5650, 7019, 5655, 7019, 5660, 5663, 5672, 5662, 5674, 5679, - 5675, 5682, 5678, 5681, 5683, 5685, 7019, 5686, 5684, 7019, - 5694, 5696, 5698, 5691, 5701, 5692, 7019, 5703, 5706, 5710, - 5712, 7019, 5714, 5715, 5716, 5717, 7019, 5723, 7019, 5718, - 5720, 5727, 5734, 5729, 7019, 5730, 5731, 7019, 5736, 5743, + 5562, 5580, 5582, 5583, 5584, 5585, 5592, 5590, 5593, 5591, + 5596, 5598, 5600, 7073, 7073, 5604, 5608, 5609, 5611, 5613, + 5614, 5615, 5622, 5620, 5621, 5623, 5625, 5627, 5628, 5636, + 5637, 5633, 5634, 5642, 7073, 5643, 5639, 5645, 7073, 5647, + 7073, 5651, 5652, 5653, 5654, 5655, 5660, 5661, 5662, 5664, + 5666, 7073, 7073, 5665, 5680, 5675, 7073, 7073, 5667, 5676, + 5677, 5679, 5685, 5682, 5687, 7073, 5690, 5691, 5692, 5688, + 5694, 5702, 5695, 7073, 5704, 7073, 5705, 5707, 5713, 5708, + 5716, 5721, 5717, 5724, 5723, 5720, 5726, 5727, 7073, 5729, + 5730, 7073, 5737, 5736, 5740, 5734, 5742, 5745, 7073, 5746, - 5745, 5737, 5746, 5747, 7019, 5749, 5751, 7019, 5752, 5754, - 5755, 5758, 5761, 5763, 5764, 5765, 5766, 5773, 5771, 5774, - 7019, 7019, 5781, 5779, 135, 5788, 5768, 5785, 5786, 5789, - 5796, 5792, 5793, 5799, 7019, 7019, 5802, 7019, 5800, 5801, - 7019, 5794, 5809, 5810, 5803, 5813, 5814, 5815, 5816, 5823, - 5824, 5825, 5826, 5827, 5829, 7019, 5845, 5848, 5831, 5834, - 5851, 5853, 5855, 5857, 5859, 5849, 5861, 5843, 5841, 5862, - 5864, 5868, 5870, 5871, 5872, 5873, 5874, 7019, 5878, 5882, - 5883, 5879, 5884, 7019, 5889, 5890, 5896, 5898, 7019, 5900, - 5901, 5904, 5905, 5906, 7019, 5891, 5908, 5912, 5916, 5917, + 5749, 5753, 5755, 7073, 5757, 5758, 5759, 5761, 7073, 5766, + 7073, 5763, 5768, 5769, 5777, 5772, 7073, 5774, 5778, 7073, + 5786, 5788, 5790, 5792, 5780, 5791, 7073, 5797, 5782, 7073, + 5798, 5802, 5805, 5808, 5799, 5810, 5803, 5811, 5812, 5819, + 5821, 5823, 7073, 7073, 5828, 5825, 135, 5837, 5815, 5824, + 5832, 5833, 5840, 5750, 5841, 5843, 7073, 7073, 5846, 7073, + 5847, 5850, 7073, 5835, 5854, 5848, 5856, 5858, 5859, 5861, + 5862, 5865, 5866, 5867, 5868, 5869, 5871, 7073, 5890, 5892, + 5875, 5896, 5897, 5899, 5901, 5903, 5905, 5893, 5907, 5908, + 5885, 5910, 5913, 5914, 5915, 5916, 5917, 5919, 5921, 7073, - 5918, 5919, 5921, 5928, 7019, 5925, 5923, 5929, 7019, 7019, - 7019, 5934, 5941, 5931, 7019, 5943, 5935, 5944, 5946, 7019, - 5948, 5950, 5951, 7019, 7019, 7019, 5952, 5953, 5956, 7019, - 5954, 5961, 7019, 5960, 7019, 5957, 7019, 5962, 5966, 5975, - 5970, 7019, 5968, 5980, 5981, 5982, 7019, 5985, 5988, 5990, - 5991, 5992, 5994, 5996, 7019, 6003, 5999, 6002, 6006, 5998, - 6008, 6009, 6010, 6011, 6023, 6014, 6019, 7019, 6021, 6022, - 6026, 6032, 6024, 6034, 6035, 7019, 6028, 7019, 6037, 7019, - 6038, 6040, 6041, 6042, 6047, 6044, 6045, 6055, 6052, 6058, - 6061, 6059, 6065, 6066, 6070, 6072, 6067, 7019, 7019, 6080, + 5923, 5927, 5929, 5872, 5931, 5934, 5935, 7073, 5943, 5938, + 5947, 5944, 7073, 5951, 5948, 5952, 5954, 5955, 7073, 5956, + 5959, 5966, 5967, 5960, 5962, 5968, 5970, 5978, 7073, 5973, + 5975, 5976, 7073, 7073, 7073, 5982, 5989, 5983, 7073, 5991, + 5992, 5993, 5994, 7073, 5996, 5998, 5999, 7073, 7073, 7073, + 6000, 6003, 6001, 7073, 6002, 6015, 7073, 6004, 7073, 6005, + 7073, 6014, 6023, 6020, 6024, 7073, 6027, 6017, 6029, 6034, + 7073, 6037, 6040, 6042, 6044, 6031, 6045, 6047, 7073, 6054, + 6050, 6056, 6058, 6049, 6059, 6060, 6063, 6062, 6072, 6065, + 6070, 7073, 6073, 6074, 6078, 6075, 6082, 6084, 6085, 7073, - 6075, 6077, 7019, 6073, 7019, 6085, 7019, 6082, 6087, 6088, - 6089, 6090, 7019, 7019, 6097, 6091, 6099, 6106, 6101, 6102, - 7019, 6109, 6104, 6107, 6113, 7019, 6120, 7019, 6115, 6122, - 6123, 7019, 6117, 6130, 6132, 6119, 6125, 6137, 6127, 6133, - 6140, 6147, 6143, 6146, 6144, 6149, 6150, 6151, 6152, 6166, - 7019, 7019, 7019, 6157, 6153, 6174, 6171, 6172, 6182, 6159, - 7019, 6178, 6180, 6181, 6184, 6191, 6187, 6189, 7019, 6190, - 6192, 6193, 6194, 6196, 6197, 6198, 6199, 7019, 6201, 6212, - 6220, 6217, 6209, 6221, 6225, 6228, 6230, 6232, 6233, 6213, - 6240, 6236, 7019, 7019, 6238, 6235, 7019, 6243, 7019, 6244, + 6086, 7073, 6088, 7073, 6089, 6091, 6092, 6093, 6094, 6095, + 6096, 6108, 6107, 6098, 6109, 6113, 6114, 6117, 6120, 6124, + 6121, 7073, 7073, 6131, 6127, 7073, 6128, 6136, 7073, 6126, + 7073, 6138, 7073, 6129, 6133, 6139, 6142, 6146, 7073, 7073, + 6153, 6148, 6150, 6160, 6155, 6156, 7073, 6161, 6157, 6163, + 6165, 7073, 6172, 7073, 6167, 6176, 6169, 7073, 6173, 6180, + 6184, 6177, 6181, 6186, 6188, 6189, 6190, 6197, 6193, 6194, + 6196, 6203, 6200, 6204, 6208, 6213, 7073, 7073, 7073, 6209, + 6217, 6224, 6220, 6222, 6229, 6226, 7073, 6227, 6231, 6228, + 6234, 6241, 6238, 6240, 7073, 6236, 6242, 6243, 6245, 6247, - 7019, 6245, 6247, 6249, 6248, 6252, 7019, 6255, 6250, 6256, - 6257, 6258, 6206, 6260, 6262, 7019, 6264, 6272, 6265, 6273, - 6274, 7019, 7019, 6277, 6281, 7019, 6284, 6286, 6287, 6294, - 6290, 6289, 6296, 6299, 7019, 6303, 6300, 6293, 6306, 6309, - 6308, 6310, 7019, 6311, 6312, 6315, 6317, 7019, 6318, 6322, - 6323, 6321, 6324, 7019, 6325, 6327, 6334, 6339, 7019, 6332, - 6343, 6345, 7019, 7019, 7019, 6349, 6351, 6353, 7019, 7019, - 7019, 7019, 6355, 6356, 6359, 6363, 7019, 6360, 7019, 6365, - 6369, 6373, 6377, 6382, 6368, 7019, 6381, 6374, 6385, 6387, - 6388, 7019, 7019, 6389, 6391, 6392, 6393, 6395, 6396, 7019, + 6250, 6249, 6252, 7073, 6263, 6267, 6271, 6254, 6264, 6272, + 6274, 6276, 6280, 6282, 6283, 6284, 6257, 6285, 7073, 7073, + 6287, 6288, 7073, 6292, 6294, 7073, 6289, 7073, 6295, 6297, + 6299, 6298, 6300, 7073, 6303, 6305, 6306, 6307, 6309, 6313, + 6312, 6315, 7073, 6316, 6330, 6323, 6326, 6327, 7073, 7073, + 6328, 6336, 7073, 6338, 6339, 6333, 6346, 6341, 6342, 6352, + 6354, 7073, 6356, 6357, 6348, 6355, 6358, 6361, 6364, 7073, + 6366, 6365, 6367, 6369, 7073, 6372, 6376, 6377, 6378, 6380, + 7073, 6381, 6371, 6388, 6393, 7073, 6383, 6397, 6396, 7073, + 7073, 7073, 6402, 6405, 6406, 7073, 7073, 7073, 7073, 6408, - 7019, 6397, 6399, 6400, 6401, 6403, 7019, 6407, 6408, 6415, - 6417, 6419, 6424, 6428, 6421, 6429, 6430, 6438, 6441, 6431, - 6433, 6440, 6444, 6445, 6443, 6447, 6457, 6452, 6454, 6460, - 6455, 6463, 7019, 7019, 6465, 7019, 6467, 6469, 7019, 6471, - 7019, 6473, 6475, 6477, 6480, 7019, 6482, 6484, 6486, 6488, - 6490, 7019, 6491, 6493, 6495, 6496, 6497, 6498, 7019, 6502, - 6503, 6507, 6499, 6504, 6508, 6510, 6513, 7019, 6515, 6524, - 7019, 7019, 6519, 6525, 6521, 6526, 6531, 7019, 6529, 6539, - 6534, 6535, 6536, 6538, 6541, 7019, 6544, 6542, 7019, 7019, - 6554, 6545, 7019, 7019, 6543, 6546, 7019, 7019, 7019, 7019, + 6411, 6412, 6414, 7073, 6415, 7073, 7073, 6418, 6422, 6426, + 6428, 6435, 6421, 7073, 6429, 6436, 6438, 6439, 6440, 7073, + 7073, 6441, 6443, 6444, 6446, 6448, 6449, 7073, 7073, 6450, + 6452, 6456, 6453, 6455, 7073, 6458, 6461, 6468, 6465, 6471, + 6478, 6480, 6473, 6481, 6482, 6490, 6493, 6483, 6485, 6492, + 6496, 6497, 6495, 6499, 6509, 6504, 6506, 6512, 6507, 6515, + 7073, 7073, 6517, 7073, 6519, 6521, 7073, 6523, 7073, 6525, + 6527, 6529, 6532, 7073, 6534, 6536, 6538, 6540, 6542, 7073, + 6543, 6545, 6547, 6548, 6549, 6550, 7073, 6554, 6555, 6559, + 6551, 6556, 6560, 6562, 6565, 7073, 6567, 6576, 7073, 7073, - 7019, 7019, 7019, 7019, 6559, 6562, 7019, 7019, 6561, 6553, - 6568, 7019, 6571, 7019, 6563, 6572, 6573, 6575, 7019, 6576, - 7019, 6578, 6580, 6579, 6161, 6582, 6587, 6583, 6585, 6589, - 6592, 6593, 6594, 6602, 6598, 6600, 6599, 6612, 6603, 6614, - 6606, 6616, 7019, 7019, 7019, 6615, 6619, 6624, 6625, 6628, - 6630, 6633, 6636, 6637, 6638, 6640, 6641, 6642, 6644, 6645, - 6654, 6649, 6650, 6652, 6665, 6651, 6667, 6673, 7019, 6675, - 6653, 6659, 6677, 7019, 6655, 7019, 6661, 7019, 7019, 6681, - 6682, 6684, 6685, 6693, 6694, 6686, 6689, 6690, 6691, 6698, - 7019, 6706, 7019, 7019, 7019, 6695, 6699, 7019, 6701, 6703, + 6571, 6577, 6573, 6578, 6583, 7073, 6581, 6591, 6586, 6587, + 6588, 6590, 6593, 7073, 6596, 6594, 7073, 7073, 6606, 6597, + 7073, 7073, 6595, 6598, 7073, 7073, 7073, 7073, 7073, 7073, + 7073, 7073, 6611, 6614, 7073, 7073, 6613, 6605, 6620, 7073, + 6623, 7073, 6615, 6624, 6625, 6627, 7073, 6628, 7073, 6630, + 6632, 6631, 6635, 6634, 6639, 6641, 6644, 6646, 6645, 6648, + 6650, 6651, 6655, 6652, 6656, 6666, 6659, 6669, 6662, 6670, + 7073, 7073, 7073, 6658, 6674, 6680, 6676, 6684, 6686, 6689, + 6691, 6681, 6692, 6693, 6697, 6698, 6695, 6699, 6707, 6704, + 6705, 6706, 6709, 6710, 6716, 6722, 7073, 6724, 6713, 6719, - 7019, 6708, 6712, 6710, 6711, 6713, 6714, 6718, 6720, 6722, - 7019, 7019, 6727, 6730, 6731, 6735, 6732, 6742, 6738, 6740, - 6741, 6744, 6743, 6757, 7019, 6753, 6754, 6756, 7019, 6760, - 6758, 6761, 6763, 6765, 6772, 6767, 6770, 7019, 6773, 7019, - 6776, 6769, 6780, 6771, 6779, 6787, 6788, 6791, 6792, 7019, - 6793, 6794, 6797, 6801, 6803, 6806, 6807, 6799, 6809, 6810, - 6820, 6813, 6817, 6821, 6823, 6825, 6826, 7019, 6832, 6827, - 7019, 6829, 6833, 6835, 6836, 6839, 7019, 6844, 6837, 6841, - 6847, 6850, 6851, 7019, 6853, 6862, 6857, 7019, 6863, 7019, - 7019, 6865, 6859, 6866, 6872, 6874, 7019, 7019, 7019, 6899, + 6726, 7073, 6727, 7073, 6729, 7073, 7073, 6732, 6733, 6735, + 6736, 6745, 6746, 6737, 6741, 6744, 6748, 6750, 7073, 6757, + 7073, 7073, 7073, 6752, 6758, 7073, 6760, 6761, 7073, 6759, + 6762, 6764, 6768, 6769, 6766, 6770, 6771, 6787, 7073, 7073, + 6772, 6777, 6780, 6789, 6791, 6790, 6793, 6797, 6798, 6800, + 6801, 6810, 7073, 6807, 6808, 6812, 7073, 6814, 6809, 6815, + 6816, 6817, 6825, 6821, 6824, 7073, 6826, 7073, 6830, 6832, + 6833, 6823, 6831, 6834, 6845, 6843, 6839, 7073, 6849, 6853, + 6851, 6855, 6857, 6859, 6860, 6861, 6863, 6866, 6872, 6869, + 6876, 6877, 6873, 6881, 6878, 7073, 6888, 6879, 7073, 6885, - 6906, 6913, 6920, 6927, 6934, 6941, 88, 6948, 6955, 6962, - 6969, 6976, 6983, 6990, 6997, 7004, 7011 + 6889, 6882, 6891, 6895, 7073, 6900, 6893, 6902, 6903, 6906, + 6907, 7073, 6909, 6916, 6911, 7073, 6917, 7073, 7073, 6919, + 6913, 6920, 6926, 6928, 7073, 7073, 7073, 6953, 6960, 6967, + 6974, 6981, 6988, 6995, 88, 7002, 7009, 7016, 7023, 7030, + 7037, 7044, 7051, 7058, 7065 } ; -static const flex_int16_t yy_def[3618] = +static const flex_int16_t yy_def[3646] = { 0, - 3599, 1, 3600, 3600, 3601, 3601, 3602, 3602, 3603, 3603, - 3604, 3604, 3605, 3605, 3606, 3606, 3599, 3607, 3599, 3599, - 3599, 3599, 3608, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3609, 3599, 3599, 3599, - 3609, 3610, 3599, 3599, 3599, 3610, 3611, 3599, 3599, 3599, - 3599, 3611, 3612, 3599, 3599, 3599, 3612, 3613, 3599, 3614, - 3599, 3613, 3613, 3615, 3599, 3599, 3599, 3599, 3615, 3616, - 3599, 3599, 3599, 3616, 3607, 3607, 3599, 3617, 3608, 3617, - 3608, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3627, 1, 3628, 3628, 3629, 3629, 3630, 3630, 3631, 3631, + 3632, 3632, 3633, 3633, 3634, 3634, 3627, 3635, 3627, 3627, + 3627, 3627, 3636, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3637, 3627, 3627, 3627, + 3637, 3638, 3627, 3627, 3627, 3638, 3639, 3627, 3627, 3627, + 3627, 3639, 3640, 3627, 3627, 3627, 3640, 3641, 3627, 3642, + 3627, 3641, 3641, 3643, 3627, 3627, 3627, 3627, 3643, 3644, + 3627, 3627, 3627, 3644, 3635, 3635, 3627, 3645, 3636, 3645, + 3636, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3609, - 3609, 3610, 3610, 3611, 3611, 3599, 3612, 3612, 3613, 3613, - 3614, 3614, 3613, 3615, 3615, 3599, 3616, 3616, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3637, + 3637, 3638, 3638, 3639, 3639, 3627, 3640, 3640, 3641, 3641, + 3642, 3642, 3641, 3643, 3643, 3627, 3644, 3644, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3613, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3641, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3613, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3641, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3627, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, - 3607, 3613, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3641, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3613, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3599, 3599, 3607, 3599, 3599, - 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3641, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3627, 3627, 3635, 3627, 3627, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3613, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3599, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3641, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3599, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3599, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3627, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3599, 3607, 3607, 3607, 3607, 3607, 3613, 3613, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3627, 3635, 3635, 3635, 3635, 3635, 3641, 3641, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3613, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3641, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3599, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3613, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3627, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3641, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3599, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, - 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3627, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3599, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, - 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3627, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3627, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, - 3607, 3613, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3641, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3599, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3627, 3635, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, - 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3613, - 3607, 3599, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3599, 3607, - 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3599, 3607, 3599, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3599, 3607, 3607, 3607, + 3635, 3635, 3627, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3641, 3635, 3627, 3635, 3635, 3635, + 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3635, 3627, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3627, 3627, 3635, 3627, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3599, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3599, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3627, 3635, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3599, 3599, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, - 3607, 3607, 3613, 3607, 3607, 3607, 3607, 3607, 3607, 3599, - 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3599, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3599, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, + 3627, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3641, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3627, 3635, 3627, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, - 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3613, 3607, - 3599, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3627, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3641, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3599, 3607, 3599, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3599, 3607, 3607, 3607, 3607, 3607, 3599, - 3599, 3607, 3599, 3607, 3599, 3607, 3607, 3599, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3599, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3627, 3627, + 3635, 3635, 3635, 3635, 3635, 3627, 3627, 3635, 3627, 3635, + 3627, 3635, 3635, 3627, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3627, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3613, 3607, 3607, 3607, - 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3599, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3599, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3641, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3627, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3599, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3599, 3599, 3599, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, - 3607, 3599, 3599, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3613, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3599, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3627, 3627, 3627, 3627, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3627, 3627, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3599, - 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3599, 3607, 3607, 3607, 3599, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3599, 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3599, - 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3607, 3599, 3607, 3607, 3607, 3607, 3599, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3599, 3607, 3607, + 3635, 3641, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3627, 3635, + 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3627, 3635, 3635, 3635, 3627, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3627, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3599, 3599, 3607, 3607, 3613, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3599, 3607, 3599, 3607, 3607, - 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3627, 3635, + 3627, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3627, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3627, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3627, 3627, 3635, 3635, 3641, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3627, 3635, 3627, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3599, 3599, - 3599, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3599, - 3607, 3607, 3607, 3599, 3599, 3599, 3607, 3607, 3607, 3599, - 3607, 3607, 3599, 3607, 3599, 3607, 3599, 3607, 3607, 3607, - 3607, 3599, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3599, 3607, 3599, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3599, 3607, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3635, 3627, 3627, 3627, 3635, 3635, 3635, 3627, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3627, 3627, 3627, + 3635, 3635, 3635, 3627, 3635, 3635, 3627, 3635, 3627, 3635, + 3627, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, + 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, - 3607, 3607, 3599, 3607, 3599, 3607, 3599, 3607, 3607, 3607, - 3607, 3607, 3599, 3599, 3607, 3607, 3607, 3607, 3607, 3607, - 3599, 3607, 3607, 3607, 3607, 3599, 3607, 3599, 3607, 3607, - 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3599, 3599, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3599, 3607, 3607, 3599, 3607, 3599, 3607, + 3635, 3627, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3627, 3635, 3635, 3627, 3635, 3635, 3627, 3635, + 3627, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3627, 3627, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3627, 3635, 3627, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3627, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, - 3599, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, - 3607, 3599, 3599, 3607, 3607, 3599, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, 3599, 3607, - 3607, 3607, 3599, 3599, 3599, 3607, 3607, 3607, 3599, 3599, - 3599, 3599, 3607, 3607, 3607, 3607, 3599, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, - 3607, 3599, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3599, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3627, + 3635, 3635, 3627, 3635, 3635, 3627, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3627, 3627, + 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3627, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3627, + 3627, 3627, 3635, 3635, 3635, 3627, 3627, 3627, 3627, 3635, - 3599, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3599, 3607, 3599, 3607, 3607, 3599, 3607, - 3599, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3607, - 3607, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3599, 3599, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3599, 3599, - 3607, 3607, 3599, 3599, 3607, 3607, 3599, 3599, 3599, 3599, + 3635, 3635, 3635, 3627, 3635, 3627, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3627, + 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3627, 3635, + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3627, 3627, 3635, 3627, 3635, 3635, 3627, 3635, 3627, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, 3627, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3627, 3627, - 3599, 3599, 3599, 3599, 3607, 3607, 3599, 3599, 3607, 3607, - 3607, 3599, 3607, 3599, 3607, 3607, 3607, 3607, 3599, 3607, - 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3599, 3599, 3599, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, - 3607, 3607, 3607, 3599, 3607, 3599, 3607, 3599, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3599, 3607, 3599, 3599, 3599, 3607, 3607, 3599, 3607, 3607, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3627, 3635, 3635, 3627, 3627, 3635, 3635, + 3627, 3627, 3635, 3635, 3627, 3627, 3627, 3627, 3627, 3627, + 3627, 3627, 3635, 3635, 3627, 3627, 3635, 3635, 3635, 3627, + 3635, 3627, 3635, 3635, 3635, 3635, 3627, 3635, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3627, 3627, 3627, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, - 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3599, 3599, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3599, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3599, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, - 3599, 3607, 3607, 3607, 3607, 3607, 3599, 3607, 3607, 3607, - 3607, 3607, 3607, 3599, 3607, 3607, 3607, 3599, 3607, 3599, - 3599, 3607, 3607, 3607, 3607, 3607, 3599, 3599, 0, 3599, + 3635, 3627, 3635, 3627, 3635, 3627, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, + 3627, 3627, 3627, 3635, 3635, 3627, 3635, 3635, 3627, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3627, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3627, 3635, 3635, 3635, 3627, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, 3635, + 3635, 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3627, 3635, - 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, - 3599, 3599, 3599, 3599, 3599, 3599, 3599 + 3635, 3635, 3635, 3635, 3627, 3635, 3635, 3635, 3635, 3635, + 3635, 3627, 3635, 3635, 3635, 3627, 3635, 3627, 3627, 3635, + 3635, 3635, 3635, 3635, 3627, 3627, 0, 3627, 3627, 3627, + 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, + 3627, 3627, 3627, 3627, 3627 } ; -static const flex_int16_t yy_nxt[7060] = +static const flex_int16_t yy_nxt[7114] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1948,446 +1957,453 @@ static const flex_int16_t yy_nxt[7060] = 86, 1654, 1658, 86, 86, 86, 1657, 86, 1664, 1665, 86, 86, 1659, 86, 1663, 86, 1670, 1666, 1671, 1667, 1669, 1672, 86, 86, 86, 86, 1673, 86, 86, 1674, - 1675, 86, 86, 86, 1668, 86, 1676, 86, 86, 86, + 1677, 86, 86, 86, 1668, 86, 1678, 86, 86, 86, - 86, 1678, 1677, 86, 1683, 86, 1682, 1679, 86, 86, - 1686, 1680, 86, 1681, 86, 165, 1685, 86, 1694, 1689, - 1684, 1691, 86, 1687, 1690, 86, 1692, 86, 86, 86, - 86, 1688, 86, 86, 1693, 1698, 86, 1702, 1697, 86, - 86, 1695, 86, 86, 1703, 86, 1706, 1696, 86, 86, - 1709, 1699, 86, 1700, 1701, 1708, 86, 86, 86, 86, - 1704, 86, 86, 86, 1707, 86, 86, 1710, 1705, 86, - 1718, 86, 86, 86, 1719, 163, 1711, 1712, 1713, 1715, - 1714, 1717, 1720, 1716, 86, 1722, 1723, 86, 1724, 86, - 86, 1721, 86, 86, 86, 1725, 1726, 1727, 86, 86, + 86, 1680, 1679, 86, 1685, 86, 1684, 1681, 1675, 86, + 1676, 1682, 86, 1683, 86, 86, 1691, 1687, 86, 1688, + 1686, 1692, 86, 1693, 1690, 86, 1689, 86, 1694, 86, + 86, 1696, 86, 86, 86, 1695, 1699, 1697, 1700, 86, + 1704, 86, 86, 86, 1698, 86, 86, 1705, 86, 1708, + 86, 1701, 1711, 86, 1702, 86, 1710, 1703, 86, 86, + 86, 1706, 86, 86, 1709, 86, 86, 1712, 86, 1707, + 86, 1720, 1713, 86, 86, 86, 1721, 1717, 1714, 1715, + 86, 1716, 86, 1719, 1728, 1722, 1718, 1724, 1725, 86, + 1726, 86, 86, 1723, 86, 1729, 86, 1727, 86, 86, - 1730, 86, 1728, 86, 1731, 86, 86, 1729, 1734, 1738, - 86, 86, 1740, 86, 1735, 1743, 1739, 1732, 86, 1733, - 86, 86, 1737, 86, 86, 1736, 86, 1745, 1741, 1744, - 1746, 86, 86, 1742, 86, 86, 1751, 1752, 86, 86, - 86, 86, 86, 1749, 86, 1756, 1755, 1757, 86, 86, - 1748, 1747, 1760, 86, 86, 1750, 86, 1753, 1759, 86, - 86, 1754, 1761, 86, 86, 86, 86, 1765, 1758, 86, - 1762, 86, 1763, 86, 1770, 1768, 1764, 86, 86, 86, - 86, 86, 1776, 86, 1777, 1774, 1766, 86, 86, 1767, - 86, 1769, 1771, 86, 86, 1775, 1778, 86, 1773, 1772, + 1732, 86, 86, 1730, 1733, 86, 86, 1736, 86, 1731, + 1740, 86, 1742, 1741, 1737, 86, 86, 1734, 86, 1735, + 1745, 86, 1739, 86, 86, 1738, 86, 86, 1746, 1744, + 1743, 1747, 86, 86, 86, 86, 1748, 86, 1753, 1754, + 86, 1749, 1750, 1751, 86, 86, 86, 1758, 1759, 86, + 1757, 1761, 86, 1752, 86, 1755, 1756, 86, 1763, 86, + 1762, 86, 86, 86, 86, 86, 86, 1767, 86, 1760, + 86, 86, 1772, 86, 86, 1770, 86, 1764, 1765, 1766, + 86, 1778, 86, 86, 1779, 1776, 1768, 86, 1769, 1773, + 1771, 86, 86, 86, 1774, 1775, 1777, 86, 86, 86, - 86, 1783, 86, 86, 86, 86, 1788, 86, 1779, 1780, - 1786, 86, 86, 86, 1791, 1789, 1784, 1782, 1781, 1787, - 86, 1785, 86, 86, 86, 86, 86, 86, 1795, 1798, - 86, 1797, 1790, 86, 1794, 170, 1799, 86, 86, 86, - 1800, 1793, 1792, 1801, 1796, 86, 86, 86, 86, 1809, - 86, 1802, 86, 1804, 86, 1803, 86, 1810, 1813, 86, - 1807, 1815, 86, 86, 1805, 1806, 86, 86, 1817, 1819, - 1811, 1814, 1808, 86, 1812, 86, 1821, 86, 1818, 1823, - 86, 86, 86, 1816, 86, 86, 86, 1820, 86, 86, - 1825, 1822, 86, 1826, 86, 1828, 86, 1829, 86, 86, + 1780, 86, 1785, 86, 86, 86, 1790, 86, 1782, 1788, + 1781, 86, 86, 1786, 86, 1791, 86, 1793, 1784, 86, + 1789, 1787, 1783, 86, 86, 86, 86, 170, 1797, 1800, + 86, 1799, 1792, 86, 1796, 86, 1794, 86, 1795, 86, + 1801, 86, 86, 1804, 1798, 86, 1802, 1803, 86, 86, + 1811, 86, 86, 1805, 86, 1806, 1812, 86, 1807, 1808, + 1815, 86, 1809, 86, 86, 86, 1816, 1819, 1817, 1821, + 1810, 86, 1813, 86, 1814, 86, 1820, 1823, 86, 1825, + 86, 86, 86, 86, 1818, 86, 86, 86, 1827, 86, + 1828, 86, 1824, 1822, 86, 1830, 86, 1831, 86, 86, - 1824, 1833, 86, 1830, 1831, 86, 1834, 1832, 86, 1827, - 1841, 86, 86, 86, 1836, 1838, 86, 1835, 1839, 86, - 86, 86, 1845, 1843, 1842, 86, 1846, 86, 1837, 86, - 1840, 1851, 1848, 1849, 86, 1852, 1847, 86, 86, 1844, - 1858, 86, 1856, 1853, 86, 1854, 86, 1855, 86, 1850, - 86, 86, 86, 86, 86, 1857, 1863, 1862, 1864, 1865, - 86, 86, 86, 86, 86, 86, 1866, 86, 1867, 1859, - 86, 1860, 1869, 1861, 86, 1870, 86, 86, 86, 86, - 86, 1872, 1871, 1868, 86, 86, 86, 86, 86, 86, - 1873, 1882, 1881, 86, 1876, 86, 86, 1874, 1877, 1875, + 1826, 1832, 1835, 86, 1836, 86, 1834, 1833, 86, 86, + 1829, 86, 1840, 1843, 1845, 1841, 1837, 1838, 86, 86, + 86, 86, 86, 1844, 1851, 86, 1848, 1842, 1839, 1847, + 1846, 86, 86, 1853, 1850, 1854, 86, 86, 86, 86, + 86, 86, 1855, 86, 1856, 86, 1857, 1849, 1858, 1860, + 86, 86, 86, 86, 86, 1859, 1852, 1862, 1861, 86, + 1865, 1866, 1864, 1867, 86, 86, 86, 86, 1869, 86, + 1868, 1863, 86, 1875, 86, 1870, 86, 1871, 1872, 86, + 86, 1873, 1874, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 1884, 1883, 86, 86, 86, 86, 1878, 1876, - 1878, 86, 86, 1879, 86, 1885, 86, 1888, 1884, 1887, - 86, 86, 1880, 86, 1883, 86, 1886, 1894, 86, 86, - 1892, 86, 1889, 86, 86, 1898, 1890, 86, 1896, 86, - 86, 1891, 86, 1897, 86, 86, 1893, 86, 86, 1895, - 86, 86, 1899, 1900, 1903, 1905, 86, 161, 86, 1904, - 1902, 1912, 86, 1908, 1901, 1906, 1909, 86, 1907, 1913, - 86, 1910, 1914, 86, 1915, 1911, 86, 1918, 86, 1917, - 86, 86, 86, 86, 86, 1916, 1922, 1921, 86, 1923, - 86, 86, 86, 1919, 86, 86, 86, 86, 1931, 86, - 1920, 1926, 1933, 1930, 86, 1928, 1925, 1924, 1929, 86, + 1879, 1880, 1886, 1877, 1889, 1890, 1881, 86, 1887, 1888, + 1882, 86, 86, 1885, 86, 86, 86, 86, 1897, 1895, + 86, 86, 1899, 86, 86, 86, 86, 1891, 1892, 1894, + 1898, 1901, 86, 1903, 1893, 86, 1902, 1896, 86, 1905, + 1900, 86, 86, 86, 86, 86, 86, 86, 86, 1936, + 1904, 1908, 1910, 1911, 86, 86, 1912, 1917, 1909, 1907, + 86, 1914, 1906, 1913, 1918, 86, 1915, 1919, 86, 86, + 86, 86, 1920, 1916, 1922, 1923, 86, 86, 86, 86, + 86, 1927, 86, 1924, 1926, 1928, 86, 1921, 86, 86, + 86, 86, 1937, 86, 86, 86, 1925, 1931, 86, 1935, - 1927, 1932, 86, 86, 86, 1938, 86, 1934, 1939, 86, - 86, 1941, 1935, 1940, 86, 86, 86, 1945, 1937, 86, - 86, 1936, 1942, 86, 1948, 86, 1950, 86, 1949, 1947, - 86, 86, 86, 1944, 1943, 1946, 1952, 1954, 86, 1953, - 1951, 1958, 86, 86, 86, 86, 1959, 86, 1955, 86, - 1963, 86, 1956, 86, 1965, 86, 1957, 1960, 1969, 1961, - 86, 1967, 86, 1964, 1962, 1968, 86, 1971, 86, 1966, - 86, 86, 1975, 86, 1972, 1973, 86, 1979, 86, 86, - 1970, 86, 1977, 86, 1974, 86, 86, 86, 1978, 1976, - 86, 86, 86, 1980, 86, 86, 1985, 86, 1984, 86, + 1933, 1929, 1930, 1934, 86, 1938, 86, 86, 1932, 86, + 1944, 86, 86, 1941, 1939, 1945, 86, 1940, 86, 86, + 1942, 1947, 86, 1943, 1946, 86, 1950, 86, 1953, 86, + 1949, 1952, 1954, 86, 1951, 86, 1948, 86, 1955, 86, + 1959, 86, 1957, 1963, 86, 1958, 86, 1960, 1964, 86, + 86, 86, 1956, 86, 165, 86, 1968, 1970, 1965, 1962, + 1961, 1966, 1973, 86, 1972, 86, 86, 1969, 86, 86, + 1976, 1974, 1967, 1971, 86, 86, 86, 86, 1980, 86, + 1977, 1984, 86, 1975, 86, 86, 86, 86, 1982, 86, + 1985, 1979, 1981, 86, 1983, 1978, 86, 86, 86, 163, - 1981, 1986, 86, 86, 1988, 1982, 1983, 1987, 1992, 86, - 1989, 1994, 1995, 1990, 86, 86, 1991, 86, 86, 86, - 1998, 86, 1996, 1999, 86, 2002, 86, 1997, 86, 2004, - 1993, 86, 86, 2000, 86, 86, 2008, 86, 86, 86, - 86, 2003, 86, 2001, 2010, 86, 86, 2011, 2006, 86, - 2013, 2014, 2007, 2005, 86, 86, 86, 86, 2009, 2012, - 2019, 170, 86, 2015, 86, 2018, 2017, 2022, 86, 86, - 86, 86, 2016, 2020, 2026, 86, 86, 2021, 86, 86, - 86, 2024, 86, 2023, 86, 2027, 2028, 2033, 2029, 2025, - 2030, 86, 86, 86, 2037, 86, 2034, 86, 2036, 2031, + 86, 86, 1990, 86, 1989, 1986, 86, 1991, 1987, 86, + 1993, 1999, 1988, 1992, 1997, 86, 1994, 86, 2000, 86, + 1995, 86, 2001, 1996, 86, 2003, 86, 86, 86, 86, + 2007, 86, 86, 2009, 2002, 86, 1998, 86, 86, 86, + 2013, 86, 86, 86, 86, 2008, 2005, 2004, 2006, 2016, + 86, 86, 86, 2011, 2015, 86, 2012, 2010, 86, 86, + 2018, 2020, 2014, 2017, 2019, 86, 86, 170, 2024, 2022, + 86, 2027, 86, 86, 2021, 2023, 86, 86, 86, 2025, + 2031, 86, 86, 86, 86, 2026, 86, 86, 2029, 2033, + 2034, 86, 2028, 2038, 86, 86, 2030, 2032, 2035, 86, - 2038, 86, 2032, 2039, 86, 86, 2040, 2042, 86, 2035, - 2043, 86, 86, 86, 2041, 86, 86, 2045, 86, 2046, - 2044, 86, 86, 86, 86, 86, 86, 2051, 86, 2052, - 86, 86, 2047, 86, 2053, 2056, 86, 86, 2054, 2049, - 2048, 2050, 2057, 2055, 86, 86, 2064, 86, 2065, 2060, - 2062, 2059, 2063, 86, 86, 2058, 2061, 2066, 86, 86, - 86, 86, 86, 86, 2072, 86, 86, 86, 2075, 2067, - 2076, 86, 2077, 86, 2079, 86, 2070, 2068, 2069, 86, - 2073, 2071, 2074, 2078, 86, 2080, 2081, 86, 2084, 86, - 86, 2086, 86, 2088, 2085, 2087, 86, 86, 2090, 86, + 86, 2041, 2050, 2036, 2042, 86, 2039, 2037, 86, 2040, + 86, 2043, 2044, 86, 86, 2045, 2047, 2048, 86, 86, + 86, 86, 86, 2046, 2051, 86, 86, 86, 86, 86, + 86, 2049, 86, 2056, 2057, 86, 86, 2061, 86, 2058, + 2052, 86, 86, 86, 2054, 2055, 2065, 2053, 2059, 86, + 2060, 2062, 86, 2066, 2067, 2069, 86, 2070, 2064, 86, + 86, 86, 2073, 86, 2063, 86, 86, 2068, 86, 86, + 2077, 86, 2080, 2081, 86, 86, 2072, 2075, 2082, 86, + 2071, 2084, 86, 2078, 2074, 2079, 2076, 86, 2085, 86, + 86, 86, 2089, 86, 86, 2083, 2091, 86, 2090, 2093, - 2082, 86, 86, 86, 86, 86, 2091, 86, 2083, 86, - 2093, 2094, 86, 86, 2089, 2097, 86, 86, 2096, 86, - 2098, 86, 2100, 2095, 2101, 86, 2102, 2092, 86, 2104, - 2099, 86, 2112, 2103, 86, 86, 86, 86, 86, 86, - 86, 2109, 2114, 2105, 2106, 2107, 86, 2115, 86, 86, - 2108, 2118, 2110, 2116, 86, 2117, 2111, 2113, 2121, 86, - 86, 2120, 86, 86, 86, 2119, 2125, 86, 2122, 86, - 2127, 86, 86, 86, 2130, 2131, 86, 86, 2133, 86, - 2123, 86, 86, 2124, 86, 86, 86, 2140, 86, 2126, - 2138, 2128, 86, 2135, 2129, 2136, 86, 2132, 86, 86, + 2092, 86, 86, 2095, 86, 86, 2099, 86, 86, 86, + 2086, 2087, 2088, 2096, 86, 86, 86, 2098, 86, 2094, + 86, 2101, 2102, 86, 86, 86, 86, 86, 2107, 2097, + 2105, 2106, 86, 2103, 2109, 2100, 86, 2108, 86, 86, + 86, 2104, 86, 86, 2114, 2117, 86, 86, 2110, 2111, + 2112, 86, 2121, 2120, 86, 2113, 2115, 86, 86, 2116, + 2122, 86, 2118, 2119, 86, 2123, 86, 86, 2124, 2126, + 2129, 86, 2125, 2128, 86, 2127, 86, 2133, 86, 86, + 2130, 2131, 86, 2135, 86, 86, 86, 2138, 2139, 86, + 86, 2141, 86, 86, 86, 2132, 86, 86, 86, 2148, - 86, 2139, 86, 2137, 86, 2143, 2134, 86, 2146, 2144, - 86, 2149, 2151, 2141, 2142, 86, 86, 86, 86, 2154, - 2150, 86, 86, 2155, 86, 86, 2148, 2157, 2145, 2153, - 2147, 2158, 86, 86, 86, 86, 2152, 86, 86, 2159, - 86, 2163, 86, 2156, 2160, 86, 86, 86, 2165, 86, - 2168, 86, 2169, 86, 2164, 2170, 86, 2161, 86, 2162, - 2173, 86, 86, 86, 2166, 86, 2178, 86, 2172, 86, - 2177, 2171, 86, 2167, 86, 86, 2174, 86, 86, 2184, - 86, 2183, 2175, 86, 86, 2176, 2185, 2187, 86, 2181, - 86, 2180, 2186, 2179, 2182, 86, 2191, 86, 86, 2188, + 86, 86, 2146, 2143, 2136, 2134, 2144, 2137, 86, 86, + 2140, 86, 86, 86, 2147, 86, 2154, 2145, 2142, 2151, + 2152, 86, 2149, 2157, 2150, 86, 86, 2159, 86, 86, + 86, 2158, 2162, 86, 86, 86, 2163, 2161, 86, 2153, + 2165, 2156, 2166, 86, 86, 86, 86, 2155, 2160, 2167, + 86, 86, 86, 86, 2164, 2171, 86, 86, 86, 2168, + 2173, 86, 2176, 2177, 86, 2169, 2178, 86, 2172, 86, + 2170, 2174, 86, 86, 86, 86, 86, 2181, 86, 2180, + 86, 2185, 2186, 86, 2175, 86, 86, 2179, 86, 86, + 2192, 161, 2191, 2182, 2183, 86, 86, 2184, 86, 2188, - 86, 2189, 86, 86, 86, 2192, 2190, 2195, 86, 2199, - 86, 86, 2193, 86, 86, 86, 2204, 86, 2202, 2194, - 86, 2205, 86, 2196, 2197, 2201, 2206, 2203, 2198, 2200, - 86, 86, 86, 86, 2212, 86, 2213, 86, 2211, 2207, - 2214, 86, 2208, 2216, 2217, 2215, 86, 2209, 86, 86, - 86, 86, 2210, 2219, 2221, 86, 86, 86, 86, 2223, - 86, 86, 2225, 2220, 2227, 86, 2229, 2218, 2222, 2224, - 86, 86, 86, 2230, 86, 86, 170, 86, 86, 86, - 86, 2233, 2243, 2226, 86, 2237, 86, 2228, 86, 2234, - 2231, 2235, 2244, 86, 86, 2232, 2238, 2236, 86, 2239, + 2189, 2193, 2187, 2195, 86, 2190, 86, 2194, 86, 86, + 2196, 2199, 86, 86, 86, 86, 86, 2200, 86, 2197, + 2203, 2207, 86, 2201, 2198, 86, 86, 86, 86, 86, + 2210, 86, 2202, 86, 2204, 2214, 2205, 2215, 2206, 86, + 2208, 2209, 2211, 2212, 86, 86, 2213, 86, 2220, 86, + 2216, 86, 2219, 2218, 2222, 2217, 2221, 86, 2224, 2223, + 86, 2225, 86, 86, 86, 2229, 86, 86, 2227, 86, + 86, 86, 86, 2231, 2228, 86, 2233, 2226, 2230, 2235, + 86, 2237, 2232, 2238, 86, 86, 86, 86, 86, 170, + 86, 86, 86, 86, 2241, 86, 86, 2234, 2245, 2246, - 2240, 86, 2241, 86, 2242, 86, 86, 86, 86, 86, - 2245, 86, 2246, 2248, 2249, 86, 2247, 86, 2251, 86, - 86, 2250, 2255, 86, 86, 2254, 86, 2252, 86, 86, - 86, 2253, 86, 2256, 2257, 2258, 86, 2260, 86, 2259, - 86, 2262, 86, 2267, 86, 86, 2261, 2264, 2265, 86, - 2266, 86, 86, 86, 86, 2272, 86, 86, 2263, 86, - 2268, 2269, 86, 86, 2278, 86, 2273, 2271, 2275, 2270, - 86, 2276, 86, 86, 2274, 86, 86, 2277, 2282, 2279, - 2284, 86, 86, 86, 2280, 2285, 2281, 86, 2283, 86, - 2291, 86, 2286, 86, 86, 2293, 86, 86, 86, 2287, + 86, 2247, 2236, 2242, 2243, 2239, 2248, 86, 2240, 2244, + 2249, 86, 2251, 86, 86, 2250, 86, 86, 86, 2252, + 2254, 2253, 86, 86, 86, 86, 2255, 2256, 2257, 86, + 2259, 86, 86, 2263, 86, 2258, 2260, 2262, 86, 86, + 86, 2268, 86, 2261, 2265, 2266, 86, 2264, 86, 2267, + 86, 86, 86, 86, 86, 86, 2275, 2273, 86, 2270, + 2274, 86, 86, 86, 86, 2280, 86, 2277, 2269, 2271, + 86, 2272, 2276, 86, 86, 86, 2281, 2279, 86, 2278, + 86, 2286, 2283, 2284, 2282, 86, 86, 2287, 86, 86, + 2285, 2290, 2292, 86, 86, 86, 2289, 2288, 2293, 86, - 2294, 2296, 86, 2288, 2289, 2290, 86, 2298, 86, 86, - 2292, 86, 2299, 86, 2297, 2295, 2302, 86, 86, 2301, - 86, 86, 86, 86, 2307, 2304, 86, 2308, 86, 86, - 86, 2303, 2300, 86, 86, 2309, 86, 86, 86, 86, - 3599, 2306, 2305, 86, 2313, 2311, 2312, 86, 2314, 2310, - 3599, 86, 2316, 2317, 86, 2322, 2315, 2318, 2320, 2323, - 86, 86, 2321, 86, 2326, 2324, 86, 86, 2327, 86, - 2319, 2330, 2329, 86, 2325, 86, 86, 86, 86, 86, - 2332, 86, 86, 2333, 2338, 86, 2328, 2334, 2336, 86, - 2340, 2331, 86, 2337, 2341, 2335, 86, 2343, 86, 86, + 86, 2291, 86, 2299, 86, 2294, 86, 2301, 86, 86, + 2295, 86, 86, 2302, 2298, 2296, 86, 2297, 2304, 86, + 2305, 2300, 2306, 86, 86, 2307, 2303, 86, 2310, 86, + 86, 86, 86, 2309, 86, 86, 2315, 2312, 86, 2308, + 86, 2316, 86, 2311, 86, 86, 86, 86, 86, 2317, + 86, 86, 2314, 2313, 2319, 86, 2320, 2324, 2322, 2318, + 2321, 2326, 86, 86, 2329, 2325, 2327, 86, 2330, 86, + 86, 2335, 86, 2323, 2328, 2332, 86, 86, 86, 86, + 2338, 2331, 2334, 2339, 86, 86, 2333, 2336, 86, 2341, + 2342, 86, 86, 86, 86, 86, 2337, 2344, 2345, 2340, - 86, 86, 86, 2342, 2339, 2345, 86, 2347, 2346, 86, - 86, 86, 2352, 86, 2348, 86, 2356, 86, 86, 2349, - 2353, 2357, 86, 86, 86, 2344, 2354, 86, 2350, 2355, - 86, 2351, 2358, 2361, 86, 86, 2362, 86, 86, 86, - 2366, 2360, 2359, 86, 2367, 2364, 86, 86, 2363, 2368, - 86, 86, 2372, 86, 86, 2374, 86, 2375, 2365, 2370, - 86, 2369, 2373, 86, 86, 86, 86, 2371, 2377, 2376, - 2379, 86, 86, 2382, 2380, 2384, 86, 2381, 86, 86, - 2385, 86, 2378, 86, 86, 86, 86, 2387, 2386, 2390, - 2391, 2388, 86, 2383, 86, 2389, 2395, 86, 86, 2392, + 86, 86, 2346, 2343, 2348, 86, 86, 2350, 2352, 86, + 86, 2353, 2347, 2349, 86, 2355, 86, 86, 86, 2351, + 2354, 86, 2357, 2358, 86, 86, 86, 86, 2364, 2359, + 2360, 86, 86, 86, 86, 2368, 2356, 2365, 2363, 86, + 2369, 86, 86, 2367, 2361, 2362, 2366, 2370, 86, 2373, + 86, 86, 2374, 86, 86, 86, 86, 2378, 2380, 86, + 86, 2371, 2372, 86, 2375, 2379, 86, 2384, 86, 2376, + 86, 86, 86, 2386, 2382, 2377, 86, 2381, 86, 2387, + 86, 86, 2383, 2385, 2391, 2388, 2389, 86, 2390, 86, + 86, 2394, 2396, 86, 86, 86, 2392, 2397, 86, 2393, - 86, 86, 86, 2394, 86, 86, 86, 86, 86, 86, - 2403, 2407, 2393, 86, 86, 86, 2396, 86, 2397, 2398, - 2399, 2401, 2408, 2402, 2409, 2404, 2405, 2400, 86, 2406, - 86, 86, 86, 86, 86, 86, 2411, 2413, 86, 2419, - 86, 86, 2421, 86, 86, 86, 2410, 2418, 2415, 2412, - 2420, 86, 2416, 86, 86, 2414, 2425, 2424, 86, 2428, - 2417, 170, 2422, 2430, 2423, 86, 2432, 2426, 2431, 86, - 2433, 86, 86, 86, 2434, 86, 86, 2427, 2437, 86, - 86, 2435, 86, 2429, 86, 2438, 2442, 86, 86, 2441, - 86, 2443, 2446, 86, 2444, 2436, 86, 2452, 86, 2439, + 86, 86, 86, 2399, 86, 2398, 2402, 2400, 86, 2403, + 86, 2395, 2401, 2407, 86, 2404, 86, 86, 86, 2406, + 86, 86, 86, 86, 86, 86, 86, 2415, 2405, 86, + 86, 2419, 86, 86, 2408, 2409, 2410, 2411, 2413, 86, + 2414, 2416, 2417, 2418, 2420, 2412, 86, 86, 86, 86, + 2422, 86, 86, 2423, 2425, 2421, 2426, 86, 86, 2431, + 86, 86, 2433, 86, 2427, 86, 2424, 2430, 86, 2428, + 2432, 86, 2436, 86, 86, 2434, 2437, 2429, 170, 2440, + 86, 86, 2442, 2444, 2435, 86, 2438, 2443, 86, 86, + 2445, 86, 2456, 2439, 2446, 86, 86, 2449, 86, 86, - 86, 2447, 86, 2448, 2449, 86, 2445, 86, 2451, 86, - 2440, 86, 2450, 2454, 86, 86, 86, 86, 86, 86, - 2453, 2457, 86, 86, 2460, 86, 86, 86, 2464, 2466, - 86, 2455, 2459, 86, 86, 86, 86, 2467, 2462, 2469, - 2456, 2458, 86, 2461, 86, 86, 2463, 86, 86, 2465, - 2468, 86, 86, 2475, 2470, 2478, 86, 2473, 86, 86, - 86, 86, 2472, 86, 2476, 86, 2474, 2479, 2471, 86, - 2477, 86, 86, 86, 86, 2489, 86, 2480, 86, 2481, - 2482, 86, 86, 86, 2487, 2494, 2483, 2491, 2485, 2484, - 86, 2490, 2486, 86, 2488, 2497, 2492, 86, 2495, 2493, + 2441, 2448, 86, 2447, 86, 2450, 2454, 86, 2453, 86, + 2455, 2458, 86, 86, 86, 2460, 2464, 86, 2459, 2451, + 2457, 2461, 86, 86, 86, 2463, 86, 86, 2462, 86, + 2452, 86, 86, 2466, 86, 86, 86, 2469, 86, 86, + 86, 2472, 86, 86, 2465, 86, 2467, 2476, 2478, 86, + 2471, 86, 2468, 86, 86, 2474, 2473, 2470, 2479, 86, + 2475, 86, 86, 2482, 2481, 2477, 2480, 86, 86, 86, + 86, 2490, 86, 2485, 2487, 86, 86, 86, 86, 2483, + 2484, 2488, 86, 2491, 86, 86, 2486, 86, 2489, 86, + 86, 86, 2501, 86, 86, 2492, 2493, 2494, 86, 2499, - 2496, 86, 86, 86, 86, 2498, 86, 86, 2503, 86, - 2499, 2504, 86, 86, 3599, 2505, 2506, 86, 2501, 2502, - 86, 86, 2509, 86, 2507, 86, 2510, 2500, 2513, 86, - 2514, 86, 2511, 2508, 86, 2512, 86, 86, 86, 2515, - 86, 2516, 2520, 86, 2521, 86, 86, 2523, 86, 86, - 2525, 86, 2519, 86, 86, 2528, 86, 2517, 2518, 2527, - 2529, 86, 86, 86, 86, 2522, 86, 2524, 2526, 86, - 86, 86, 2531, 2536, 86, 2535, 2530, 2538, 86, 86, - 2533, 2532, 86, 86, 86, 2543, 86, 2540, 2534, 2541, - 2537, 86, 2545, 86, 2542, 86, 86, 2539, 2548, 86, + 86, 86, 86, 86, 2497, 2495, 2502, 2503, 2496, 2505, + 2498, 2500, 86, 86, 2504, 2506, 2508, 86, 86, 86, + 86, 2507, 2510, 2509, 86, 2511, 2512, 86, 2515, 2516, + 86, 86, 86, 2517, 2513, 2518, 86, 2514, 86, 86, + 86, 2522, 2524, 86, 2523, 86, 2525, 2519, 86, 2526, + 86, 86, 2521, 2520, 2529, 86, 2530, 86, 86, 2527, + 86, 86, 2528, 2531, 86, 2532, 2536, 86, 2537, 86, + 86, 2533, 2539, 86, 86, 86, 2535, 2541, 86, 86, + 86, 2534, 2544, 86, 2543, 2545, 86, 86, 86, 2538, + 2542, 86, 2540, 86, 2546, 86, 2547, 2552, 86, 86, - 2544, 86, 2551, 86, 86, 2546, 86, 86, 86, 86, - 2547, 2557, 86, 2556, 2549, 86, 86, 86, 86, 86, - 2550, 2553, 2559, 2555, 2552, 2562, 86, 86, 86, 86, - 2554, 2560, 86, 2561, 2558, 2564, 86, 86, 3599, 2563, - 86, 2565, 86, 2570, 86, 86, 2572, 2566, 2576, 2571, - 2567, 2568, 86, 86, 86, 2573, 86, 2577, 2578, 86, - 86, 2579, 86, 2569, 86, 86, 86, 86, 86, 2583, - 2574, 2585, 2575, 2581, 86, 86, 86, 86, 86, 2586, - 2587, 2589, 2588, 2582, 2580, 86, 2590, 86, 2593, 2591, - 2594, 2584, 86, 2592, 86, 86, 86, 2599, 86, 86, + 2551, 2554, 86, 86, 86, 2548, 86, 2549, 86, 2556, + 2550, 2558, 2557, 86, 2559, 2561, 86, 86, 2553, 86, + 86, 2555, 2564, 86, 86, 2567, 86, 86, 86, 2560, + 86, 86, 3627, 86, 2563, 86, 2562, 2572, 2565, 2573, + 86, 86, 86, 2566, 86, 2569, 2571, 2568, 86, 2575, + 86, 2570, 2578, 86, 2574, 86, 2576, 2577, 86, 86, + 86, 86, 2580, 86, 2581, 86, 2586, 86, 2579, 2588, + 86, 86, 2587, 2589, 2592, 2584, 2582, 2583, 86, 86, + 86, 86, 86, 2593, 2594, 86, 2595, 2585, 2590, 86, + 2591, 86, 86, 86, 2599, 2597, 86, 2601, 2602, 86, - 2595, 2596, 2598, 86, 86, 86, 86, 2600, 86, 2597, - 2605, 2606, 2601, 2602, 2603, 86, 86, 86, 86, 2607, - 2604, 86, 86, 2611, 86, 2612, 86, 2613, 2608, 170, - 2610, 86, 86, 2615, 2617, 2614, 86, 2616, 2609, 86, - 86, 2622, 86, 86, 86, 86, 86, 86, 86, 86, - 2633, 86, 2618, 2624, 2619, 2620, 2621, 2625, 2623, 2628, - 86, 86, 2626, 2627, 2629, 2630, 86, 86, 2634, 2631, - 2635, 86, 86, 86, 86, 2636, 2638, 2639, 2632, 2637, - 86, 86, 86, 86, 2641, 86, 86, 2642, 86, 2640, - 86, 2643, 2648, 2644, 86, 2647, 86, 86, 86, 86, + 86, 2603, 2605, 2596, 2606, 86, 2598, 2609, 86, 86, + 86, 86, 86, 86, 2604, 86, 2610, 2600, 86, 86, + 2608, 2607, 2614, 2611, 86, 2613, 86, 86, 86, 86, + 86, 86, 86, 2616, 2612, 2615, 2617, 2618, 2619, 2621, + 2620, 2622, 86, 86, 2641, 86, 2623, 86, 86, 2627, + 2624, 2625, 2626, 2628, 86, 2629, 86, 86, 2632, 86, + 86, 170, 86, 2630, 86, 2631, 2633, 86, 2638, 86, + 86, 86, 86, 86, 2645, 86, 86, 3627, 2636, 2639, + 2634, 2640, 2635, 2637, 86, 86, 2642, 2644, 2643, 2646, + 2649, 86, 86, 2650, 2651, 86, 2647, 2648, 86, 86, - 2645, 86, 2650, 2651, 2652, 2653, 86, 2646, 86, 86, - 2649, 86, 86, 2654, 2655, 86, 2660, 86, 86, 86, - 2656, 2657, 2659, 86, 86, 86, 86, 86, 2662, 86, - 86, 86, 2661, 2667, 2670, 2658, 2669, 86, 86, 2672, - 86, 2666, 86, 2671, 2663, 2664, 2665, 86, 86, 86, - 2668, 86, 2678, 86, 2676, 86, 86, 86, 2682, 2683, - 2673, 86, 2681, 86, 86, 86, 2674, 2675, 2679, 2684, - 86, 2680, 2677, 86, 86, 2685, 3599, 2687, 2694, 2686, - 86, 2688, 86, 86, 86, 2689, 2690, 86, 2692, 86, - 86, 2696, 86, 2693, 86, 2698, 86, 86, 86, 86, + 2654, 2652, 2655, 86, 2653, 86, 86, 86, 86, 2657, + 86, 86, 2656, 86, 2659, 86, 86, 2663, 2664, 2658, + 86, 2661, 86, 2660, 86, 2666, 86, 86, 86, 86, + 2667, 2668, 2669, 86, 2662, 86, 2665, 86, 2672, 86, + 2670, 86, 2671, 2676, 86, 2675, 86, 2674, 2673, 86, + 86, 86, 86, 86, 2678, 86, 86, 86, 2686, 2677, + 2683, 86, 2685, 86, 86, 86, 2688, 2682, 86, 2687, + 2679, 2680, 2681, 86, 86, 2684, 86, 2694, 86, 2689, + 86, 2692, 86, 86, 2698, 2699, 3627, 2690, 2697, 86, + 86, 86, 2691, 86, 2695, 2693, 2696, 2700, 86, 86, - 2691, 86, 2695, 2697, 2702, 86, 86, 86, 86, 86, - 2707, 86, 2700, 2705, 2706, 2699, 2709, 2701, 2708, 86, - 86, 86, 86, 86, 2711, 86, 86, 2704, 3599, 2713, - 2714, 2703, 86, 86, 86, 2716, 86, 2712, 2719, 86, - 2710, 86, 2720, 2722, 86, 2715, 2717, 2721, 2718, 86, - 86, 2725, 86, 86, 86, 3599, 2726, 86, 86, 2729, - 2730, 86, 2723, 86, 86, 2724, 86, 86, 2731, 86, - 86, 86, 2736, 2727, 2735, 2728, 2733, 86, 86, 2734, - 86, 86, 2732, 86, 86, 2737, 2740, 2744, 86, 2743, - 2739, 2738, 2745, 86, 2746, 86, 2747, 86, 86, 86, + 2701, 86, 2702, 86, 2705, 86, 86, 2707, 2706, 86, + 86, 86, 2708, 2703, 2709, 2704, 86, 2711, 86, 2713, + 86, 86, 2712, 2715, 86, 86, 2717, 86, 86, 86, + 2716, 86, 2714, 86, 86, 86, 2710, 86, 2721, 86, + 2726, 86, 2724, 2719, 2725, 2728, 2718, 2720, 2727, 86, + 86, 86, 86, 2730, 86, 86, 2723, 86, 86, 3627, + 2722, 86, 2733, 86, 2735, 86, 86, 2738, 86, 86, + 2729, 2731, 86, 86, 2739, 2736, 2732, 2734, 2737, 2740, + 2741, 86, 2744, 86, 86, 86, 86, 2742, 2745, 86, + 2748, 2746, 2749, 86, 86, 86, 2743, 86, 86, 2750, - 2741, 86, 86, 2742, 86, 2751, 2750, 86, 2752, 86, - 2748, 86, 2753, 86, 2754, 86, 86, 2749, 86, 2760, - 86, 86, 2762, 86, 86, 2756, 2763, 86, 86, 2755, - 2765, 86, 86, 86, 2759, 2757, 2766, 2758, 86, 2764, - 2761, 86, 86, 86, 2768, 2767, 2770, 2773, 86, 86, - 2775, 86, 86, 2769, 86, 86, 86, 86, 2774, 86, - 170, 86, 2771, 2772, 86, 86, 2782, 86, 2778, 86, - 2784, 2780, 2783, 86, 2777, 86, 2785, 86, 2776, 2788, - 2779, 2781, 86, 86, 86, 2791, 86, 2789, 2786, 2793, - 2787, 2794, 2795, 86, 2796, 86, 86, 2792, 86, 2797, + 86, 86, 2747, 2755, 86, 2754, 2752, 86, 86, 86, + 86, 2753, 86, 2751, 2759, 2763, 86, 86, 2756, 86, + 2758, 2757, 2762, 2764, 86, 2765, 86, 2766, 86, 86, + 2760, 2767, 2761, 86, 86, 2770, 86, 2771, 2769, 86, + 2772, 86, 86, 86, 86, 86, 3627, 2768, 86, 86, + 2779, 86, 86, 2773, 86, 2775, 2781, 86, 2782, 86, + 2784, 86, 2774, 2783, 2776, 2778, 2777, 2780, 86, 86, + 86, 86, 86, 86, 2788, 86, 2786, 2789, 2792, 86, + 2785, 86, 2787, 86, 2793, 2794, 86, 86, 86, 86, + 86, 2790, 86, 2791, 2801, 86, 170, 86, 2803, 86, - 2790, 86, 2798, 86, 2799, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 2800, 86, 2801, 2810, 86, 86, - 86, 2808, 2803, 86, 2815, 2802, 86, 2805, 2804, 86, - 2814, 2807, 2806, 2809, 2816, 86, 86, 2812, 2811, 86, - 2817, 2813, 2820, 86, 86, 2822, 86, 86, 2819, 86, - 86, 86, 86, 2821, 86, 86, 86, 86, 2818, 2826, - 86, 2833, 86, 86, 2832, 2823, 2827, 2824, 2825, 2834, - 86, 86, 2828, 2829, 86, 2831, 2830, 2838, 86, 2840, - 2837, 2839, 86, 2835, 86, 86, 86, 86, 86, 2836, - 86, 86, 86, 86, 86, 2846, 86, 3599, 86, 2850, + 2797, 86, 86, 2796, 2799, 86, 86, 2795, 2802, 86, + 2804, 2800, 2798, 2807, 2805, 86, 86, 2806, 2810, 86, + 86, 2812, 86, 2811, 2813, 2814, 86, 2808, 86, 2809, + 2815, 86, 86, 2816, 86, 2817, 86, 2818, 2819, 2820, + 86, 2821, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 2829, 3627, 86, 86, 2822, 2827, 86, 2833, 86, + 86, 2824, 2823, 2834, 2831, 2826, 2825, 86, 2828, 86, + 2830, 2832, 2835, 86, 2836, 86, 2837, 86, 2838, 2839, + 86, 2841, 86, 86, 2840, 2842, 86, 86, 86, 86, + 86, 86, 86, 2845, 86, 2843, 2852, 86, 2851, 2853, - 2851, 86, 2841, 2843, 2842, 2845, 2844, 2848, 2852, 86, - 2854, 86, 2847, 2849, 86, 86, 2853, 86, 86, 86, - 2855, 86, 86, 86, 2856, 86, 2860, 2861, 86, 86, - 2858, 86, 2867, 86, 2866, 86, 2857, 86, 86, 2859, - 2870, 86, 86, 2862, 2863, 86, 86, 2865, 2864, 2871, - 2868, 86, 86, 86, 86, 2869, 2873, 2872, 2876, 2875, - 2874, 2877, 86, 86, 2878, 86, 2880, 2882, 86, 86, - 86, 86, 86, 2886, 86, 2885, 2887, 86, 2879, 2884, - 86, 2883, 2889, 86, 86, 2881, 86, 86, 86, 2890, - 2895, 86, 86, 2888, 86, 2891, 2892, 86, 2896, 2893, + 86, 2844, 2846, 86, 86, 86, 2847, 2848, 2849, 2850, + 2856, 2857, 86, 2859, 2854, 2858, 86, 86, 86, 86, + 86, 2855, 86, 2860, 86, 2866, 86, 86, 86, 2865, + 86, 86, 86, 2862, 3627, 2861, 2864, 86, 86, 2863, + 2874, 86, 2870, 2872, 86, 86, 2873, 2867, 2868, 86, + 2869, 2875, 2871, 2876, 86, 86, 2877, 86, 86, 86, + 86, 86, 86, 86, 2878, 2881, 2882, 2883, 86, 86, + 2880, 86, 2888, 2889, 86, 86, 2879, 2892, 86, 2884, + 2886, 86, 2885, 86, 86, 86, 2887, 86, 2895, 2891, + 2890, 86, 2893, 2897, 86, 2898, 2899, 86, 2894, 86, - 2898, 86, 86, 86, 86, 2905, 86, 2899, 2894, 86, - 86, 86, 86, 2902, 2897, 2900, 2901, 86, 2903, 2904, - 2908, 86, 2909, 86, 86, 86, 86, 2907, 2910, 86, - 2912, 2906, 86, 3599, 2913, 86, 86, 86, 2911, 86, - 86, 2915, 2918, 2916, 2919, 2921, 86, 86, 2914, 2922, - 86, 2917, 2923, 86, 86, 2920, 2925, 170, 86, 86, - 86, 2926, 2930, 2927, 86, 86, 2932, 86, 86, 2931, - 86, 86, 2924, 2935, 86, 2934, 86, 2928, 2929, 2936, - 86, 2942, 2933, 2940, 2937, 2938, 86, 86, 2941, 86, - 2939, 86, 86, 2945, 86, 86, 2943, 86, 2946, 86, + 2896, 86, 86, 2904, 86, 86, 86, 2900, 86, 86, + 2908, 86, 2907, 86, 2901, 2906, 86, 2905, 2909, 86, + 86, 2902, 2903, 2911, 86, 2912, 86, 86, 2915, 2914, + 2910, 2917, 86, 86, 2918, 2913, 86, 2920, 86, 86, + 86, 86, 86, 2927, 86, 86, 86, 2916, 86, 86, + 86, 2924, 2921, 2922, 2923, 2925, 86, 2926, 2919, 2930, + 86, 2931, 86, 86, 2929, 2928, 86, 2932, 86, 2936, + 86, 2934, 86, 86, 86, 86, 2935, 2933, 86, 2937, + 2938, 86, 86, 2940, 2943, 86, 2941, 2945, 2939, 2942, + 2944, 86, 2947, 170, 2946, 86, 86, 86, 86, 2952, - 2947, 86, 86, 86, 86, 86, 2944, 2952, 2953, 2954, - 2948, 2950, 2949, 86, 86, 2956, 86, 2955, 86, 86, - 86, 86, 86, 2951, 2958, 2957, 86, 2961, 86, 2959, - 86, 86, 2960, 2962, 86, 2963, 86, 86, 2968, 2964, - 86, 86, 86, 2966, 2965, 2967, 2970, 2972, 86, 2969, - 86, 86, 86, 86, 2973, 86, 2978, 86, 86, 86, - 2971, 86, 86, 86, 86, 2979, 2984, 86, 86, 2974, - 2981, 2975, 2976, 86, 2977, 86, 86, 2982, 2980, 2983, - 2988, 2991, 2985, 2986, 2989, 86, 2992, 86, 86, 2994, - 2995, 86, 86, 2987, 86, 86, 86, 86, 86, 86, + 3627, 2949, 2948, 86, 86, 86, 86, 2954, 2953, 86, + 2957, 86, 2958, 86, 2956, 2950, 2951, 86, 2962, 2955, + 2960, 86, 86, 2963, 86, 2961, 86, 86, 86, 2967, + 2959, 2964, 2965, 86, 86, 86, 86, 2968, 86, 2969, + 86, 86, 2966, 2974, 2975, 2970, 86, 86, 2972, 86, + 86, 2976, 86, 2971, 2978, 86, 86, 2980, 86, 2977, + 86, 2981, 2973, 2979, 86, 86, 86, 86, 86, 2983, + 2984, 2985, 2982, 86, 86, 86, 2990, 86, 86, 86, + 86, 2987, 2988, 2989, 2992, 2986, 2991, 2994, 86, 86, + 86, 3627, 86, 86, 2995, 86, 2993, 3000, 86, 2996, - 2990, 3001, 2996, 2998, 86, 86, 2993, 86, 2999, 86, - 3000, 86, 3002, 3005, 86, 3003, 86, 3007, 3004, 86, - 3006, 2997, 3009, 86, 3010, 86, 3011, 86, 86, 86, - 86, 86, 3012, 86, 3013, 3015, 86, 3008, 3017, 3014, - 86, 3019, 86, 86, 86, 3023, 3020, 86, 3024, 86, - 86, 3016, 3018, 3027, 3021, 3025, 86, 3026, 86, 86, - 86, 3030, 86, 3022, 86, 86, 3033, 86, 86, 3034, - 3035, 86, 3028, 3029, 86, 3037, 86, 86, 86, 86, - 3041, 86, 3031, 3042, 86, 3032, 86, 86, 3044, 3036, - 3038, 3043, 86, 3040, 86, 3046, 3039, 3045, 86, 86, + 86, 86, 3001, 86, 86, 86, 3005, 86, 86, 2997, + 2998, 2999, 3003, 3004, 3008, 86, 3006, 86, 86, 3002, + 86, 86, 3007, 3015, 3012, 3013, 86, 3009, 3016, 86, + 86, 3018, 3010, 86, 86, 3019, 86, 86, 3011, 86, + 86, 3020, 86, 86, 3025, 3022, 3014, 86, 3017, 86, + 86, 3023, 3026, 86, 3029, 86, 3024, 3027, 86, 86, + 3031, 3028, 86, 86, 3021, 3033, 86, 3034, 86, 3035, + 86, 86, 86, 3030, 86, 3036, 86, 3037, 3039, 86, + 3032, 86, 86, 3038, 3043, 86, 3041, 86, 3077, 3044, + 86, 86, 3047, 86, 3042, 86, 3040, 3045, 3048, 86, - 3047, 86, 86, 3052, 3048, 86, 86, 86, 3051, 86, - 3054, 3055, 86, 86, 86, 86, 86, 3058, 3049, 3050, - 3056, 3057, 86, 86, 3061, 3060, 86, 86, 86, 86, - 3053, 3064, 3059, 3062, 3063, 3068, 86, 86, 86, 86, - 86, 3070, 86, 3067, 86, 3065, 3080, 86, 3066, 3071, - 3074, 3069, 3075, 3072, 86, 3077, 86, 3076, 86, 3073, - 3078, 86, 86, 3079, 86, 3081, 86, 3082, 86, 3083, - 86, 3084, 86, 3085, 86, 86, 3088, 86, 3086, 3087, - 3089, 86, 3091, 86, 86, 86, 86, 86, 3093, 3090, - 3098, 86, 86, 3094, 3099, 86, 86, 86, 3101, 3100, + 3049, 86, 3050, 86, 86, 86, 3052, 3046, 3051, 3054, + 86, 86, 86, 3055, 3057, 86, 86, 3053, 86, 3058, + 3059, 86, 3061, 86, 86, 86, 3065, 3060, 86, 3062, + 3627, 3056, 86, 3066, 86, 3068, 86, 86, 86, 3064, + 3067, 86, 3063, 3069, 3070, 86, 86, 3076, 86, 3071, + 86, 3072, 3075, 86, 86, 3079, 86, 3073, 3078, 86, + 86, 86, 3085, 86, 3080, 3074, 3082, 86, 3081, 86, + 3084, 86, 86, 3083, 86, 86, 3088, 3092, 86, 86, + 86, 86, 86, 3094, 86, 86, 3086, 3087, 86, 3091, + 3089, 3095, 3098, 3093, 3090, 3096, 3627, 3099, 86, 3101, - 3092, 3103, 86, 86, 86, 3095, 3096, 3097, 3105, 86, - 3104, 86, 3107, 86, 86, 3102, 3106, 86, 86, 86, - 3113, 86, 3112, 3108, 3114, 86, 3109, 3110, 3111, 86, - 86, 86, 86, 3115, 86, 3120, 86, 3599, 86, 3116, - 3121, 86, 86, 3118, 86, 3123, 3124, 86, 86, 3119, - 3117, 3122, 3125, 3126, 86, 3128, 86, 86, 3127, 86, - 3132, 86, 3129, 86, 86, 86, 86, 86, 3139, 86, - 86, 3136, 3133, 86, 86, 86, 3134, 3131, 3137, 86, - 3142, 86, 3130, 86, 3143, 3140, 3146, 3138, 86, 3144, - 3135, 3141, 3145, 86, 86, 86, 3149, 3151, 86, 3150, + 3125, 3097, 3100, 86, 3102, 86, 86, 3103, 3104, 86, + 86, 3105, 86, 3106, 86, 3107, 86, 3108, 86, 3109, + 86, 86, 3110, 86, 3113, 3111, 86, 86, 86, 86, + 86, 3115, 86, 3117, 86, 3122, 86, 3114, 3118, 3123, + 86, 3112, 86, 3126, 86, 3124, 3116, 86, 86, 3627, + 3119, 86, 3120, 3127, 3121, 3129, 86, 86, 3130, 3131, + 86, 86, 3132, 3133, 86, 86, 3128, 86, 86, 86, + 3134, 3139, 86, 86, 3135, 86, 3136, 3137, 3140, 86, + 86, 86, 3142, 86, 3141, 3146, 86, 3138, 86, 86, + 3147, 86, 3144, 3150, 3143, 86, 86, 3149, 3145, 3148, - 3152, 86, 3153, 86, 86, 86, 3147, 86, 3148, 86, - 3158, 86, 86, 3154, 3157, 86, 86, 3159, 3161, 86, - 3160, 86, 86, 86, 86, 3155, 3156, 86, 3165, 3162, - 3167, 3169, 86, 3163, 86, 86, 86, 86, 3170, 86, - 3171, 86, 3166, 3164, 3172, 86, 3173, 86, 86, 3178, - 86, 86, 3168, 86, 86, 86, 3174, 86, 86, 3182, - 86, 3177, 3175, 3176, 3179, 86, 3180, 3181, 86, 3183, - 3187, 86, 86, 3184, 86, 3189, 3186, 3185, 86, 86, - 86, 3190, 3193, 86, 3194, 86, 86, 3196, 86, 3199, - 86, 3188, 3197, 86, 3198, 86, 3191, 3201, 86, 3195, + 3151, 3152, 86, 3154, 86, 86, 86, 86, 3158, 86, + 3153, 86, 86, 86, 86, 86, 86, 86, 86, 3155, + 3159, 3162, 3165, 3163, 3160, 3157, 3627, 86, 86, 3166, + 86, 3156, 3168, 86, 3170, 3164, 86, 86, 3161, 3167, + 86, 3169, 86, 3173, 86, 3172, 3171, 86, 3175, 3177, + 86, 3176, 3178, 86, 3179, 86, 3174, 86, 86, 3627, + 86, 3184, 86, 86, 3181, 3183, 3180, 86, 3185, 86, + 3187, 86, 86, 86, 3186, 86, 86, 3182, 86, 3193, + 3188, 3191, 3195, 86, 3189, 86, 86, 86, 86, 3199, + 3196, 86, 3197, 3192, 3190, 86, 3198, 86, 86, 86, - 86, 86, 86, 86, 86, 3192, 3204, 3200, 3206, 3207, - 86, 3202, 86, 3210, 86, 86, 3203, 86, 3205, 86, - 86, 3209, 86, 3213, 3208, 3216, 86, 3217, 86, 3219, - 86, 3214, 86, 86, 3212, 86, 86, 3211, 86, 3215, - 86, 3220, 3222, 86, 3223, 86, 86, 3224, 3218, 3226, - 86, 3228, 3221, 86, 3231, 3229, 86, 86, 3225, 86, - 86, 3235, 86, 86, 86, 86, 86, 3237, 3238, 3227, - 86, 3233, 86, 3230, 86, 3232, 3454, 3234, 3236, 86, - 3239, 3242, 3240, 3243, 86, 86, 3241, 86, 3244, 3245, - 3246, 86, 3248, 86, 86, 86, 3247, 86, 3251, 3249, + 3204, 86, 86, 3194, 86, 86, 86, 86, 86, 86, + 3208, 86, 3201, 3202, 3200, 3205, 3209, 3206, 3207, 3203, + 86, 86, 86, 3215, 3210, 3213, 86, 86, 3211, 3212, + 86, 3214, 3219, 86, 86, 3216, 3220, 86, 3222, 86, + 86, 86, 86, 3223, 86, 3217, 86, 3225, 3226, 86, + 3228, 86, 86, 3221, 3224, 86, 3218, 3231, 3229, 86, + 3227, 86, 3230, 86, 3233, 3234, 86, 3237, 86, 86, + 86, 3232, 3236, 86, 86, 3240, 86, 3243, 86, 3244, + 86, 3235, 86, 3246, 3241, 86, 86, 3247, 3239, 86, + 86, 3238, 3249, 86, 86, 3242, 3250, 86, 3253, 86, - 86, 3254, 86, 86, 86, 86, 86, 86, 3259, 86, - 86, 86, 86, 3263, 86, 3255, 3250, 3252, 3253, 86, - 3258, 3262, 86, 3256, 3264, 86, 86, 3261, 3291, 3260, - 86, 3257, 3265, 86, 86, 3266, 3267, 3269, 86, 3268, - 3270, 86, 3271, 86, 3272, 86, 86, 3275, 86, 86, - 3277, 86, 3274, 86, 3276, 3279, 86, 86, 86, 3273, - 86, 86, 86, 86, 3278, 86, 3285, 3286, 86, 86, - 86, 86, 3292, 86, 3293, 86, 3280, 86, 86, 3295, - 3281, 3283, 3282, 3284, 3289, 86, 86, 86, 3288, 3287, - 86, 3290, 3298, 3300, 86, 3294, 3301, 86, 3296, 86, + 3245, 86, 86, 86, 3258, 3251, 86, 86, 3248, 86, + 86, 3256, 3255, 86, 3252, 3262, 86, 86, 3254, 3260, + 3264, 86, 86, 3257, 3265, 3259, 86, 3266, 3263, 3261, + 86, 3269, 3270, 86, 3267, 86, 3272, 86, 3271, 86, + 86, 86, 86, 3275, 86, 3274, 3276, 86, 3278, 86, + 3268, 86, 3281, 86, 86, 86, 86, 3273, 86, 3286, + 86, 3282, 86, 86, 3302, 86, 3277, 86, 3279, 3280, + 86, 3285, 3293, 3283, 3289, 3290, 86, 86, 3288, 3291, + 86, 3284, 3287, 3292, 86, 86, 3296, 86, 3297, 86, + 3295, 3294, 3298, 86, 3299, 86, 86, 86, 86, 3304, - 86, 3304, 86, 86, 3302, 3297, 86, 86, 3307, 86, - 3306, 3299, 86, 86, 3303, 3305, 86, 3308, 3310, 86, - 3309, 86, 86, 86, 86, 86, 3311, 3313, 86, 3315, - 86, 86, 3316, 3314, 86, 86, 86, 86, 86, 3312, - 86, 3328, 3325, 3326, 3317, 86, 3599, 86, 3318, 3320, - 3319, 3321, 86, 3322, 3323, 3324, 86, 3329, 86, 3331, - 3327, 3333, 86, 3334, 86, 3330, 86, 3336, 86, 86, - 3335, 3332, 86, 86, 3337, 3339, 86, 3341, 86, 3342, - 3343, 86, 86, 3344, 3345, 3349, 86, 86, 3340, 3346, - 86, 3338, 3347, 3348, 86, 86, 3351, 3352, 86, 3350, + 86, 86, 86, 3303, 3306, 86, 3307, 86, 86, 3300, + 86, 86, 86, 86, 3313, 3314, 86, 3305, 86, 86, + 86, 3308, 86, 3301, 3320, 86, 86, 3321, 86, 86, + 3309, 3311, 3310, 3312, 3317, 3319, 86, 3323, 3316, 86, + 86, 86, 3318, 86, 3315, 3326, 86, 3322, 3328, 86, + 3329, 86, 86, 3332, 86, 86, 3324, 3330, 3325, 86, + 3331, 86, 3327, 3334, 3335, 86, 3333, 86, 86, 86, + 86, 86, 3336, 3337, 86, 3338, 3341, 86, 86, 86, + 86, 3339, 86, 3343, 86, 86, 3342, 3344, 3340, 86, + 86, 86, 3627, 86, 86, 3356, 86, 3345, 3353, 3354, - 86, 86, 86, 3355, 86, 86, 86, 3359, 86, 86, - 86, 3358, 86, 86, 86, 3354, 86, 3363, 3353, 3362, - 86, 86, 3599, 3364, 3356, 3357, 3367, 3368, 86, 3360, - 86, 3365, 86, 3370, 86, 3361, 3371, 86, 3366, 3369, - 3372, 86, 86, 86, 86, 3377, 86, 3374, 3379, 3373, - 3378, 86, 3375, 86, 86, 3376, 86, 86, 86, 3386, - 86, 3381, 3383, 3384, 3387, 86, 3389, 86, 86, 3380, - 86, 3388, 3390, 86, 3382, 3385, 86, 3393, 86, 3394, - 86, 3392, 86, 3391, 86, 3397, 86, 3398, 86, 3399, - 86, 3395, 3400, 86, 3401, 86, 3402, 86, 3403, 86, + 3346, 86, 3347, 3348, 3355, 3349, 86, 3350, 3351, 86, + 86, 3357, 3352, 3359, 3361, 86, 3358, 3362, 86, 86, + 3364, 86, 3360, 3363, 86, 86, 3367, 86, 86, 3365, + 3369, 86, 3370, 3371, 86, 86, 3372, 3373, 3377, 86, + 3374, 86, 86, 3368, 3366, 3375, 3376, 3378, 86, 86, + 3380, 86, 86, 86, 86, 3383, 86, 86, 3379, 86, + 3387, 86, 86, 86, 3386, 86, 86, 3382, 86, 86, + 3381, 86, 3390, 3391, 86, 3392, 3384, 3385, 86, 3395, + 3396, 86, 3388, 3393, 86, 3398, 86, 3397, 3389, 3394, + 3399, 86, 3400, 86, 86, 86, 86, 3405, 86, 3402, - 3404, 86, 3396, 86, 86, 3407, 86, 3408, 86, 86, - 86, 86, 86, 3406, 3412, 86, 86, 86, 3409, 3414, - 86, 86, 3410, 86, 3418, 3419, 86, 3415, 86, 3405, - 3416, 3411, 86, 3417, 86, 3413, 3421, 86, 86, 86, - 3425, 3423, 86, 3420, 86, 3427, 3428, 86, 86, 86, - 3422, 86, 86, 3430, 86, 86, 86, 86, 86, 86, - 3424, 3429, 3426, 3434, 3435, 3443, 86, 86, 3431, 3432, - 3433, 3436, 86, 3437, 86, 86, 86, 3440, 3441, 3439, - 3444, 86, 3438, 3445, 86, 86, 86, 3442, 86, 86, - 3448, 86, 86, 86, 3447, 86, 86, 3453, 86, 3446, + 3407, 3401, 3406, 86, 3403, 86, 86, 3404, 86, 86, + 86, 3414, 86, 3409, 3411, 3412, 3415, 86, 3417, 86, + 86, 3408, 86, 3416, 3418, 86, 3410, 3413, 86, 3421, + 86, 3422, 86, 3420, 86, 3419, 86, 3425, 86, 3426, + 86, 3427, 86, 3423, 3428, 86, 3429, 86, 3430, 86, + 3431, 86, 3432, 86, 3424, 86, 86, 3435, 86, 3436, + 86, 86, 86, 86, 86, 3434, 3440, 86, 86, 86, + 3437, 3442, 86, 86, 3438, 86, 3446, 3447, 86, 3443, + 86, 3433, 3444, 3439, 86, 3445, 86, 3441, 3449, 86, + 86, 86, 3453, 3451, 86, 3448, 86, 3455, 3456, 86, - 86, 3456, 86, 3450, 3452, 86, 86, 86, 3449, 3457, - 3455, 86, 86, 86, 3451, 86, 86, 3458, 3465, 86, - 3459, 3460, 3462, 3464, 3463, 86, 3469, 86, 86, 86, - 3467, 3461, 86, 3466, 3471, 3468, 3474, 86, 86, 3470, - 3476, 86, 3472, 86, 3477, 3478, 86, 3475, 3479, 86, - 86, 86, 3473, 86, 86, 86, 3482, 86, 86, 3483, - 3484, 3487, 86, 86, 86, 86, 86, 86, 86, 3480, - 3490, 3481, 86, 3486, 86, 3489, 3488, 3491, 86, 3493, - 86, 3496, 3485, 3499, 3492, 3494, 86, 3495, 86, 3498, - 86, 3497, 3500, 3501, 86, 86, 3502, 86, 86, 86, + 86, 86, 3450, 86, 86, 3458, 86, 86, 86, 86, + 86, 86, 3452, 3457, 3454, 3462, 3463, 3471, 86, 86, + 3459, 3460, 3461, 3464, 86, 3465, 86, 86, 86, 3468, + 3469, 3467, 3472, 86, 3466, 3473, 86, 86, 86, 3470, + 86, 86, 3476, 86, 86, 86, 3475, 86, 86, 3481, + 3482, 3474, 86, 3484, 86, 3478, 3480, 86, 86, 86, + 3477, 86, 3483, 86, 86, 86, 3479, 3485, 86, 86, + 3493, 86, 86, 3491, 3488, 86, 3486, 3487, 3490, 86, + 3492, 3497, 86, 86, 3495, 3500, 3489, 86, 3499, 86, + 3494, 3496, 3502, 86, 86, 3498, 3504, 86, 3503, 86, - 3505, 3506, 86, 86, 86, 3503, 86, 86, 86, 3510, - 3511, 86, 86, 3507, 86, 3508, 86, 3504, 3512, 86, - 3516, 86, 3509, 86, 86, 86, 86, 86, 3515, 3513, - 3518, 86, 3514, 86, 3525, 86, 3523, 3520, 3524, 3521, - 86, 3517, 3519, 86, 86, 86, 3522, 3529, 86, 3531, - 3530, 86, 3532, 86, 86, 86, 86, 86, 3533, 3534, - 3526, 3527, 3535, 3528, 3537, 3538, 86, 86, 3540, 86, - 86, 86, 3539, 86, 86, 3536, 86, 3541, 86, 3546, - 86, 3543, 86, 86, 86, 86, 86, 3549, 3550, 86, - 3542, 3551, 86, 86, 3552, 3544, 3548, 3545, 3553, 3547, + 3505, 3506, 86, 3507, 86, 86, 86, 3501, 86, 3510, + 86, 86, 86, 3508, 3515, 3511, 3512, 86, 86, 86, + 86, 3519, 86, 86, 3518, 3509, 86, 3514, 3521, 86, + 3517, 3516, 86, 3513, 3522, 86, 3523, 86, 3526, 86, + 86, 3524, 86, 3520, 3529, 86, 86, 3530, 86, 86, + 86, 3525, 3533, 3534, 86, 3527, 3531, 86, 86, 86, + 3528, 86, 3539, 86, 3535, 86, 3538, 3536, 3532, 3540, + 86, 86, 86, 86, 86, 86, 3537, 86, 3544, 86, + 3546, 86, 86, 86, 86, 86, 3541, 3543, 3551, 3552, + 86, 3542, 3545, 86, 3548, 3549, 3547, 3559, 3550, 3553, - 86, 86, 3557, 3554, 86, 86, 86, 86, 3561, 3558, - 86, 3555, 86, 3556, 86, 3563, 86, 3564, 3559, 86, - 86, 3568, 86, 86, 3565, 3571, 86, 3566, 3569, 3562, - 86, 3567, 3560, 86, 86, 3570, 86, 3572, 86, 86, - 86, 3573, 86, 3575, 3577, 86, 86, 3579, 86, 86, - 86, 3580, 86, 3583, 86, 3574, 3584, 86, 3576, 3578, - 86, 3587, 3588, 86, 86, 3590, 86, 3581, 3582, 3585, - 86, 3589, 86, 3586, 3591, 86, 86, 3592, 86, 86, - 3599, 3593, 3599, 3594, 3597, 86, 3598, 86, 3599, 3599, - 3599, 3595, 3599, 3599, 3599, 3599, 3599, 3599, 3596, 47, + 86, 3557, 86, 86, 86, 3554, 86, 3560, 3555, 3558, + 86, 86, 3556, 86, 86, 3561, 3562, 3565, 3563, 3566, + 86, 86, 86, 86, 3568, 86, 3567, 86, 86, 86, + 86, 3569, 3574, 3564, 86, 3571, 86, 86, 86, 86, + 3577, 3570, 3578, 86, 86, 86, 86, 86, 3572, 3573, + 3576, 3581, 86, 3575, 3579, 3582, 86, 3580, 86, 3585, + 3584, 3586, 86, 3583, 86, 3587, 86, 3589, 86, 3591, + 86, 3592, 86, 86, 86, 3596, 86, 3593, 3627, 86, + 3594, 3599, 86, 3590, 3597, 86, 86, 3598, 3588, 86, + 86, 86, 86, 3595, 86, 86, 3600, 3601, 86, 3603, - 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, - 3599, 89, 89, 89, 89, 160, 160, 3599, 3599, 3599, - 160, 160, 162, 162, 3599, 3599, 162, 3599, 162, 164, - 3599, 3599, 3599, 3599, 3599, 164, 167, 167, 3599, 3599, - 3599, 167, 167, 169, 3599, 3599, 3599, 3599, 3599, 169, - 171, 171, 3599, 171, 171, 171, 171, 174, 3599, 3599, + 3605, 86, 86, 3607, 86, 3602, 86, 3608, 86, 3611, + 3604, 3606, 3612, 86, 3609, 86, 86, 3615, 3616, 86, + 86, 3618, 86, 3610, 86, 3613, 86, 3617, 3619, 86, + 86, 3620, 86, 86, 3614, 3621, 3627, 3622, 3625, 86, + 3626, 86, 3627, 3627, 3627, 3623, 3627, 3627, 3627, 3627, + 3627, 3627, 3624, 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, - 3599, 3599, 3599, 174, 177, 177, 3599, 3599, 3599, 177, - 177, 90, 90, 3599, 90, 90, 90, 90, 17, 3599, - 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, - 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, - 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, - 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599 + 80, 80, 89, 89, 3627, 89, 89, 89, 89, 160, + 160, 3627, 3627, 3627, 160, 160, 162, 162, 3627, 3627, + 162, 3627, 162, 164, 3627, 3627, 3627, 3627, 3627, 164, + 167, 167, 3627, 3627, 3627, 167, 167, 169, 3627, 3627, + 3627, 3627, 3627, 169, 171, 171, 3627, 171, 171, 171, + 171, 174, 3627, 3627, 3627, 3627, 3627, 174, 177, 177, + 3627, 3627, 3627, 177, 177, 90, 90, 3627, 90, 90, + 90, 90, 17, 3627, 3627, 3627, 3627, 3627, 3627, 3627, + 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, + 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, + + 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, + 3627, 3627, 3627 } ; -static const flex_int16_t yy_chk[7060] = +static const flex_int16_t yy_chk[7114] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2397,14 +2413,14 @@ static const flex_int16_t yy_chk[7060] = 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, 3607, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3635, 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, 2925, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2947, 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, @@ -2730,441 +2746,448 @@ static const flex_int16_t yy_chk[7060] = 1446, 1449, 1447, 1456, 1448, 1450, 1450, 1449, 1451, 1451, 1453, 1453, 1454, 1455, 1445, 1457, 1454, 1458, 1459, 1460, - 1462, 1456, 1455, 1461, 1461, 1464, 1460, 1457, 1463, 1465, - 1464, 1458, 1466, 1459, 1469, 57, 1463, 1470, 1470, 1467, - 1462, 1468, 1471, 1465, 1467, 1467, 1468, 1468, 1472, 1473, - 1474, 1466, 1475, 1476, 1469, 1474, 1477, 1478, 1473, 1479, - 1480, 1471, 1481, 1478, 1479, 1483, 1482, 1472, 1486, 1484, - 1485, 1475, 1482, 1476, 1477, 1484, 1485, 1487, 1488, 1489, - 1480, 1490, 1492, 1496, 1483, 1491, 1493, 1486, 1481, 1494, - 1494, 1495, 1497, 1498, 1495, 52, 1487, 1488, 1489, 1491, - 1490, 1493, 1496, 1492, 1503, 1498, 1499, 1499, 1500, 1500, - 1501, 1497, 1502, 1504, 1505, 1501, 1502, 1503, 1506, 1510, + 1462, 1456, 1455, 1461, 1461, 1466, 1460, 1457, 1451, 1463, + 1451, 1458, 1465, 1459, 1464, 1469, 1467, 1463, 1471, 1464, + 1462, 1467, 1467, 1468, 1466, 1472, 1465, 1473, 1468, 1468, + 1470, 1470, 1475, 1474, 1476, 1469, 1473, 1471, 1474, 1477, + 1478, 1480, 1479, 1481, 1472, 1483, 1478, 1479, 1486, 1482, + 1484, 1475, 1485, 1487, 1476, 1482, 1484, 1477, 1485, 1488, + 1489, 1480, 1490, 1491, 1483, 1492, 1496, 1486, 1493, 1481, + 1494, 1494, 1487, 1495, 1497, 1498, 1495, 1491, 1488, 1489, + 1502, 1490, 1503, 1493, 1502, 1496, 1492, 1498, 1499, 1499, + 1500, 1500, 1501, 1497, 1504, 1503, 1505, 1501, 1506, 1510, - 1506, 1508, 1504, 1509, 1506, 1511, 1512, 1505, 1509, 1513, - 1513, 1514, 1515, 1516, 1510, 1518, 1514, 1506, 1515, 1508, - 1517, 1518, 1512, 1520, 1519, 1511, 1521, 1520, 1516, 1519, - 1521, 1522, 1523, 1517, 1524, 1525, 1526, 1527, 1527, 1529, - 1531, 1532, 1526, 1524, 1533, 1533, 1532, 1534, 1535, 1539, - 1523, 1522, 1539, 1534, 1541, 1525, 1542, 1529, 1537, 1537, - 1543, 1531, 1540, 1540, 1545, 1546, 1548, 1545, 1535, 1547, - 1541, 1549, 1542, 1550, 1550, 1548, 1543, 1551, 1552, 1553, - 1554, 1555, 1556, 1557, 1557, 1554, 1546, 1558, 1556, 1547, - 1559, 1549, 1551, 1561, 1560, 1555, 1558, 1562, 1553, 1552, + 1506, 1508, 1509, 1504, 1506, 1511, 1512, 1509, 1514, 1505, + 1513, 1513, 1515, 1514, 1510, 1516, 1517, 1506, 1515, 1508, + 1518, 1522, 1512, 1519, 1523, 1511, 1518, 1520, 1519, 1517, + 1516, 1520, 1521, 1525, 1524, 1531, 1521, 1529, 1526, 1527, + 1527, 1522, 1523, 1524, 1526, 1532, 1533, 1533, 1534, 1535, + 1532, 1537, 1537, 1525, 1534, 1529, 1531, 1539, 1540, 1540, + 1539, 1541, 1542, 1543, 1545, 1546, 1548, 1545, 1547, 1535, + 1549, 1550, 1550, 1552, 1551, 1548, 1553, 1541, 1542, 1543, + 1554, 1556, 1555, 1557, 1557, 1554, 1546, 1556, 1547, 1551, + 1549, 1558, 1559, 1560, 1552, 1553, 1555, 1561, 1562, 1564, - 1563, 1563, 1564, 1565, 1567, 1566, 1568, 1568, 1559, 1560, - 1566, 1569, 1570, 1571, 1571, 1569, 1564, 1562, 1561, 1567, - 1572, 1565, 1573, 1574, 1575, 1576, 1577, 1581, 1575, 1579, - 1579, 1577, 1570, 1580, 1574, 1583, 1580, 1584, 1582, 1585, - 1581, 1573, 1572, 1582, 1576, 1586, 1587, 1588, 1589, 1589, - 1591, 1583, 1590, 1585, 1592, 1584, 1595, 1590, 1593, 1593, - 1587, 1595, 1594, 1596, 1586, 1586, 1597, 1600, 1597, 1599, - 1591, 1594, 1588, 1598, 1592, 1599, 1601, 1603, 1598, 1604, - 1604, 1605, 1601, 1596, 1606, 1609, 1613, 1600, 1608, 1612, - 1606, 1603, 1614, 1608, 1610, 1610, 1611, 1611, 1615, 1617, + 1558, 1563, 1563, 1565, 1566, 1567, 1568, 1568, 1560, 1566, + 1559, 1569, 1570, 1564, 1572, 1569, 1571, 1571, 1562, 1573, + 1567, 1565, 1561, 1574, 1575, 1576, 1577, 1583, 1575, 1579, + 1579, 1577, 1570, 1581, 1574, 1584, 1572, 1580, 1573, 1586, + 1580, 1585, 1582, 1583, 1576, 1588, 1581, 1582, 1587, 1589, + 1589, 1590, 1591, 1584, 1592, 1585, 1590, 1594, 1586, 1586, + 1593, 1593, 1587, 1595, 1596, 1597, 1594, 1597, 1595, 1599, + 1588, 1598, 1591, 1600, 1592, 1599, 1598, 1601, 1603, 1604, + 1604, 1605, 1606, 1601, 1596, 1608, 1609, 1612, 1606, 1613, + 1608, 1614, 1603, 1600, 1610, 1610, 1611, 1611, 1617, 1615, - 1605, 1615, 1618, 1612, 1613, 1616, 1616, 1614, 1619, 1609, - 1621, 1627, 1620, 1625, 1618, 1620, 1621, 1617, 1620, 1622, - 1623, 1626, 1625, 1623, 1622, 1630, 1626, 1638, 1619, 1628, - 1620, 1631, 1628, 1629, 1629, 1632, 1627, 1631, 1633, 1623, - 1638, 1632, 1636, 1633, 1634, 1634, 1635, 1635, 1636, 1630, - 1637, 1639, 1640, 1641, 1642, 1637, 1643, 1642, 1644, 1645, - 1648, 1646, 1643, 1652, 1644, 1645, 1646, 1649, 1647, 1639, - 1653, 1640, 1649, 1641, 1647, 1650, 1650, 1651, 1654, 1655, - 1656, 1652, 1651, 1648, 1657, 1659, 1658, 1660, 1661, 1662, - 1653, 1662, 1661, 1666, 1656, 1663, 1668, 1654, 1657, 1655, + 1605, 1612, 1615, 1616, 1616, 1618, 1614, 1613, 1619, 1620, + 1609, 1623, 1620, 1621, 1623, 1620, 1617, 1618, 1622, 1621, + 1625, 1626, 1627, 1622, 1629, 1629, 1626, 1620, 1619, 1625, + 1623, 1628, 1630, 1631, 1628, 1632, 1638, 1633, 1640, 1631, + 1639, 1632, 1633, 1634, 1634, 1635, 1635, 1627, 1636, 1638, + 1637, 1641, 1648, 1653, 1636, 1637, 1630, 1640, 1639, 1642, + 1643, 1644, 1642, 1645, 1652, 1646, 1643, 1644, 1647, 1645, + 1646, 1641, 1649, 1653, 1647, 1648, 1651, 1649, 1650, 1650, + 1654, 1651, 1652, 1655, 1656, 1660, 1657, 1658, 1659, 1661, + 1662, 1668, 1662, 1661, 1663, 1664, 1666, 1667, 1656, 1654, - 1658, 1664, 1670, 1659, 1667, 1666, 1673, 1669, 1664, 1668, - 1671, 1672, 1660, 1669, 1663, 1674, 1667, 1676, 1676, 1677, - 1673, 1679, 1670, 1678, 1680, 1680, 1671, 1681, 1678, 1682, - 1683, 1672, 1684, 1679, 1686, 1685, 1674, 1689, 1687, 1677, - 1693, 1691, 1681, 1682, 1685, 1687, 1688, 47, 1694, 1686, - 1684, 1694, 1697, 1689, 1683, 1688, 1691, 1698, 1688, 1695, - 1695, 1691, 1696, 1696, 1697, 1693, 1699, 1700, 1700, 1699, - 1701, 1702, 1703, 1704, 1705, 1698, 1704, 1703, 1706, 1705, - 1707, 1709, 1708, 1701, 1711, 1714, 1710, 1715, 1712, 1719, - 1702, 1708, 1714, 1711, 1712, 1710, 1707, 1706, 1710, 1716, + 1657, 1658, 1664, 1655, 1668, 1669, 1659, 1670, 1666, 1667, + 1660, 1669, 1671, 1663, 1672, 1673, 1674, 1675, 1675, 1674, + 1679, 1676, 1678, 1678, 1681, 1684, 1680, 1670, 1671, 1673, + 1676, 1680, 1682, 1682, 1672, 1683, 1681, 1674, 1685, 1684, + 1679, 1686, 1687, 1688, 1690, 1689, 1693, 1691, 1695, 1714, + 1683, 1687, 1689, 1690, 1696, 1714, 1690, 1696, 1688, 1686, + 1699, 1693, 1685, 1691, 1697, 1697, 1693, 1698, 1698, 1700, + 1703, 1701, 1699, 1695, 1701, 1702, 1702, 1704, 1706, 1705, + 1707, 1706, 1708, 1703, 1705, 1707, 1709, 1700, 1710, 1711, + 1713, 1712, 1715, 1715, 1717, 1719, 1704, 1710, 1716, 1713, - 1709, 1713, 1713, 1717, 1718, 1719, 1721, 1715, 1720, 1725, - 1722, 1721, 1716, 1720, 1720, 1726, 1727, 1727, 1718, 1728, - 1729, 1717, 1722, 1730, 1730, 1731, 1731, 1732, 1730, 1729, - 1734, 1735, 1733, 1726, 1725, 1728, 1732, 1733, 1736, 1732, - 1731, 1737, 1741, 1739, 1740, 1742, 1737, 1737, 1734, 1743, - 1742, 1745, 1735, 1748, 1744, 1753, 1736, 1739, 1748, 1740, - 1744, 1746, 1746, 1743, 1741, 1747, 1749, 1750, 1751, 1745, - 1754, 1747, 1755, 1750, 1751, 1753, 1756, 1758, 1755, 1757, - 1749, 1762, 1757, 1758, 1754, 1760, 1763, 1764, 1757, 1756, - 1765, 1766, 1767, 1760, 1768, 1769, 1766, 1770, 1765, 1771, + 1712, 1708, 1709, 1712, 1718, 1716, 1720, 1721, 1711, 1724, + 1722, 1727, 1728, 1719, 1717, 1722, 1722, 1718, 1730, 1723, + 1720, 1724, 1731, 1721, 1723, 1729, 1729, 1732, 1732, 1736, + 1728, 1731, 1732, 1734, 1730, 1735, 1727, 1733, 1733, 1737, + 1735, 1738, 1734, 1739, 1741, 1734, 1742, 1736, 1739, 1739, + 1743, 1744, 1733, 1745, 57, 1747, 1744, 1746, 1741, 1738, + 1737, 1742, 1749, 1746, 1748, 1748, 1750, 1745, 1749, 1751, + 1752, 1750, 1743, 1747, 1753, 1755, 1752, 1756, 1757, 1758, + 1753, 1760, 1762, 1751, 1757, 1759, 1764, 1760, 1759, 1765, + 1762, 1756, 1758, 1766, 1759, 1755, 1767, 1768, 1769, 52, - 1762, 1767, 1772, 1779, 1769, 1763, 1764, 1768, 1773, 1773, - 1770, 1774, 1775, 1771, 1777, 1780, 1772, 1774, 1775, 1776, - 1778, 1778, 1776, 1779, 1781, 1782, 1782, 1777, 1783, 1784, - 1773, 1785, 1786, 1780, 1787, 1784, 1789, 1789, 1790, 1793, - 1791, 1783, 1792, 1781, 1791, 1794, 1795, 1792, 1786, 1797, - 1794, 1795, 1787, 1785, 1796, 1799, 1800, 1801, 1790, 1793, - 1801, 1802, 1803, 1796, 1805, 1800, 1799, 1804, 1804, 1806, - 1807, 1809, 1797, 1802, 1808, 1808, 1811, 1803, 1812, 1810, - 1814, 1806, 1815, 1805, 1817, 1809, 1810, 1816, 1811, 1807, - 1812, 1818, 1819, 1816, 1820, 1820, 1817, 1821, 1819, 1814, + 1770, 1771, 1768, 1772, 1767, 1764, 1773, 1769, 1765, 1774, + 1771, 1776, 1766, 1770, 1775, 1775, 1772, 1776, 1777, 1778, + 1773, 1779, 1778, 1774, 1777, 1780, 1780, 1781, 1782, 1783, + 1784, 1784, 1785, 1786, 1779, 1787, 1775, 1788, 1789, 1786, + 1791, 1791, 1792, 1795, 1794, 1785, 1782, 1781, 1783, 1794, + 1793, 1799, 1798, 1788, 1793, 1796, 1789, 1787, 1801, 1797, + 1796, 1798, 1792, 1795, 1797, 1803, 1802, 1804, 1803, 1801, + 1805, 1806, 1806, 1807, 1799, 1802, 1808, 1809, 1813, 1804, + 1810, 1810, 1812, 1811, 1816, 1805, 1814, 1817, 1808, 1812, + 1813, 1820, 1807, 1818, 1819, 1821, 1809, 1811, 1814, 1818, - 1821, 1824, 1815, 1822, 1822, 1825, 1824, 1826, 1828, 1818, - 1827, 1827, 1831, 1826, 1825, 1829, 1830, 1829, 1832, 1830, - 1828, 1833, 1835, 1834, 1836, 1837, 1838, 1835, 1839, 1836, - 1840, 1842, 1831, 1841, 1837, 1840, 1848, 1845, 1838, 1833, - 1832, 1834, 1841, 1839, 1843, 1844, 1846, 1846, 1847, 1843, - 1844, 1842, 1845, 1850, 1847, 1841, 1843, 1848, 1851, 1852, - 1853, 1854, 1855, 1860, 1855, 1863, 1856, 1857, 1857, 1850, - 1858, 1858, 1859, 1859, 1861, 1861, 1853, 1851, 1852, 1864, - 1856, 1854, 1856, 1860, 1862, 1862, 1863, 1865, 1866, 1866, - 1867, 1868, 1869, 1871, 1867, 1869, 1872, 1868, 1873, 1871, + 1831, 1821, 1831, 1816, 1822, 1822, 1819, 1817, 1823, 1820, + 1826, 1823, 1824, 1824, 1827, 1826, 1828, 1829, 1829, 1830, + 1833, 1832, 1828, 1827, 1832, 1834, 1835, 1836, 1837, 1838, + 1839, 1830, 1842, 1837, 1838, 1841, 1840, 1842, 1844, 1839, + 1833, 1845, 1843, 1853, 1835, 1836, 1845, 1834, 1840, 1846, + 1841, 1843, 1847, 1845, 1846, 1848, 1848, 1849, 1844, 1850, + 1852, 1855, 1853, 1849, 1843, 1854, 1856, 1847, 1857, 1858, + 1857, 1859, 1859, 1860, 1860, 1862, 1852, 1855, 1861, 1861, + 1850, 1863, 1863, 1858, 1854, 1858, 1856, 1864, 1864, 1865, + 1866, 1867, 1868, 1868, 1869, 1862, 1870, 1871, 1869, 1873, - 1864, 1874, 1875, 1878, 1873, 1881, 1874, 1876, 1865, 1882, - 1876, 1877, 1877, 1879, 1872, 1880, 1880, 1883, 1879, 1884, - 1881, 1889, 1883, 1878, 1884, 1885, 1885, 1875, 1886, 1887, - 1882, 1888, 1892, 1886, 1890, 1887, 1891, 1893, 1892, 1896, - 1897, 1889, 1895, 1888, 1888, 1888, 1900, 1895, 1895, 1898, - 1888, 1898, 1890, 1896, 1899, 1897, 1891, 1893, 1901, 1902, - 1903, 1900, 1904, 1906, 1901, 1899, 1905, 1905, 1902, 1907, - 1907, 1908, 1909, 1910, 1910, 1911, 1911, 1912, 1915, 1915, - 1903, 1916, 1920, 1904, 1917, 1922, 1919, 1923, 1923, 1906, - 1921, 1908, 1924, 1917, 1909, 1919, 1921, 1912, 1926, 1925, + 1871, 1874, 1870, 1875, 1877, 1873, 1879, 1879, 1876, 1875, + 1865, 1866, 1867, 1876, 1878, 1880, 1881, 1878, 1883, 1874, + 1884, 1881, 1882, 1882, 1891, 1885, 1886, 1887, 1887, 1877, + 1885, 1886, 1888, 1883, 1889, 1880, 1890, 1888, 1892, 1893, + 1889, 1884, 1895, 1896, 1891, 1894, 1897, 1898, 1890, 1890, + 1890, 1894, 1898, 1897, 1901, 1890, 1892, 1902, 1905, 1893, + 1900, 1908, 1895, 1896, 1904, 1900, 1900, 1903, 1901, 1903, + 1906, 1907, 1902, 1905, 1909, 1904, 1906, 1910, 1910, 1911, + 1907, 1908, 1912, 1912, 1913, 1914, 1915, 1915, 1916, 1916, + 1917, 1920, 1920, 1921, 1922, 1909, 1925, 1924, 1927, 1928, - 1927, 1922, 1928, 1920, 1930, 1926, 1916, 1929, 1929, 1927, - 1931, 1933, 1935, 1924, 1925, 1934, 1936, 1933, 1935, 1938, - 1934, 1939, 1937, 1939, 1941, 1938, 1931, 1942, 1928, 1937, - 1930, 1943, 1943, 1942, 1944, 1945, 1936, 1946, 1948, 1944, - 1947, 1948, 1949, 1941, 1945, 1950, 1951, 1952, 1950, 1953, - 1953, 1956, 1954, 1957, 1949, 1955, 1958, 1946, 1954, 1947, - 1958, 1955, 1960, 1961, 1951, 1962, 1963, 1963, 1957, 1964, - 1962, 1956, 1965, 1952, 1966, 1968, 1958, 1969, 1970, 1970, - 1971, 1969, 1960, 1972, 1977, 1961, 1971, 1973, 1973, 1966, - 1975, 1965, 1972, 1964, 1968, 1974, 1976, 1976, 1978, 1974, + 1928, 1929, 1926, 1922, 1913, 1911, 1924, 1914, 1926, 1930, + 1917, 1932, 1931, 1933, 1927, 1934, 1934, 1925, 1921, 1931, + 1932, 1935, 1929, 1938, 1930, 1936, 1939, 1940, 1941, 1938, + 1942, 1939, 1943, 1940, 1944, 1946, 1944, 1942, 1943, 1933, + 1947, 1936, 1948, 1948, 1949, 1951, 1947, 1935, 1941, 1949, + 1950, 1952, 1953, 1956, 1946, 1953, 1954, 1955, 1957, 1950, + 1955, 1958, 1958, 1959, 1962, 1951, 1960, 1961, 1954, 1959, + 1952, 1956, 1960, 1963, 1965, 1966, 1967, 1963, 1969, 1962, + 1970, 1967, 1968, 1968, 1957, 1971, 1973, 1961, 1974, 1975, + 1975, 47, 1974, 1963, 1965, 1976, 1982, 1966, 1977, 1970, - 1979, 1975, 1980, 1981, 1982, 1977, 1975, 1980, 1983, 1984, - 1986, 1985, 1978, 1987, 1988, 1984, 1989, 1989, 1987, 1979, - 1990, 1990, 1991, 1981, 1982, 1986, 1991, 1988, 1983, 1985, - 1993, 1994, 1995, 1996, 1997, 1997, 1999, 1999, 1996, 1993, - 2000, 2004, 1994, 2001, 2003, 2000, 2000, 1994, 2005, 2001, - 2003, 2006, 1995, 2005, 2007, 2010, 2009, 2011, 2013, 2010, - 2007, 2012, 2012, 2006, 2014, 2015, 2016, 2004, 2009, 2011, - 2014, 2018, 2016, 2017, 2017, 2019, 2020, 2021, 2024, 2023, - 2025, 2020, 2032, 2013, 2031, 2025, 2033, 2015, 2032, 2021, - 2018, 2023, 2033, 2027, 18, 2019, 2027, 2024, 2028, 2028, + 1971, 1976, 1969, 1978, 1978, 1973, 1979, 1977, 1980, 1983, + 1979, 1981, 1981, 1984, 1986, 1985, 1987, 1982, 1988, 1980, + 1985, 1989, 1990, 1983, 1980, 1992, 1991, 1989, 1998, 1993, + 1992, 1996, 1984, 2000, 1986, 1996, 1987, 1998, 1988, 1999, + 1990, 1991, 1993, 1994, 1994, 1995, 1995, 2001, 2002, 2002, + 1999, 2009, 2001, 2000, 2005, 1999, 2004, 2004, 2006, 2005, + 2005, 2008, 2011, 2010, 2006, 2012, 2014, 2008, 2010, 2015, + 2016, 2012, 2018, 2015, 2011, 2017, 2017, 2009, 2014, 2019, + 2020, 2021, 2016, 2022, 2022, 2019, 2023, 2021, 2024, 2025, + 2029, 2026, 2028, 2030, 2025, 2036, 2032, 2018, 2030, 2032, - 2029, 2029, 2030, 2030, 2031, 2034, 2035, 2036, 2038, 2041, - 2034, 2040, 2035, 2038, 2040, 2044, 2036, 2042, 2042, 2045, - 2046, 2041, 2047, 2047, 2048, 2046, 2053, 2044, 2056, 2049, - 2050, 2045, 2054, 2048, 2049, 2050, 2051, 2052, 2052, 2051, - 2055, 2054, 2060, 2059, 2057, 2058, 2053, 2056, 2057, 2059, - 2058, 2062, 2061, 2063, 2065, 2065, 2066, 2069, 2055, 2067, - 2060, 2061, 2068, 2070, 2070, 2073, 2065, 2063, 2067, 2062, - 2071, 2068, 2072, 2074, 2066, 2075, 2081, 2069, 2074, 2071, - 2078, 2078, 2080, 2082, 2072, 2080, 2073, 2083, 2075, 2085, - 2087, 2086, 2081, 2088, 2089, 2089, 2087, 2091, 2090, 2082, + 2033, 2033, 2020, 2026, 2028, 2023, 2034, 2034, 2024, 2029, + 2035, 2035, 2037, 2038, 2040, 2036, 2039, 2041, 2037, 2038, + 2040, 2039, 2043, 2046, 2049, 2045, 2041, 2043, 2045, 2047, + 2047, 2050, 2051, 2052, 2052, 2046, 2049, 2051, 2053, 2054, + 2055, 2057, 2057, 2050, 2054, 2055, 2056, 2053, 2058, 2056, + 2059, 2060, 2061, 2062, 2065, 2063, 2064, 2062, 2066, 2059, + 2063, 2067, 2064, 2068, 2070, 2070, 2071, 2066, 2058, 2060, + 2074, 2061, 2065, 2072, 2073, 2078, 2070, 2068, 2076, 2067, + 2075, 2075, 2072, 2073, 2071, 2077, 2079, 2076, 2080, 2086, + 2074, 2079, 2083, 2083, 2087, 2085, 2078, 2077, 2085, 2088, - 2090, 2092, 2092, 2083, 2085, 2086, 2093, 2095, 2095, 2098, - 2088, 2096, 2096, 2099, 2093, 2091, 2100, 2101, 2102, 2099, - 2103, 2104, 2100, 2105, 2105, 2102, 2106, 2106, 2107, 2110, - 2112, 2101, 2098, 2108, 2109, 2106, 2111, 2113, 2116, 2117, - 17, 2104, 2103, 2118, 2110, 2108, 2109, 2120, 2111, 2107, - 0, 2114, 2113, 2114, 2121, 2118, 2112, 2114, 2116, 2119, - 2119, 2122, 2117, 2123, 2122, 2120, 2124, 2126, 2123, 2127, - 2114, 2127, 2126, 2128, 2121, 2129, 2130, 2134, 2132, 2135, - 2129, 2136, 2137, 2130, 2137, 2138, 2124, 2132, 2135, 2142, - 2139, 2128, 2141, 2136, 2141, 2134, 2139, 2143, 2143, 2144, + 2091, 2080, 2090, 2092, 2093, 2086, 2094, 2094, 2096, 2092, + 2087, 2095, 2098, 2095, 2091, 2088, 2103, 2090, 2097, 2097, + 2098, 2093, 2100, 2100, 2101, 2101, 2096, 2104, 2105, 2106, + 2107, 2108, 2109, 2104, 2105, 2110, 2110, 2107, 2112, 2103, + 2111, 2111, 2113, 2106, 2114, 2115, 2116, 2117, 2118, 2111, + 2119, 2121, 2109, 2108, 2113, 2124, 2114, 2118, 2116, 2112, + 2115, 2120, 2122, 2125, 2122, 2119, 2120, 2120, 2122, 2128, + 2126, 2127, 2127, 2117, 2121, 2124, 2129, 2130, 2131, 2132, + 2130, 2122, 2126, 2131, 2134, 2136, 2125, 2128, 2135, 2134, + 2135, 2138, 2137, 2140, 2142, 2143, 2129, 2137, 2138, 2132, - 2145, 2149, 2147, 2142, 2138, 2145, 2146, 2147, 2146, 2148, - 2150, 2151, 2152, 2154, 2148, 2153, 2156, 2155, 2152, 2149, - 2153, 2156, 2156, 2159, 2157, 2144, 2154, 2160, 2150, 2155, - 2164, 2151, 2157, 2161, 2161, 2162, 2162, 2163, 2165, 2167, - 2166, 2160, 2159, 2169, 2167, 2164, 2166, 2168, 2163, 2168, - 2172, 2170, 2171, 2171, 2173, 2173, 2174, 2174, 2165, 2170, - 2175, 2169, 2172, 2176, 2177, 2180, 2179, 2170, 2176, 2175, - 2179, 2181, 2182, 2181, 2180, 2183, 2184, 2180, 2185, 2186, - 2183, 2183, 2177, 2188, 2189, 2190, 2192, 2185, 2184, 2189, - 2190, 2186, 2193, 2182, 2194, 2188, 2195, 2195, 2196, 2192, + 2146, 2144, 2140, 2136, 2143, 2145, 2150, 2145, 2147, 2149, + 2152, 2149, 2142, 2144, 2147, 2151, 2151, 2153, 2159, 2146, + 2150, 2154, 2153, 2154, 2155, 2156, 2157, 2158, 2160, 2155, + 2156, 2163, 2161, 2162, 2160, 2164, 2152, 2161, 2159, 2165, + 2164, 2164, 2167, 2163, 2157, 2158, 2162, 2165, 2168, 2169, + 2169, 2170, 2170, 2171, 2172, 2173, 2176, 2174, 2176, 2177, + 2175, 2167, 2168, 2174, 2171, 2175, 2178, 2179, 2179, 2172, + 2185, 2180, 2181, 2181, 2178, 2173, 2183, 2177, 2182, 2182, + 2187, 2184, 2178, 2180, 2187, 2183, 2184, 2188, 2185, 2189, + 2190, 2189, 2191, 2192, 2193, 2194, 2188, 2191, 2191, 2188, - 2197, 2198, 2200, 2194, 2199, 2203, 2208, 2201, 2202, 2207, - 2203, 2208, 2193, 2205, 2206, 2210, 2196, 2209, 2197, 2198, - 2199, 2201, 2209, 2202, 2210, 2205, 2206, 2200, 2211, 2207, - 2214, 2216, 2217, 2218, 2219, 2220, 2214, 2216, 2221, 2222, - 2222, 2223, 2224, 2224, 2225, 2226, 2211, 2221, 2218, 2214, - 2223, 2228, 2219, 2227, 2229, 2217, 2228, 2227, 2231, 2232, - 2220, 2233, 2225, 2234, 2226, 2232, 2235, 2229, 2234, 2234, - 2236, 2237, 2235, 2238, 2237, 2239, 2236, 2231, 2242, 2242, - 2244, 2238, 2247, 2233, 2243, 2243, 2245, 2245, 2248, 2244, - 2246, 2246, 2249, 2256, 2247, 2239, 2250, 2256, 2249, 2243, + 2196, 2197, 2200, 2193, 2198, 2192, 2197, 2194, 2201, 2198, + 2202, 2190, 2196, 2203, 2203, 2200, 2204, 2205, 2206, 2202, + 2208, 2207, 2211, 2215, 2209, 2210, 2216, 2211, 2201, 2213, + 2214, 2216, 2219, 2225, 2204, 2205, 2206, 2207, 2209, 2217, + 2210, 2213, 2214, 2215, 2217, 2208, 2218, 2222, 2224, 2226, + 2219, 2227, 2228, 2222, 2224, 2218, 2225, 2233, 2229, 2230, + 2230, 2231, 2232, 2232, 2226, 2234, 2222, 2229, 2235, 2227, + 2231, 2236, 2235, 2237, 2239, 2233, 2236, 2228, 2241, 2240, + 2255, 2247, 2242, 2243, 2234, 2240, 2237, 2242, 2242, 2243, + 2244, 2245, 2255, 2239, 2245, 2246, 2244, 2250, 2250, 2252, - 2257, 2250, 2251, 2251, 2252, 2252, 2248, 2253, 2254, 2258, - 2243, 2259, 2253, 2258, 2254, 2261, 2262, 2264, 2263, 2265, - 2257, 2262, 2267, 2269, 2265, 2266, 2268, 2270, 2269, 2271, - 2271, 2259, 2264, 2272, 2274, 2273, 2275, 2272, 2267, 2274, - 2261, 2263, 2276, 2266, 2277, 2278, 2268, 2279, 2280, 2270, - 2273, 2281, 2282, 2280, 2275, 2283, 2283, 2278, 2286, 2285, - 2287, 2288, 2277, 2289, 2281, 2290, 2279, 2285, 2276, 2291, - 2282, 2292, 2293, 2294, 2299, 2295, 2297, 2286, 2303, 2287, - 2288, 2295, 2300, 2302, 2293, 2302, 2289, 2299, 2291, 2290, - 2305, 2297, 2292, 2301, 2294, 2305, 2300, 2307, 2303, 2301, + 2241, 2247, 2256, 2246, 2251, 2251, 2253, 2253, 2252, 2254, + 2254, 2257, 2264, 2258, 2259, 2259, 2264, 2257, 2258, 2251, + 2256, 2260, 2260, 2261, 2265, 2262, 2267, 2269, 2261, 2266, + 2251, 2262, 2270, 2266, 2271, 2272, 2273, 2270, 2274, 2275, + 2276, 2273, 2277, 2278, 2265, 2283, 2267, 2277, 2279, 2279, + 2272, 2281, 2269, 2284, 2280, 2275, 2274, 2271, 2280, 2282, + 2276, 2286, 2285, 2283, 2282, 2278, 2281, 2287, 2289, 2288, + 2290, 2291, 2291, 2286, 2288, 2293, 2294, 2295, 2296, 2284, + 2285, 2289, 2297, 2293, 2298, 2299, 2287, 2301, 2290, 2300, + 2302, 2305, 2303, 18, 2307, 2294, 2295, 2296, 2303, 2301, - 2304, 2304, 2306, 2308, 2309, 2306, 2310, 2311, 2311, 2315, - 2307, 2312, 2312, 2313, 0, 2313, 2314, 2314, 2309, 2310, - 2316, 2317, 2317, 2319, 2315, 2318, 2318, 2308, 2320, 2320, - 2321, 2321, 2319, 2316, 2322, 2319, 2324, 2325, 2326, 2322, - 2327, 2324, 2328, 2328, 2329, 2329, 2330, 2331, 2331, 2332, - 2333, 2333, 2327, 2334, 2335, 2336, 2336, 2325, 2326, 2335, - 2337, 2337, 2338, 2339, 2340, 2330, 2341, 2332, 2334, 2342, - 2344, 2346, 2339, 2345, 2345, 2344, 2338, 2347, 2347, 2348, - 2341, 2340, 2349, 2350, 2352, 2352, 2354, 2349, 2342, 2350, - 2346, 2351, 2353, 2353, 2351, 2355, 2356, 2348, 2356, 2358, + 2308, 2311, 2316, 2309, 2299, 2297, 2305, 2307, 2298, 2309, + 2300, 2302, 2315, 2310, 2308, 2310, 2312, 2312, 2313, 2314, + 2317, 2311, 2314, 2313, 2318, 2315, 2316, 2319, 2319, 2320, + 2320, 2321, 2323, 2321, 2317, 2322, 2322, 2318, 2324, 2325, + 2326, 2326, 2328, 2328, 2326, 2329, 2329, 2323, 2330, 2330, + 2331, 2337, 2325, 2324, 2332, 2332, 2333, 2333, 2334, 2331, + 2336, 2338, 2331, 2334, 2339, 2336, 2340, 2340, 2341, 2341, + 2342, 2337, 2343, 2343, 2344, 2346, 2339, 2345, 2345, 2347, + 2350, 2338, 2348, 2348, 2347, 2349, 2349, 2351, 2352, 2342, + 2346, 2354, 2344, 2353, 2350, 2356, 2351, 2357, 2357, 2358, - 2352, 2359, 2360, 2360, 2362, 2354, 2363, 2364, 2365, 2366, - 2355, 2367, 2367, 2366, 2358, 2368, 2370, 2369, 2371, 2374, - 2359, 2363, 2369, 2365, 2362, 2373, 2373, 2376, 2375, 2377, - 2364, 2370, 2378, 2371, 2368, 2375, 2379, 2380, 0, 2374, - 2382, 2376, 2381, 2381, 2383, 2387, 2383, 2377, 2386, 2382, - 2378, 2379, 2384, 2388, 2386, 2384, 2389, 2387, 2388, 2390, - 2391, 2389, 2392, 2380, 2393, 2394, 2396, 2399, 2402, 2393, - 2384, 2396, 2384, 2391, 2397, 2398, 2407, 2410, 2403, 2397, - 2398, 2400, 2399, 2392, 2390, 2405, 2401, 2400, 2404, 2402, - 2405, 2394, 2401, 2403, 2404, 2406, 2408, 2410, 2411, 2409, + 2356, 2359, 2359, 2360, 2361, 2352, 2362, 2353, 2363, 2361, + 2354, 2363, 2362, 2364, 2364, 2365, 2365, 2366, 2358, 2367, + 2368, 2360, 2368, 2370, 2371, 2372, 2372, 2374, 2376, 2364, + 2375, 2377, 17, 2378, 2367, 2380, 2366, 2378, 2370, 2379, + 2379, 2382, 2383, 2371, 2381, 2375, 2377, 2374, 2386, 2381, + 2388, 2376, 2385, 2385, 2380, 2387, 2382, 2383, 2389, 2390, + 2391, 2392, 2387, 2394, 2388, 2393, 2393, 2395, 2386, 2395, + 2396, 2399, 2394, 2396, 2398, 2391, 2389, 2390, 2402, 2400, + 2398, 2401, 2403, 2399, 2400, 2404, 2401, 2392, 2396, 2405, + 2396, 2406, 2408, 2409, 2405, 2403, 2410, 2408, 2409, 2411, - 2406, 2407, 2409, 2412, 2413, 2414, 2415, 2411, 2420, 2408, - 2416, 2417, 2412, 2413, 2414, 2418, 2416, 2417, 2422, 2418, - 2415, 2423, 2424, 2424, 2427, 2425, 2426, 2426, 2420, 2429, - 2423, 2425, 2430, 2427, 2429, 2426, 2428, 2428, 2422, 2432, - 2433, 2434, 2434, 2435, 2436, 2438, 2439, 2441, 2440, 2445, - 2447, 2447, 2430, 2436, 2430, 2432, 2433, 2438, 2435, 2441, - 2444, 2443, 2439, 2440, 2443, 2444, 2446, 2448, 2448, 2445, - 2450, 2450, 2451, 2457, 2452, 2451, 2453, 2454, 2446, 2452, - 2455, 2459, 2453, 2454, 2456, 2456, 2460, 2457, 2461, 2455, - 2458, 2458, 2463, 2459, 2462, 2462, 2464, 2465, 2463, 2467, + 2414, 2410, 2412, 2402, 2413, 2415, 2404, 2416, 2412, 2419, + 2413, 2417, 2420, 2416, 2411, 2422, 2417, 2406, 2418, 2421, + 2415, 2414, 2421, 2418, 2423, 2420, 2427, 2424, 2425, 2426, + 2432, 2434, 2450, 2423, 2419, 2422, 2424, 2425, 2426, 2428, + 2427, 2429, 2430, 2435, 2450, 2428, 2430, 2429, 2436, 2436, + 2432, 2434, 2435, 2437, 2438, 2438, 2439, 2440, 2440, 2437, + 2442, 2441, 2444, 2438, 2447, 2439, 2441, 2445, 2446, 2446, + 2451, 2455, 2448, 2452, 2455, 2453, 2457, 0, 2444, 2447, + 2442, 2448, 2442, 2445, 2456, 2458, 2451, 2453, 2452, 2456, + 2459, 2459, 2460, 2460, 2462, 2462, 2457, 2458, 2463, 2464, - 2460, 2468, 2465, 2467, 2468, 2469, 2469, 2461, 2470, 2471, - 2464, 2472, 2473, 2470, 2471, 2474, 2476, 2476, 2475, 2477, - 2472, 2473, 2475, 2479, 2480, 2481, 2482, 2483, 2479, 2484, - 2485, 2486, 2477, 2484, 2487, 2474, 2486, 2488, 2489, 2489, - 2487, 2483, 2490, 2488, 2480, 2481, 2482, 2491, 2492, 2493, - 2485, 2494, 2495, 2495, 2493, 2498, 2497, 2499, 2500, 2501, - 2490, 2502, 2499, 2507, 2500, 2501, 2491, 2492, 2497, 2502, - 2505, 2498, 2494, 2503, 2511, 2503, 0, 2507, 2516, 2505, - 2508, 2508, 2509, 2510, 2516, 2509, 2510, 2512, 2512, 2515, - 2517, 2518, 2518, 2515, 2519, 2522, 2522, 2524, 2526, 2530, + 2465, 2463, 2466, 2467, 2464, 2469, 2465, 2472, 2466, 2468, + 2468, 2471, 2467, 2470, 2470, 2473, 2474, 2474, 2475, 2469, + 2477, 2472, 2476, 2471, 2475, 2477, 2479, 2486, 2480, 2484, + 2479, 2480, 2481, 2481, 2473, 2482, 2476, 2483, 2484, 2485, + 2482, 2487, 2483, 2488, 2488, 2487, 2489, 2486, 2485, 2491, + 2492, 2493, 2494, 2495, 2491, 2497, 2496, 2498, 2499, 2489, + 2496, 2502, 2498, 2500, 2499, 2501, 2501, 2495, 2503, 2500, + 2492, 2493, 2494, 2504, 2506, 2497, 2505, 2507, 2507, 2502, + 2510, 2505, 2509, 2511, 2512, 2513, 0, 2503, 2511, 2514, + 2512, 2513, 2504, 2517, 2509, 2506, 2510, 2514, 2515, 2519, - 2511, 2527, 2517, 2519, 2530, 2531, 2532, 2543, 2533, 2534, - 2535, 2535, 2526, 2533, 2534, 2524, 2539, 2527, 2537, 2537, - 2540, 2542, 2539, 2541, 2541, 2544, 2546, 2532, 0, 2543, - 2544, 2531, 2547, 2552, 2548, 2547, 2549, 2542, 2550, 2550, - 2540, 2553, 2552, 2554, 2555, 2546, 2548, 2553, 2549, 2554, - 2556, 2558, 2558, 2559, 2560, 0, 2559, 2561, 2563, 2563, - 2564, 2564, 2555, 2565, 2566, 2556, 2568, 2567, 2565, 2569, - 2570, 2571, 2570, 2560, 2569, 2561, 2567, 2572, 2573, 2568, - 2575, 2574, 2566, 2576, 2577, 2571, 2574, 2578, 2578, 2577, - 2573, 2572, 2579, 2579, 2580, 2580, 2581, 2581, 2582, 2583, + 2515, 2520, 2517, 2521, 2521, 2522, 2523, 2523, 2522, 2525, + 2527, 2526, 2525, 2519, 2526, 2520, 2528, 2528, 2531, 2532, + 2533, 2535, 2531, 2534, 2534, 2532, 2538, 2538, 2540, 2542, + 2535, 2543, 2533, 2546, 2547, 2548, 2527, 2549, 2546, 2550, + 2551, 2551, 2549, 2542, 2550, 2555, 2540, 2543, 2553, 2553, + 2556, 2555, 2557, 2557, 2559, 2558, 2548, 2560, 2562, 0, + 2547, 2563, 2560, 2564, 2563, 2568, 2565, 2566, 2566, 2571, + 2556, 2558, 2576, 2569, 2568, 2564, 2559, 2562, 2565, 2569, + 2570, 2572, 2574, 2574, 2577, 2575, 2570, 2571, 2575, 2579, + 2579, 2576, 2580, 2580, 2581, 2582, 2572, 2583, 2584, 2581, - 2575, 2584, 2588, 2576, 2585, 2585, 2584, 2586, 2586, 2589, - 2582, 2587, 2587, 2590, 2588, 2591, 2592, 2583, 2593, 2594, - 2594, 2595, 2596, 2596, 2600, 2590, 2597, 2597, 2598, 2589, - 2599, 2599, 2602, 2603, 2593, 2591, 2600, 2592, 2601, 2598, - 2595, 2604, 2605, 2606, 2602, 2601, 2604, 2607, 2607, 2608, - 2609, 2609, 2610, 2603, 2611, 2612, 2613, 2614, 2608, 2615, - 2617, 2623, 2605, 2606, 2616, 2624, 2616, 2619, 2612, 2618, - 2618, 2614, 2617, 2620, 2611, 2621, 2619, 2625, 2610, 2623, - 2613, 2615, 2626, 2627, 2628, 2626, 2629, 2624, 2620, 2628, - 2621, 2629, 2630, 2630, 2631, 2631, 2637, 2627, 2632, 2632, + 2585, 2586, 2577, 2586, 2587, 2585, 2583, 2588, 2589, 2590, + 2591, 2584, 2592, 2582, 2590, 2594, 2594, 2593, 2587, 2598, + 2589, 2588, 2593, 2595, 2595, 2596, 2596, 2597, 2597, 2599, + 2591, 2598, 2592, 2600, 2601, 2601, 2602, 2602, 2600, 2603, + 2603, 2604, 2605, 2606, 2607, 2608, 0, 2599, 2611, 2609, + 2610, 2610, 2614, 2604, 2619, 2606, 2612, 2612, 2613, 2613, + 2615, 2615, 2605, 2614, 2607, 2609, 2608, 2611, 2616, 2617, + 2618, 2621, 2620, 2622, 2619, 2624, 2617, 2620, 2623, 2623, + 2616, 2626, 2618, 2627, 2624, 2625, 2625, 2628, 2629, 2631, + 2630, 2621, 2632, 2622, 2632, 2639, 2633, 2634, 2634, 2636, - 2625, 2634, 2634, 2636, 2636, 2638, 2639, 2640, 2642, 2643, - 2644, 2645, 2646, 2647, 2637, 2648, 2638, 2648, 2649, 2650, - 2654, 2646, 2640, 2651, 2654, 2639, 2656, 2643, 2642, 2652, - 2652, 2645, 2644, 2647, 2655, 2655, 2657, 2650, 2649, 2658, - 2656, 2651, 2659, 2659, 2661, 2662, 2662, 2663, 2658, 2664, - 2665, 2667, 2666, 2661, 2668, 2669, 2671, 2672, 2657, 2666, - 2670, 2673, 2673, 2675, 2672, 2663, 2667, 2664, 2665, 2674, - 2674, 2676, 2668, 2669, 2677, 2671, 2670, 2679, 2679, 2681, - 2677, 2680, 2680, 2675, 2682, 2681, 2683, 2685, 2684, 2676, - 2687, 2686, 2688, 2690, 2691, 2687, 2689, 0, 2692, 2691, + 2628, 2635, 2637, 2627, 2630, 2640, 2641, 2626, 2633, 2643, + 2635, 2631, 2629, 2639, 2636, 2642, 2644, 2637, 2642, 2645, + 2653, 2644, 2655, 2643, 2645, 2646, 2646, 2640, 2654, 2641, + 2647, 2647, 2648, 2648, 2650, 2650, 2652, 2652, 2653, 2654, + 2656, 2655, 2658, 2659, 2660, 2661, 2666, 2662, 2663, 2664, + 2665, 2664, 0, 2667, 2673, 2656, 2662, 2668, 2668, 2670, + 2672, 2659, 2658, 2670, 2666, 2661, 2660, 2679, 2663, 2674, + 2665, 2667, 2671, 2671, 2672, 2677, 2673, 2680, 2674, 2675, + 2675, 2678, 2678, 2681, 2677, 2679, 2682, 2683, 2684, 2685, + 2687, 2688, 2686, 2682, 2691, 2680, 2689, 2689, 2688, 2690, - 2692, 2697, 2682, 2684, 2683, 2686, 2685, 2689, 2693, 2693, - 2695, 2695, 2688, 2690, 2694, 2699, 2694, 2700, 2701, 2702, - 2697, 2703, 2704, 2705, 2699, 2706, 2703, 2704, 2709, 2710, - 2701, 2711, 2712, 2712, 2711, 2713, 2700, 2714, 2716, 2702, - 2715, 2715, 2717, 2705, 2706, 2720, 2727, 2710, 2709, 2716, - 2713, 2724, 2718, 2721, 2722, 2714, 2718, 2717, 2722, 2721, - 2720, 2723, 2723, 2726, 2724, 2728, 2727, 2729, 2729, 2731, - 2732, 2733, 2734, 2734, 2736, 2733, 2735, 2735, 2726, 2732, - 2740, 2731, 2737, 2737, 2738, 2728, 2739, 2741, 2742, 2738, - 2743, 2743, 2749, 2736, 2751, 2739, 2740, 2748, 2748, 2741, + 2690, 2681, 2683, 2692, 2693, 2698, 2684, 2685, 2686, 2687, + 2693, 2695, 2695, 2697, 2691, 2696, 2696, 2699, 2700, 2697, + 2701, 2692, 2702, 2698, 2703, 2704, 2704, 2705, 2706, 2703, + 2707, 2708, 2709, 2700, 0, 2699, 2702, 2716, 2710, 2701, + 2712, 2712, 2708, 2710, 2711, 2721, 2711, 2705, 2706, 2713, + 2707, 2713, 2709, 2714, 2714, 2718, 2716, 2719, 2720, 2724, + 2728, 2722, 2723, 2725, 2718, 2721, 2722, 2723, 2729, 2730, + 2720, 2733, 2730, 2731, 2731, 2732, 2719, 2734, 2734, 2724, + 2728, 2735, 2725, 2736, 2737, 2739, 2729, 2740, 2737, 2733, + 2732, 2741, 2735, 2740, 2743, 2741, 2742, 2742, 2736, 2745, - 2750, 2750, 2752, 2753, 2754, 2757, 2757, 2751, 2742, 2755, - 2756, 2758, 2759, 2754, 2749, 2752, 2753, 2764, 2755, 2756, - 2761, 2761, 2764, 2766, 2767, 2768, 2769, 2759, 2766, 2770, - 2768, 2758, 2771, 0, 2769, 2772, 2774, 2776, 2767, 2777, - 2778, 2771, 2776, 2772, 2777, 2779, 2779, 2781, 2770, 2780, - 2780, 2774, 2781, 2782, 2784, 2778, 2783, 2783, 2785, 2786, - 2787, 2784, 2788, 2785, 2789, 2790, 2790, 2791, 2788, 2789, - 2792, 2797, 2782, 2793, 2793, 2792, 2801, 2786, 2787, 2794, - 2794, 2801, 2791, 2800, 2797, 2798, 2798, 2799, 2800, 2800, - 2799, 2802, 2803, 2804, 2805, 2806, 2802, 2808, 2805, 2804, + 2739, 2746, 2747, 2748, 2748, 2750, 2751, 2743, 2752, 2753, + 2753, 2755, 2752, 2759, 2745, 2751, 2760, 2750, 2754, 2754, + 2757, 2746, 2747, 2756, 2756, 2757, 2758, 2761, 2760, 2759, + 2755, 2762, 2762, 2767, 2767, 2758, 2768, 2769, 2769, 2770, + 2771, 2772, 2773, 2776, 2776, 2777, 2774, 2761, 2775, 2778, + 2789, 2773, 2770, 2771, 2772, 2774, 2783, 2775, 2768, 2780, + 2780, 2783, 2785, 2786, 2778, 2777, 2787, 2785, 2788, 2789, + 2790, 2787, 2791, 2793, 2797, 2801, 2788, 2786, 2795, 2790, + 2791, 2796, 2800, 2795, 2798, 2798, 2796, 2800, 2793, 2797, + 2799, 2799, 2802, 2802, 2801, 2803, 2804, 2805, 2806, 2807, - 2806, 2807, 2810, 2809, 2813, 2814, 2803, 2811, 2812, 2813, - 2807, 2809, 2808, 2811, 2812, 2815, 2815, 2814, 2817, 2818, - 2821, 2826, 2823, 2810, 2818, 2817, 2819, 2823, 2824, 2819, - 2825, 2827, 2821, 2824, 2828, 2825, 2829, 2830, 2830, 2826, - 2831, 2832, 2835, 2828, 2827, 2829, 2832, 2836, 2837, 2831, - 2840, 2841, 2842, 2836, 2837, 2843, 2844, 2844, 2845, 2846, - 2835, 2847, 2848, 2851, 2849, 2845, 2850, 2850, 2853, 2840, - 2847, 2841, 2842, 2855, 2843, 2858, 2856, 2848, 2846, 2849, - 2856, 2859, 2851, 2853, 2857, 2857, 2860, 2859, 2861, 2862, - 2863, 2863, 2860, 2855, 2864, 2862, 2865, 2869, 2866, 2868, + 0, 2804, 2803, 2808, 2810, 2807, 2809, 2809, 2808, 2811, + 2812, 2812, 2813, 2813, 2811, 2805, 2806, 2816, 2819, 2810, + 2817, 2817, 2818, 2819, 2819, 2818, 2820, 2821, 2822, 2823, + 2816, 2820, 2821, 2824, 2825, 2823, 2826, 2824, 2827, 2825, + 2828, 2829, 2822, 2830, 2831, 2826, 2832, 2833, 2828, 2830, + 2831, 2832, 2837, 2827, 2834, 2834, 2836, 2837, 2838, 2833, + 2840, 2838, 2829, 2836, 2842, 2843, 2844, 2845, 2846, 2842, + 2843, 2844, 2840, 2847, 2848, 2849, 2849, 2850, 2854, 2851, + 2859, 2846, 2847, 2848, 2851, 2845, 2850, 2855, 2856, 2860, + 2861, 0, 2862, 2855, 2856, 2864, 2854, 2863, 2863, 2859, - 2858, 2871, 2864, 2866, 2874, 2876, 2861, 2871, 2868, 2872, - 2869, 2873, 2872, 2875, 2875, 2873, 2878, 2878, 2874, 2879, - 2876, 2865, 2880, 2880, 2881, 2881, 2883, 2883, 2884, 2885, - 2886, 2890, 2884, 2891, 2885, 2888, 2888, 2879, 2891, 2886, - 2892, 2893, 2894, 2896, 2897, 2897, 2893, 2893, 2899, 2899, - 2902, 2890, 2892, 2902, 2894, 2900, 2900, 2901, 2901, 2903, - 2904, 2906, 2906, 2896, 2907, 2909, 2910, 2910, 2911, 2911, - 2912, 2912, 2903, 2904, 2913, 2914, 2914, 2915, 2916, 2917, - 2918, 2927, 2907, 2919, 2919, 2909, 2918, 2920, 2923, 2913, - 2915, 2920, 2924, 2917, 2923, 2926, 2916, 2924, 2928, 2929, + 2865, 2870, 2864, 2867, 2868, 2869, 2869, 2871, 2873, 2860, + 2861, 2862, 2867, 2868, 2872, 2872, 2870, 2875, 2877, 2865, + 2878, 2880, 2871, 2881, 2878, 2879, 2879, 2873, 2882, 2881, + 2883, 2884, 2875, 2886, 2882, 2885, 2885, 2884, 2877, 2887, + 2888, 2886, 2890, 2891, 2893, 2888, 2880, 2896, 2883, 2894, + 2893, 2890, 2894, 2895, 2897, 2897, 2891, 2895, 2898, 2900, + 2900, 2896, 2901, 2954, 2887, 2902, 2902, 2903, 2903, 2905, + 2905, 2906, 2907, 2898, 2908, 2906, 2912, 2907, 2910, 2910, + 2901, 2913, 2914, 2908, 2915, 2916, 2913, 2918, 2954, 2915, + 2915, 2919, 2919, 2925, 2914, 2929, 2912, 2916, 2921, 2921, - 2926, 2926, 2930, 2931, 2927, 2932, 2933, 2942, 2930, 2931, - 2933, 2934, 2934, 2939, 2940, 2937, 2945, 2940, 2928, 2929, - 2937, 2939, 2943, 2944, 2944, 2943, 2946, 2947, 2948, 2949, - 2932, 2946, 2942, 2945, 2945, 2950, 2950, 2951, 2952, 2953, - 2954, 2952, 2955, 2949, 2959, 2947, 2960, 2960, 2948, 2952, - 2955, 2951, 2957, 2953, 2969, 2958, 2968, 2957, 2957, 2954, - 2958, 2958, 2966, 2959, 2961, 2961, 2962, 2962, 2963, 2963, - 2964, 2964, 2965, 2965, 2967, 2970, 2968, 2971, 2966, 2967, - 2969, 2972, 2971, 2973, 2974, 2975, 2976, 2977, 2973, 2970, - 2979, 2979, 2982, 2974, 2980, 2980, 2981, 2983, 2982, 2981, + 2922, 2922, 2923, 2923, 2926, 2924, 2925, 2918, 2924, 2928, + 2928, 2931, 2935, 2929, 2932, 2932, 2937, 2926, 2933, 2933, + 2934, 2934, 2936, 2936, 2938, 2939, 2940, 2935, 2949, 2937, + 0, 2931, 2940, 2941, 2941, 2945, 2942, 2950, 2946, 2939, + 2942, 2945, 2938, 2946, 2948, 2951, 2952, 2953, 2964, 2948, + 2948, 2949, 2952, 2953, 2955, 2956, 2956, 2950, 2955, 2959, + 2961, 2966, 2966, 2962, 2959, 2951, 2962, 2965, 2961, 2967, + 2965, 2968, 2969, 2964, 2970, 2971, 2968, 2972, 2972, 2973, + 2974, 2975, 2976, 2974, 2977, 3004, 2967, 2967, 2981, 2971, + 2969, 2974, 2977, 2973, 2970, 2975, 0, 2979, 2991, 2980, - 2972, 2985, 2985, 2986, 2996, 2975, 2976, 2977, 2987, 2987, - 2986, 2988, 2990, 2990, 2991, 2983, 2988, 2992, 2993, 2994, - 2997, 2997, 2996, 2991, 2998, 2998, 2992, 2993, 2994, 2999, - 3000, 3001, 3002, 2999, 3003, 3004, 3007, 0, 3006, 3000, - 3004, 3004, 3008, 3002, 3014, 3007, 3008, 3012, 3017, 3003, - 3001, 3006, 3012, 3013, 3013, 3016, 3016, 3018, 3014, 3019, - 3021, 3021, 3017, 3022, 3023, 3027, 3028, 3031, 3032, 3029, - 3036, 3028, 3022, 3034, 3032, 3038, 3023, 3019, 3029, 3039, - 3038, 3043, 3018, 3041, 3039, 3034, 3043, 3031, 3040, 3040, - 3027, 3036, 3041, 3044, 3045, 3046, 3046, 3048, 3048, 3046, + 3004, 2976, 2979, 2979, 2980, 2980, 2988, 2981, 2982, 2982, + 2983, 2983, 2984, 2984, 2985, 2985, 2986, 2986, 2987, 2987, + 2989, 2990, 2988, 2992, 2991, 2989, 2993, 2994, 2995, 2996, + 2997, 2993, 2998, 2995, 2999, 3001, 3001, 2992, 2996, 3002, + 3002, 2990, 3003, 3005, 3005, 3003, 2994, 3006, 3007, 0, + 2997, 3010, 2998, 3006, 2999, 3009, 3009, 3012, 3010, 3011, + 3011, 3015, 3012, 3014, 3014, 3016, 3007, 3017, 3018, 3020, + 3015, 3021, 3021, 3024, 3016, 3025, 3017, 3018, 3022, 3022, + 3023, 3026, 3024, 3027, 3023, 3028, 3030, 3020, 3031, 3032, + 3028, 3028, 3026, 3032, 3025, 3036, 3038, 3031, 3027, 3030, - 3049, 3049, 3050, 3050, 3051, 3052, 3044, 3053, 3045, 3054, - 3056, 3060, 3057, 3051, 3054, 3058, 3056, 3057, 3059, 3059, - 3058, 3061, 3062, 3063, 3064, 3052, 3053, 3066, 3063, 3060, - 3065, 3067, 3067, 3061, 3069, 3070, 3065, 3073, 3069, 3071, - 3070, 3077, 3064, 3062, 3071, 3072, 3072, 3074, 3075, 3079, - 3079, 3081, 3066, 3082, 3083, 3084, 3073, 3086, 3087, 3084, - 3085, 3077, 3074, 3075, 3081, 3089, 3082, 3083, 3088, 3085, - 3089, 3090, 3092, 3086, 3091, 3091, 3088, 3087, 3093, 3094, - 3097, 3092, 3095, 3095, 3096, 3096, 3104, 3100, 3101, 3102, - 3102, 3090, 3100, 3100, 3101, 3108, 3093, 3106, 3106, 3097, + 3036, 3037, 3037, 3040, 3040, 3041, 3042, 3043, 3045, 3045, + 3038, 3046, 3047, 3051, 3053, 3055, 3052, 3058, 3060, 3041, + 3046, 3052, 3056, 3053, 3047, 3043, 0, 3062, 3056, 3058, + 3068, 3042, 3062, 3064, 3064, 3055, 3063, 3065, 3051, 3060, + 3067, 3063, 3069, 3068, 3076, 3067, 3065, 3070, 3070, 3072, + 3072, 3070, 3073, 3073, 3074, 3074, 3069, 3075, 3077, 0, + 3078, 3080, 3084, 3081, 3076, 3078, 3075, 3080, 3081, 3082, + 3083, 3083, 3085, 3086, 3082, 3088, 3087, 3077, 3090, 3089, + 3084, 3087, 3091, 3091, 3085, 3089, 3093, 3094, 3096, 3096, + 3093, 3095, 3094, 3088, 3086, 3097, 3095, 3098, 3099, 3101, - 3109, 3110, 3111, 3112, 3116, 3094, 3110, 3104, 3112, 3115, - 3115, 3108, 3117, 3118, 3119, 3120, 3109, 3123, 3111, 3118, - 3124, 3117, 3122, 3122, 3116, 3125, 3125, 3127, 3129, 3130, - 3133, 3123, 3136, 3127, 3120, 3130, 3131, 3119, 3137, 3124, - 3139, 3131, 3134, 3134, 3135, 3135, 3140, 3136, 3129, 3138, - 3138, 3139, 3133, 3141, 3142, 3140, 3143, 3145, 3137, 3144, - 3142, 3146, 3146, 3147, 3148, 3149, 3155, 3148, 3149, 3138, - 3154, 3144, 3160, 3141, 3425, 3143, 3425, 3145, 3147, 3150, - 3150, 3156, 3154, 3157, 3157, 3158, 3155, 3156, 3158, 3159, - 3160, 3162, 3163, 3163, 3164, 3159, 3162, 3165, 3166, 3164, + 3103, 3103, 3105, 3090, 3106, 3107, 3108, 3109, 3110, 3111, + 3108, 3114, 3098, 3099, 3097, 3105, 3109, 3106, 3107, 3101, + 3113, 3112, 3115, 3115, 3110, 3113, 3116, 3117, 3111, 3112, + 3118, 3114, 3119, 3119, 3121, 3116, 3120, 3120, 3124, 3130, + 3125, 3127, 3134, 3124, 3124, 3117, 3135, 3127, 3128, 3128, + 3132, 3132, 3136, 3121, 3125, 3137, 3118, 3136, 3134, 3138, + 3130, 3142, 3135, 3143, 3138, 3141, 3141, 3144, 3145, 3146, + 3149, 3137, 3143, 3144, 3148, 3148, 3150, 3151, 3151, 3153, + 3155, 3142, 3157, 3156, 3149, 3153, 3159, 3157, 3146, 3156, + 3162, 3145, 3160, 3160, 3163, 3150, 3161, 3161, 3164, 3164, - 3167, 3168, 3168, 3170, 3166, 3171, 3172, 3173, 3174, 3174, - 3175, 3176, 3177, 3179, 3179, 3170, 3165, 3167, 3167, 3213, - 3173, 3177, 3183, 3171, 3180, 3180, 3190, 3176, 3213, 3175, - 3182, 3172, 3181, 3181, 3184, 3182, 3183, 3185, 3185, 3184, - 3186, 3186, 3187, 3187, 3188, 3188, 3189, 3191, 3196, 3192, - 3195, 3195, 3190, 3191, 3192, 3198, 3198, 3200, 3202, 3189, - 3203, 3205, 3204, 3209, 3196, 3206, 3206, 3208, 3208, 3210, - 3211, 3212, 3214, 3214, 3215, 3215, 3200, 3217, 3219, 3218, - 3202, 3204, 3203, 3205, 3211, 3218, 3220, 3221, 3210, 3209, - 3224, 3212, 3221, 3225, 3225, 3217, 3227, 3227, 3219, 3228, + 3155, 3165, 3166, 3167, 3168, 3162, 3169, 3170, 3159, 3171, + 3168, 3166, 3165, 3173, 3163, 3172, 3172, 3174, 3164, 3170, + 3174, 3175, 3180, 3167, 3175, 3169, 3176, 3176, 3173, 3171, + 3181, 3182, 3183, 3183, 3180, 3184, 3185, 3182, 3184, 3186, + 3188, 3190, 3185, 3189, 3189, 3188, 3190, 3191, 3192, 3196, + 3181, 3193, 3194, 3194, 3192, 3197, 3198, 3186, 3199, 3200, + 3200, 3196, 3202, 3201, 3217, 3203, 3191, 3208, 3193, 3193, + 3217, 3199, 3208, 3197, 3203, 3205, 3205, 3209, 3202, 3206, + 3206, 3198, 3201, 3207, 3207, 3210, 3211, 3211, 3212, 3212, + 3210, 3209, 3213, 3213, 3214, 3214, 3215, 3216, 3218, 3221, - 3229, 3230, 3232, 3231, 3228, 3220, 3238, 3230, 3233, 3233, - 3232, 3224, 3234, 3237, 3229, 3231, 3236, 3234, 3237, 3239, - 3236, 3241, 3240, 3242, 3244, 3245, 3238, 3240, 3246, 3242, - 3247, 3249, 3244, 3241, 3252, 3250, 3251, 3253, 3255, 3239, - 3256, 3257, 3253, 3255, 3245, 3260, 0, 3257, 3246, 3249, - 3247, 3250, 3258, 3251, 3251, 3252, 3261, 3258, 3262, 3261, - 3256, 3266, 3266, 3267, 3267, 3260, 3268, 3273, 3273, 3274, - 3268, 3262, 3275, 3278, 3274, 3276, 3276, 3280, 3280, 3281, - 3281, 3285, 3281, 3282, 3282, 3285, 3282, 3288, 3278, 3283, - 3283, 3275, 3284, 3284, 3287, 3284, 3288, 3289, 3289, 3287, + 3221, 3222, 3227, 3218, 3224, 3224, 3225, 3225, 3229, 3215, + 3230, 3232, 3231, 3233, 3233, 3235, 3235, 3222, 3236, 3237, + 3238, 3227, 3239, 3216, 3241, 3241, 3240, 3242, 3242, 3244, + 3229, 3231, 3230, 3232, 3238, 3240, 3246, 3245, 3237, 3247, + 3248, 3251, 3239, 3245, 3236, 3248, 3256, 3244, 3252, 3252, + 3254, 3254, 3255, 3257, 3258, 3259, 3246, 3255, 3247, 3257, + 3256, 3265, 3251, 3259, 3260, 3260, 3258, 3261, 3266, 3263, + 3264, 3267, 3261, 3263, 3268, 3264, 3267, 3269, 3272, 3271, + 3273, 3265, 3274, 3269, 3283, 3276, 3268, 3271, 3266, 3277, + 3278, 3279, 0, 3280, 3282, 3284, 3287, 3272, 3280, 3282, - 3290, 3291, 3294, 3294, 3295, 3296, 3297, 3298, 3298, 3299, - 3302, 3297, 3303, 3304, 3305, 3291, 3306, 3304, 3290, 3303, - 3308, 3309, 0, 3305, 3295, 3296, 3309, 3310, 3310, 3299, - 3311, 3306, 3312, 3312, 3315, 3302, 3313, 3313, 3308, 3311, - 3314, 3314, 3316, 3317, 3320, 3318, 3321, 3316, 3319, 3315, - 3318, 3318, 3317, 3322, 3319, 3317, 3325, 3323, 3324, 3326, - 3326, 3321, 3323, 3324, 3327, 3328, 3329, 3329, 3331, 3320, - 3327, 3328, 3330, 3330, 3322, 3325, 3332, 3335, 3335, 3337, - 3337, 3332, 3338, 3331, 3340, 3342, 3342, 3343, 3343, 3344, - 3344, 3338, 3345, 3345, 3347, 3347, 3348, 3348, 3349, 3349, + 3273, 3284, 3274, 3276, 3283, 3277, 3285, 3278, 3278, 3289, + 3288, 3285, 3279, 3288, 3293, 3293, 3287, 3294, 3294, 3295, + 3300, 3300, 3289, 3295, 3301, 3302, 3303, 3303, 3305, 3301, + 3308, 3308, 3309, 3309, 3313, 3309, 3310, 3310, 3313, 3310, + 3311, 3311, 3315, 3305, 3302, 3312, 3312, 3315, 3312, 3316, + 3317, 3317, 3318, 3319, 3322, 3322, 3323, 3324, 3316, 3325, + 3326, 3326, 3327, 3330, 3325, 3331, 3333, 3319, 3334, 3332, + 3318, 3336, 3331, 3332, 3337, 3333, 3323, 3324, 3339, 3337, + 3338, 3338, 3327, 3334, 3340, 3340, 3343, 3339, 3330, 3336, + 3341, 3341, 3342, 3342, 3344, 3345, 3348, 3346, 3349, 3344, - 3350, 3350, 3340, 3351, 3353, 3354, 3354, 3355, 3355, 3356, - 3357, 3358, 3363, 3353, 3360, 3360, 3361, 3364, 3356, 3362, - 3362, 3365, 3357, 3366, 3366, 3367, 3367, 3363, 3369, 3351, - 3364, 3358, 3373, 3365, 3375, 3361, 3370, 3370, 3374, 3376, - 3376, 3374, 3379, 3369, 3377, 3379, 3380, 3381, 3382, 3383, - 3373, 3384, 3380, 3382, 3385, 3388, 3395, 3387, 3392, 3396, - 3375, 3381, 3377, 3387, 3388, 3410, 3410, 3391, 3383, 3384, - 3385, 3391, 3405, 3392, 3409, 3406, 3415, 3405, 3406, 3396, - 3411, 3411, 3395, 3413, 3413, 3416, 3417, 3409, 3418, 3420, - 3417, 3422, 3424, 3423, 3416, 3426, 3428, 3424, 3429, 3415, + 3347, 3343, 3346, 3346, 3345, 3350, 3347, 3345, 3353, 3351, + 3352, 3354, 3354, 3349, 3351, 3352, 3355, 3356, 3357, 3357, + 3359, 3348, 3355, 3356, 3358, 3358, 3350, 3353, 3360, 3363, + 3363, 3365, 3365, 3360, 3366, 3359, 3368, 3370, 3370, 3371, + 3371, 3372, 3372, 3366, 3373, 3373, 3375, 3375, 3376, 3376, + 3377, 3377, 3378, 3378, 3368, 3379, 3381, 3382, 3382, 3383, + 3383, 3384, 3385, 3386, 3391, 3381, 3388, 3388, 3389, 3392, + 3384, 3390, 3390, 3393, 3385, 3394, 3394, 3395, 3395, 3391, + 3397, 3379, 3392, 3386, 3401, 3393, 3403, 3389, 3398, 3398, + 3402, 3404, 3404, 3402, 3407, 3397, 3405, 3407, 3408, 3409, - 3427, 3427, 3430, 3420, 3423, 3431, 3432, 3433, 3418, 3428, - 3426, 3435, 3437, 3436, 3422, 3434, 3439, 3429, 3436, 3441, - 3430, 3431, 3433, 3435, 3434, 3438, 3440, 3440, 3446, 3442, - 3438, 3432, 3447, 3437, 3442, 3439, 3448, 3448, 3449, 3441, - 3450, 3450, 3446, 3451, 3451, 3452, 3452, 3449, 3453, 3453, - 3454, 3455, 3447, 3456, 3457, 3458, 3456, 3459, 3460, 3457, - 3458, 3461, 3462, 3463, 3466, 3464, 3471, 3461, 3475, 3454, - 3464, 3455, 3472, 3460, 3477, 3463, 3462, 3465, 3465, 3467, - 3467, 3471, 3459, 3475, 3466, 3468, 3468, 3470, 3470, 3473, - 3473, 3472, 3477, 3480, 3480, 3481, 3481, 3482, 3483, 3486, + 3410, 3411, 3401, 3412, 3408, 3410, 3413, 3416, 3423, 3415, + 3420, 3424, 3403, 3409, 3405, 3415, 3416, 3438, 3438, 3419, + 3411, 3412, 3413, 3419, 3433, 3420, 3437, 3434, 3443, 3433, + 3434, 3424, 3439, 3439, 3423, 3441, 3441, 3444, 3445, 3437, + 3446, 3448, 3445, 3450, 3452, 3451, 3444, 3454, 3453, 3452, + 3453, 3443, 3455, 3455, 3456, 3448, 3451, 3457, 3459, 3458, + 3446, 3460, 3454, 3461, 3462, 3464, 3450, 3456, 3463, 3465, + 3464, 3474, 3467, 3462, 3459, 3469, 3457, 3458, 3461, 3466, + 3463, 3468, 3468, 3470, 3466, 3474, 3460, 3475, 3470, 3477, + 3465, 3467, 3476, 3476, 3482, 3469, 3478, 3478, 3477, 3479, - 3484, 3485, 3487, 3488, 3489, 3482, 3484, 3485, 3496, 3489, - 3490, 3490, 3497, 3486, 3499, 3487, 3500, 3483, 3492, 3492, - 3500, 3502, 3488, 3504, 3505, 3503, 3506, 3507, 3499, 3496, - 3503, 3508, 3497, 3509, 3510, 3510, 3508, 3505, 3509, 3506, - 3513, 3502, 3504, 3514, 3515, 3517, 3507, 3516, 3516, 3518, - 3517, 3519, 3519, 3520, 3521, 3518, 3523, 3522, 3520, 3521, - 3513, 3514, 3522, 3515, 3524, 3526, 3526, 3527, 3528, 3528, - 3524, 3531, 3527, 3530, 3532, 3523, 3533, 3530, 3534, 3535, - 3536, 3532, 3542, 3537, 3544, 3535, 3539, 3539, 3541, 3541, - 3531, 3542, 3545, 3543, 3542, 3533, 3537, 3534, 3543, 3536, + 3479, 3480, 3480, 3481, 3481, 3483, 3484, 3475, 3487, 3484, + 3485, 3486, 3488, 3482, 3489, 3485, 3486, 3490, 3491, 3492, + 3489, 3493, 3493, 3494, 3492, 3483, 3499, 3488, 3495, 3495, + 3491, 3490, 3500, 3487, 3496, 3496, 3498, 3498, 3501, 3501, + 3503, 3499, 3505, 3494, 3508, 3508, 3509, 3509, 3510, 3511, + 3514, 3500, 3512, 3513, 3515, 3503, 3510, 3516, 3512, 3513, + 3505, 3517, 3518, 3518, 3514, 3524, 3517, 3515, 3511, 3520, + 3520, 3525, 3530, 3527, 3528, 3531, 3516, 3532, 3528, 3535, + 3531, 3533, 3534, 3536, 3537, 3541, 3524, 3527, 3536, 3537, + 3542, 3525, 3530, 3543, 3533, 3534, 3532, 3546, 3535, 3538, - 3546, 3547, 3547, 3544, 3548, 3549, 3551, 3552, 3552, 3548, - 3553, 3545, 3558, 3546, 3554, 3554, 3555, 3555, 3549, 3556, - 3557, 3559, 3559, 3560, 3556, 3562, 3562, 3557, 3560, 3553, - 3563, 3558, 3551, 3561, 3564, 3561, 3565, 3563, 3566, 3567, - 3570, 3564, 3572, 3566, 3569, 3569, 3573, 3572, 3574, 3575, - 3579, 3573, 3576, 3576, 3580, 3565, 3578, 3578, 3567, 3570, - 3581, 3581, 3582, 3582, 3583, 3585, 3585, 3574, 3575, 3579, - 3587, 3583, 3593, 3580, 3586, 3586, 3589, 3587, 3592, 3594, - 0, 3589, 0, 3592, 3595, 3595, 3596, 3596, 0, 0, - 0, 3593, 0, 0, 0, 0, 0, 0, 3594, 3600, + 3538, 3544, 3544, 3546, 3545, 3541, 3547, 3547, 3542, 3545, + 3548, 3549, 3543, 3550, 3551, 3548, 3549, 3552, 3550, 3554, + 3554, 3555, 3559, 3552, 3556, 3556, 3555, 3558, 3560, 3561, + 3562, 3558, 3563, 3551, 3564, 3560, 3572, 3565, 3563, 3567, + 3567, 3559, 3569, 3569, 3573, 3570, 3571, 3574, 3561, 3562, + 3565, 3571, 3577, 3564, 3570, 3572, 3576, 3570, 3575, 3575, + 3574, 3576, 3579, 3573, 3581, 3577, 3580, 3580, 3582, 3582, + 3583, 3583, 3584, 3585, 3586, 3587, 3587, 3584, 0, 3588, + 3585, 3590, 3590, 3581, 3588, 3589, 3593, 3589, 3579, 3591, + 3592, 3595, 3598, 3586, 3594, 3602, 3591, 3592, 3600, 3594, - 3600, 3600, 3600, 3600, 3600, 3600, 3601, 3601, 3601, 3601, - 3601, 3601, 3601, 3602, 3602, 3602, 3602, 3602, 3602, 3602, - 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3604, 3604, 3604, - 3604, 3604, 3604, 3604, 3605, 3605, 3605, 3605, 3605, 3605, - 3605, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3608, 3608, - 0, 3608, 3608, 3608, 3608, 3609, 3609, 0, 0, 0, - 3609, 3609, 3610, 3610, 0, 0, 3610, 0, 3610, 3611, - 0, 0, 0, 0, 0, 3611, 3612, 3612, 0, 0, - 0, 3612, 3612, 3613, 0, 0, 0, 0, 0, 3613, - 3614, 3614, 0, 3614, 3614, 3614, 3614, 3615, 0, 0, + 3597, 3597, 3601, 3600, 3603, 3593, 3607, 3601, 3604, 3604, + 3595, 3598, 3606, 3606, 3602, 3608, 3609, 3609, 3610, 3610, + 3611, 3613, 3613, 3603, 3615, 3607, 3621, 3611, 3614, 3614, + 3617, 3615, 3620, 3622, 3608, 3617, 0, 3620, 3623, 3623, + 3624, 3624, 0, 0, 0, 3621, 0, 0, 0, 0, + 0, 0, 3622, 3628, 3628, 3628, 3628, 3628, 3628, 3628, + 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3630, 3630, 3630, + 3630, 3630, 3630, 3630, 3631, 3631, 3631, 3631, 3631, 3631, + 3631, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3633, 3633, + 3633, 3633, 3633, 3633, 3633, 3634, 3634, 3634, 3634, 3634, - 0, 0, 0, 3615, 3616, 3616, 0, 0, 0, 3616, - 3616, 3617, 3617, 0, 3617, 3617, 3617, 3617, 3599, 3599, - 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, - 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, - 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, - 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599 + 3634, 3634, 3636, 3636, 0, 3636, 3636, 3636, 3636, 3637, + 3637, 0, 0, 0, 3637, 3637, 3638, 3638, 0, 0, + 3638, 0, 3638, 3639, 0, 0, 0, 0, 0, 3639, + 3640, 3640, 0, 0, 0, 3640, 3640, 3641, 0, 0, + 0, 0, 0, 3641, 3642, 3642, 0, 3642, 3642, 3642, + 3642, 3643, 0, 0, 0, 0, 0, 3643, 3644, 3644, + 0, 0, 0, 3644, 3644, 3645, 3645, 0, 3645, 3645, + 3645, 3645, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, + 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, + 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, + + 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, + 3627, 3627, 3627 } ; static yy_state_type yy_last_accepting_state; @@ -3370,7 +3393,7 @@ static void config_end_include(void) } #endif -#line 3371 "" +#line 3394 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3379,9 +3402,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3380 "" +#line 3403 "" -#line 3382 "" +#line 3405 "" #define INITIAL 0 #define quotedstring 1 @@ -3605,7 +3628,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3606 "" +#line 3629 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3638,13 +3661,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 >= 3600 ) + if ( yy_current_state >= 3628 ) 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] != 7019 ); + while ( yy_base[yy_current_state] != 7073 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4434,959 +4457,984 @@ YY_RULE_SETUP case 153: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(2, VAR_INTERFACE_ACTION) } YY_BREAK case 154: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 155: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 156: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 157: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 158: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 159: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 160: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 161: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 162: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 163: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 164: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 165: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 166: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 167: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } YY_BREAK case 168: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 169: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_USER_AGENT) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 170: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_HTTP_USER_AGENT) } YY_BREAK case 171: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 172: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 173: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_MAX_RESTART) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_MAX_RESTART) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 185: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 186: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 187: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 188: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 189: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 190: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 191: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 192: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 193: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDE_SERVE_EXPIRED) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 194: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } +{ YDVAR(1, VAR_EDE_SERVE_EXPIRED) } YY_BREAK case 195: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } YY_BREAK case 196: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 197: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 198: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 199: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 200: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 201: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 202: YY_RULE_SETUP -#line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } +#line 416 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_CHECK) } +{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } +{ YDVAR(1, VAR_ZONEMD_CHECK) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 247: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 248: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 249: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 250: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 251: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 252: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 253: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 254: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 255: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(2, VAR_INTERFACE_TAG) } YY_BREAK case 256: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(3, VAR_INTERFACE_TAG_ACTION) } YY_BREAK case 257: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(3, VAR_INTERFACE_TAG_DATA) } YY_BREAK case 258: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(2, VAR_INTERFACE_VIEW) } YY_BREAK case 259: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 260: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 261: YY_RULE_SETUP #line 476 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 262: YY_RULE_SETUP #line 477 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 263: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 264: YY_RULE_SETUP -#line 480 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } +#line 479 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 265: YY_RULE_SETUP -#line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 480 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 266: YY_RULE_SETUP -#line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +#line 481 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 267: YY_RULE_SETUP -#line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +#line 482 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 268: YY_RULE_SETUP -#line 485 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +#line 483 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 269: YY_RULE_SETUP -#line 486 "./util/configlexer.lex" +#line 485 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 270: YY_RULE_SETUP -#line 488 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } +#line 487 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 271: YY_RULE_SETUP -#line 490 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } +#line 488 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 272: YY_RULE_SETUP -#line 492 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } +#line 489 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 273: YY_RULE_SETUP -#line 494 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } +#line 490 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 274: YY_RULE_SETUP -#line 496 "./util/configlexer.lex" +#line 491 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 275: YY_RULE_SETUP -#line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 493 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 276: YY_RULE_SETUP -#line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +#line 495 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 277: YY_RULE_SETUP -#line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +#line 497 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 278: YY_RULE_SETUP -#line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +#line 499 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 279: YY_RULE_SETUP -#line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +#line 501 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 280: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 281: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 284: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 285: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 286: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 287: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_BACKOFF) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 288: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 289: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 290: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 291: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) } YY_BREAK case 292: YY_RULE_SETUP #line 515 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_RATELIMIT_BACKOFF) } YY_BREAK case 293: YY_RULE_SETUP #line 516 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } YY_BREAK case 294: YY_RULE_SETUP #line 517 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 295: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 296: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 297: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 298: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 299: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 300: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 301: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 302: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 303: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 304: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 305: YY_RULE_SETUP -#line 529 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } +#line 528 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 306: YY_RULE_SETUP -#line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 529 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 307: YY_RULE_SETUP -#line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +#line 530 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 308: YY_RULE_SETUP -#line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +#line 531 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 309: YY_RULE_SETUP -#line 534 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +#line 532 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 310: YY_RULE_SETUP -#line 535 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +#line 534 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 311: YY_RULE_SETUP #line 536 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 312: YY_RULE_SETUP #line 537 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 313: YY_RULE_SETUP #line 538 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 320: YY_RULE_SETUP #line 545 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 321: YY_RULE_SETUP #line 546 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 322: YY_RULE_SETUP #line 547 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 323: YY_RULE_SETUP #line 548 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 324: YY_RULE_SETUP #line 549 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 325: YY_RULE_SETUP #line 550 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 326: YY_RULE_SETUP #line 551 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 327: YY_RULE_SETUP #line 552 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 328: YY_RULE_SETUP #line 553 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 329: YY_RULE_SETUP #line 554 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 330: YY_RULE_SETUP #line 555 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 331: YY_RULE_SETUP #line 556 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 332: YY_RULE_SETUP #line 557 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 333: YY_RULE_SETUP #line 558 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 334: YY_RULE_SETUP #line 559 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDE ) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 335: -/* rule 335 can match eol */ YY_RULE_SETUP #line 560 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 336: +YY_RULE_SETUP +#line 561 "./util/configlexer.lex" +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } + YY_BREAK +case 337: +YY_RULE_SETUP +#line 562 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } + YY_BREAK +case 338: +YY_RULE_SETUP +#line 563 "./util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 339: +YY_RULE_SETUP +#line 564 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDE ) } + YY_BREAK +case 340: +/* rule 340 can match eol */ +YY_RULE_SETUP +#line 565 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 336: +case 341: YY_RULE_SETUP -#line 563 "./util/configlexer.lex" +#line 568 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 564 "./util/configlexer.lex" +#line 569 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 337: +case 342: YY_RULE_SETUP -#line 569 "./util/configlexer.lex" +#line 574 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 338: -/* rule 338 can match eol */ +case 343: +/* rule 343 can match eol */ YY_RULE_SETUP -#line 570 "./util/configlexer.lex" +#line 575 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 339: +case 344: YY_RULE_SETUP -#line 572 "./util/configlexer.lex" +#line 577 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5399,34 +5447,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 340: +case 345: YY_RULE_SETUP -#line 584 "./util/configlexer.lex" +#line 589 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 585 "./util/configlexer.lex" +#line 590 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 341: +case 346: YY_RULE_SETUP -#line 590 "./util/configlexer.lex" +#line 595 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 342: -/* rule 342 can match eol */ +case 347: +/* rule 347 can match eol */ YY_RULE_SETUP -#line 591 "./util/configlexer.lex" +#line 596 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 343: +case 348: YY_RULE_SETUP -#line 593 "./util/configlexer.lex" +#line 598 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5439,38 +5487,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 344: +case 349: YY_RULE_SETUP -#line 605 "./util/configlexer.lex" +#line 610 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 607 "./util/configlexer.lex" +#line 612 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 345: +case 350: YY_RULE_SETUP -#line 611 "./util/configlexer.lex" +#line 616 "./util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 346: -/* rule 346 can match eol */ +case 351: +/* rule 351 can match eol */ YY_RULE_SETUP -#line 612 "./util/configlexer.lex" +#line 617 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 347: +case 352: YY_RULE_SETUP -#line 613 "./util/configlexer.lex" +#line 618 "./util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 348: +case 353: YY_RULE_SETUP -#line 614 "./util/configlexer.lex" +#line 619 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5478,27 +5526,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 619 "./util/configlexer.lex" +#line 624 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 349: +case 354: YY_RULE_SETUP -#line 623 "./util/configlexer.lex" +#line 628 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 350: -/* rule 350 can match eol */ +case 355: +/* rule 355 can match eol */ YY_RULE_SETUP -#line 624 "./util/configlexer.lex" +#line 629 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 351: +case 356: YY_RULE_SETUP -#line 626 "./util/configlexer.lex" +#line 631 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5508,7 +5556,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 632 "./util/configlexer.lex" +#line 637 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5523,39 +5571,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 352: +case 357: YY_RULE_SETUP -#line 646 "./util/configlexer.lex" +#line 651 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 649 "./util/configlexer.lex" +#line 654 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 353: +case 358: YY_RULE_SETUP -#line 653 "./util/configlexer.lex" +#line 658 "./util/configlexer.lex" { LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK -case 354: -/* rule 354 can match eol */ +case 359: +/* rule 359 can match eol */ YY_RULE_SETUP -#line 654 "./util/configlexer.lex" +#line 659 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK -case 355: +case 360: YY_RULE_SETUP -#line 655 "./util/configlexer.lex" +#line 660 "./util/configlexer.lex" { LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } YY_BREAK -case 356: +case 361: YY_RULE_SETUP -#line 656 "./util/configlexer.lex" +#line 661 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5564,29 +5612,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 662 "./util/configlexer.lex" +#line 667 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 357: +case 362: YY_RULE_SETUP -#line 666 "./util/configlexer.lex" +#line 671 "./util/configlexer.lex" { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } YY_BREAK -case 358: -/* rule 358 can match eol */ +case 363: +/* rule 363 can match eol */ YY_RULE_SETUP -#line 667 "./util/configlexer.lex" +#line 672 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 359: +case 364: YY_RULE_SETUP -#line 671 "./util/configlexer.lex" +#line 676 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5595,33 +5643,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 360: +case 365: YY_RULE_SETUP -#line 679 "./util/configlexer.lex" +#line 684 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 361: +case 366: YY_RULE_SETUP -#line 683 "./util/configlexer.lex" +#line 688 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 362: +case 367: YY_RULE_SETUP -#line 687 "./util/configlexer.lex" +#line 692 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 363: +case 368: YY_RULE_SETUP -#line 691 "./util/configlexer.lex" +#line 696 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5622 "" +#line 5670 "" case YY_END_OF_BUFFER: { @@ -5916,7 +5964,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 >= 3600 ) + if ( yy_current_state >= 3628 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5944,11 +5992,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 >= 3600 ) + if ( yy_current_state >= 3628 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3599); + yy_is_jam = (yy_current_state == 3627); return yy_is_jam ? 0 : yy_current_state; } @@ -6587,6 +6635,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 691 "./util/configlexer.lex" +#line 696 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index a46a74fb6..fc9aa7266 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -364,6 +364,7 @@ view-first{COLON} { YDVAR(1, VAR_VIEW_FIRST) } do-not-query-address{COLON} { YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } do-not-query-localhost{COLON} { YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } access-control{COLON} { YDVAR(2, VAR_ACCESS_CONTROL) } +interface-action{COLON} { YDVAR(2, VAR_INTERFACE_ACTION) } send-client-subnet{COLON} { YDVAR(1, VAR_SEND_CLIENT_SUBNET) } client-subnet-zone{COLON} { YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } client-subnet-always-forward{COLON} { YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } @@ -466,6 +467,10 @@ access-control-tag{COLON} { YDVAR(2, VAR_ACCESS_CONTROL_TAG) } access-control-tag-action{COLON} { YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } access-control-tag-data{COLON} { YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } access-control-view{COLON} { YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +interface-tag{COLON} { YDVAR(2, VAR_INTERFACE_TAG) } +interface-tag-action{COLON} { YDVAR(3, VAR_INTERFACE_TAG_ACTION) } +interface-tag-data{COLON} { YDVAR(3, VAR_INTERFACE_TAG_DATA) } +interface-view{COLON} { YDVAR(2, VAR_INTERFACE_VIEW) } local-zone-override{COLON} { YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } dnstap{COLON} { YDVAR(0, VAR_DNSTAP) } dnstap-enable{COLON} { YDVAR(1, VAR_DNSTAP_ENABLE) } diff --git a/util/configparser.c b/util/configparser.c index 802d9a651..7f3cd99e1 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.7.6. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C @@ -46,10 +46,10 @@ USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ -#define YYBISON 30706 +#define YYBISON 30802 /* Bison version string. */ -#define YYBISON_VERSION "3.7.6" +#define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -85,6 +85,7 @@ int ub_c_lex(void); void ub_c_error(const char *message); static void validate_respip_action(const char* action); +static void validate_acl_action(const char* action); /* these need to be global, otherwise they cannot be used inside yacc */ extern struct config_parser_state* cfg_parser; @@ -96,7 +97,7 @@ extern struct config_parser_state* cfg_parser; #endif -#line 100 "util/configparser.c" +#line 101 "util/configparser.c" # ifndef YY_CAST # ifdef __cplusplus @@ -452,359 +453,369 @@ enum yysymbol_kind_t YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 325, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 326, /* VAR_INTERFACE_AUTOMATIC_PORTS */ YYSYMBOL_VAR_EDE = 327, /* VAR_EDE */ - YYSYMBOL_YYACCEPT = 328, /* $accept */ - YYSYMBOL_toplevelvars = 329, /* toplevelvars */ - YYSYMBOL_toplevelvar = 330, /* toplevelvar */ - YYSYMBOL_force_toplevel = 331, /* force_toplevel */ - YYSYMBOL_serverstart = 332, /* serverstart */ - YYSYMBOL_contents_server = 333, /* contents_server */ - YYSYMBOL_content_server = 334, /* content_server */ - YYSYMBOL_stubstart = 335, /* stubstart */ - YYSYMBOL_contents_stub = 336, /* contents_stub */ - YYSYMBOL_content_stub = 337, /* content_stub */ - YYSYMBOL_forwardstart = 338, /* forwardstart */ - YYSYMBOL_contents_forward = 339, /* contents_forward */ - YYSYMBOL_content_forward = 340, /* content_forward */ - YYSYMBOL_viewstart = 341, /* viewstart */ - YYSYMBOL_contents_view = 342, /* contents_view */ - YYSYMBOL_content_view = 343, /* content_view */ - YYSYMBOL_authstart = 344, /* authstart */ - YYSYMBOL_contents_auth = 345, /* contents_auth */ - YYSYMBOL_content_auth = 346, /* content_auth */ - YYSYMBOL_rpz_tag = 347, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 348, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 349, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 350, /* rpz_log */ - YYSYMBOL_rpz_log_name = 351, /* rpz_log_name */ - YYSYMBOL_rpz_signal_nxdomain_ra = 352, /* rpz_signal_nxdomain_ra */ - YYSYMBOL_rpzstart = 353, /* rpzstart */ - YYSYMBOL_contents_rpz = 354, /* contents_rpz */ - YYSYMBOL_content_rpz = 355, /* content_rpz */ - YYSYMBOL_server_num_threads = 356, /* server_num_threads */ - YYSYMBOL_server_verbosity = 357, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 358, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 359, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 360, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 361, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 362, /* server_shm_key */ - YYSYMBOL_server_port = 363, /* server_port */ - YYSYMBOL_server_send_client_subnet = 364, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 365, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 366, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 367, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 368, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 369, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 370, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 371, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 372, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 373, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 374, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 375, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 376, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 377, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 378, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 379, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 380, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 381, /* server_interface_automatic */ - YYSYMBOL_server_interface_automatic_ports = 382, /* server_interface_automatic_ports */ - YYSYMBOL_server_do_ip4 = 383, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 384, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 385, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 386, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 387, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 388, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 389, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 390, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 391, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 392, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 393, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 394, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 395, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 396, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 397, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 398, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 399, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 400, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 401, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 402, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 403, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 404, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 405, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 406, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 407, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 408, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 409, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 410, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 411, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 412, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 413, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 414, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 415, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 416, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 417, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 418, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 419, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 420, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 421, /* server_log_queries */ - YYSYMBOL_server_log_replies = 422, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 423, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 424, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 425, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 426, /* server_chroot */ - YYSYMBOL_server_username = 427, /* server_username */ - YYSYMBOL_server_directory = 428, /* server_directory */ - YYSYMBOL_server_logfile = 429, /* server_logfile */ - YYSYMBOL_server_pidfile = 430, /* server_pidfile */ - YYSYMBOL_server_root_hints = 431, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 432, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 433, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 434, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 435, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 436, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 437, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 438, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 439, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 440, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 441, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 442, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 443, /* server_hide_trustanchor */ - YYSYMBOL_server_hide_http_user_agent = 444, /* server_hide_http_user_agent */ - YYSYMBOL_server_identity = 445, /* server_identity */ - YYSYMBOL_server_version = 446, /* server_version */ - YYSYMBOL_server_http_user_agent = 447, /* server_http_user_agent */ - YYSYMBOL_server_nsid = 448, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 449, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 450, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 451, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 452, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 453, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 454, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 455, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 456, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 457, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 458, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 459, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 460, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 461, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 462, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 463, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 464, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 465, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 466, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 467, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 468, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 469, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 470, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 471, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 472, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 473, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_cache_max_rtt = 474, /* server_infra_cache_max_rtt */ - YYSYMBOL_server_infra_keep_probing = 475, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 476, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 477, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 478, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 479, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 480, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 481, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 482, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 483, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 484, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 485, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 486, /* server_private_address */ - YYSYMBOL_server_private_domain = 487, /* server_private_domain */ - YYSYMBOL_server_prefetch = 488, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 489, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 490, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 491, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 492, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 493, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 494, /* server_access_control */ - YYSYMBOL_server_module_conf = 495, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 496, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 497, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 498, /* server_val_sig_skew_max */ - YYSYMBOL_server_val_max_restart = 499, /* server_val_max_restart */ - YYSYMBOL_server_cache_max_ttl = 500, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 501, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 502, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 503, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 504, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 505, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 506, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 507, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 508, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 509, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 510, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 511, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 512, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_ede_serve_expired = 513, /* server_ede_serve_expired */ - YYSYMBOL_server_serve_original_ttl = 514, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 515, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 516, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 517, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 518, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 519, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 520, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 521, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 522, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 523, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 524, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 525, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 526, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 527, /* server_local_zone */ - YYSYMBOL_server_local_data = 528, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 529, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 530, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 531, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 532, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 533, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 534, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 535, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 536, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 537, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 538, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 539, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 540, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 541, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 542, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 543, /* server_access_control_view */ - YYSYMBOL_server_response_ip_tag = 544, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 545, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 546, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 547, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 548, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 549, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 550, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 551, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 552, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 553, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 554, /* server_ratelimit_factor */ - YYSYMBOL_server_ip_ratelimit_backoff = 555, /* server_ip_ratelimit_backoff */ - YYSYMBOL_server_ratelimit_backoff = 556, /* server_ratelimit_backoff */ - YYSYMBOL_server_outbound_msg_retry = 557, /* server_outbound_msg_retry */ - YYSYMBOL_server_low_rtt = 558, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 559, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 560, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 561, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 562, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 563, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 564, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 565, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 566, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 567, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 568, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 569, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 570, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 571, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 572, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 573, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 574, /* server_edns_client_string_opcode */ - YYSYMBOL_server_ede = 575, /* server_ede */ - YYSYMBOL_stub_name = 576, /* stub_name */ - YYSYMBOL_stub_host = 577, /* stub_host */ - YYSYMBOL_stub_addr = 578, /* stub_addr */ - YYSYMBOL_stub_first = 579, /* stub_first */ - YYSYMBOL_stub_no_cache = 580, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 581, /* stub_ssl_upstream */ - YYSYMBOL_stub_tcp_upstream = 582, /* stub_tcp_upstream */ - YYSYMBOL_stub_prime = 583, /* stub_prime */ - YYSYMBOL_forward_name = 584, /* forward_name */ - YYSYMBOL_forward_host = 585, /* forward_host */ - YYSYMBOL_forward_addr = 586, /* forward_addr */ - YYSYMBOL_forward_first = 587, /* forward_first */ - YYSYMBOL_forward_no_cache = 588, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 589, /* forward_ssl_upstream */ - YYSYMBOL_forward_tcp_upstream = 590, /* forward_tcp_upstream */ - YYSYMBOL_auth_name = 591, /* auth_name */ - YYSYMBOL_auth_zonefile = 592, /* auth_zonefile */ - YYSYMBOL_auth_master = 593, /* auth_master */ - YYSYMBOL_auth_url = 594, /* auth_url */ - YYSYMBOL_auth_allow_notify = 595, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 596, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 597, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 598, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 599, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 600, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 601, /* view_name */ - YYSYMBOL_view_local_zone = 602, /* view_local_zone */ - YYSYMBOL_view_response_ip = 603, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 604, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 605, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 606, /* view_local_data_ptr */ - YYSYMBOL_view_first = 607, /* view_first */ - YYSYMBOL_rcstart = 608, /* rcstart */ - YYSYMBOL_contents_rc = 609, /* contents_rc */ - YYSYMBOL_content_rc = 610, /* content_rc */ - YYSYMBOL_rc_control_enable = 611, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 612, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 613, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 614, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 615, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 616, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 617, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 618, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 619, /* dtstart */ - YYSYMBOL_contents_dt = 620, /* contents_dt */ - YYSYMBOL_content_dt = 621, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 622, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 623, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 624, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 625, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 626, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 627, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 628, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 629, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 630, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 631, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 632, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 633, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 634, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 635, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 636, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 637, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 638, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 639, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 640, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 641, /* pythonstart */ - YYSYMBOL_contents_py = 642, /* contents_py */ - YYSYMBOL_content_py = 643, /* content_py */ - YYSYMBOL_py_script = 644, /* py_script */ - YYSYMBOL_dynlibstart = 645, /* dynlibstart */ - YYSYMBOL_contents_dl = 646, /* contents_dl */ - YYSYMBOL_content_dl = 647, /* content_dl */ - YYSYMBOL_dl_file = 648, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 649, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 650, /* server_log_identity */ - YYSYMBOL_server_response_ip = 651, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 652, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 653, /* dnscstart */ - YYSYMBOL_contents_dnsc = 654, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 655, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 656, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 657, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 658, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 659, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 660, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 661, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 662, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 663, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 664, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 665, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 666, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 667, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 668, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 669, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 670, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 671, /* redis_server_host */ - YYSYMBOL_redis_server_port = 672, /* redis_server_port */ - YYSYMBOL_redis_timeout = 673, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 674, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 675, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 676, /* ipsetstart */ - YYSYMBOL_contents_ipset = 677, /* contents_ipset */ - YYSYMBOL_content_ipset = 678, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 679, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 680 /* ipset_name_v6 */ + YYSYMBOL_VAR_INTERFACE_ACTION = 328, /* VAR_INTERFACE_ACTION */ + YYSYMBOL_VAR_INTERFACE_VIEW = 329, /* VAR_INTERFACE_VIEW */ + YYSYMBOL_VAR_INTERFACE_TAG = 330, /* VAR_INTERFACE_TAG */ + YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 331, /* VAR_INTERFACE_TAG_ACTION */ + YYSYMBOL_VAR_INTERFACE_TAG_DATA = 332, /* VAR_INTERFACE_TAG_DATA */ + YYSYMBOL_YYACCEPT = 333, /* $accept */ + YYSYMBOL_toplevelvars = 334, /* toplevelvars */ + YYSYMBOL_toplevelvar = 335, /* toplevelvar */ + YYSYMBOL_force_toplevel = 336, /* force_toplevel */ + YYSYMBOL_serverstart = 337, /* serverstart */ + YYSYMBOL_contents_server = 338, /* contents_server */ + YYSYMBOL_content_server = 339, /* content_server */ + YYSYMBOL_stubstart = 340, /* stubstart */ + YYSYMBOL_contents_stub = 341, /* contents_stub */ + YYSYMBOL_content_stub = 342, /* content_stub */ + YYSYMBOL_forwardstart = 343, /* forwardstart */ + YYSYMBOL_contents_forward = 344, /* contents_forward */ + YYSYMBOL_content_forward = 345, /* content_forward */ + YYSYMBOL_viewstart = 346, /* viewstart */ + YYSYMBOL_contents_view = 347, /* contents_view */ + YYSYMBOL_content_view = 348, /* content_view */ + YYSYMBOL_authstart = 349, /* authstart */ + YYSYMBOL_contents_auth = 350, /* contents_auth */ + YYSYMBOL_content_auth = 351, /* content_auth */ + YYSYMBOL_rpz_tag = 352, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 353, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 354, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 355, /* rpz_log */ + YYSYMBOL_rpz_log_name = 356, /* rpz_log_name */ + YYSYMBOL_rpz_signal_nxdomain_ra = 357, /* rpz_signal_nxdomain_ra */ + YYSYMBOL_rpzstart = 358, /* rpzstart */ + YYSYMBOL_contents_rpz = 359, /* contents_rpz */ + YYSYMBOL_content_rpz = 360, /* content_rpz */ + YYSYMBOL_server_num_threads = 361, /* server_num_threads */ + YYSYMBOL_server_verbosity = 362, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 363, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 364, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 365, /* server_extended_statistics */ + YYSYMBOL_server_shm_enable = 366, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 367, /* server_shm_key */ + YYSYMBOL_server_port = 368, /* server_port */ + YYSYMBOL_server_send_client_subnet = 369, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 370, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 371, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 372, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 373, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 374, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 375, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 376, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 377, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 378, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 379, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 380, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 381, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 382, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 383, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 384, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 385, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 386, /* server_interface_automatic */ + YYSYMBOL_server_interface_automatic_ports = 387, /* server_interface_automatic_ports */ + YYSYMBOL_server_do_ip4 = 388, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 389, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 390, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 391, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 392, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 393, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 394, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 395, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 396, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 397, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 398, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 399, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 400, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 401, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 402, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 403, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 404, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 405, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 406, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 407, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 408, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 409, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 410, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 411, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 412, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 413, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 414, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 415, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 416, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 417, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 418, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 419, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 420, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 421, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 422, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 423, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 424, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 425, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 426, /* server_log_queries */ + YYSYMBOL_server_log_replies = 427, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 428, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 429, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 430, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 431, /* server_chroot */ + YYSYMBOL_server_username = 432, /* server_username */ + YYSYMBOL_server_directory = 433, /* server_directory */ + YYSYMBOL_server_logfile = 434, /* server_logfile */ + YYSYMBOL_server_pidfile = 435, /* server_pidfile */ + YYSYMBOL_server_root_hints = 436, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 437, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 438, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 439, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 440, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 441, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 442, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 443, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 444, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 445, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 446, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 447, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 448, /* server_hide_trustanchor */ + YYSYMBOL_server_hide_http_user_agent = 449, /* server_hide_http_user_agent */ + YYSYMBOL_server_identity = 450, /* server_identity */ + YYSYMBOL_server_version = 451, /* server_version */ + YYSYMBOL_server_http_user_agent = 452, /* server_http_user_agent */ + YYSYMBOL_server_nsid = 453, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 454, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 455, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 456, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 457, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 458, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 459, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 460, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 461, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 462, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 463, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 464, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 465, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 466, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 467, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 468, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 469, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 470, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 471, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 472, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 473, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 474, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 475, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 476, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 477, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 478, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_cache_max_rtt = 479, /* server_infra_cache_max_rtt */ + YYSYMBOL_server_infra_keep_probing = 480, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 481, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 482, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 483, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 484, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 485, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 486, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 487, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 488, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 489, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 490, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 491, /* server_private_address */ + YYSYMBOL_server_private_domain = 492, /* server_private_domain */ + YYSYMBOL_server_prefetch = 493, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 494, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 495, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 496, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 497, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 498, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 499, /* server_access_control */ + YYSYMBOL_server_interface_action = 500, /* server_interface_action */ + YYSYMBOL_server_module_conf = 501, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 502, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 503, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 504, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 505, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 506, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 507, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 508, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 509, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 510, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 511, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 512, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 513, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 514, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 515, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 516, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 517, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 518, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_ede_serve_expired = 519, /* server_ede_serve_expired */ + YYSYMBOL_server_serve_original_ttl = 520, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 521, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 522, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 523, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 524, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 525, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 526, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 527, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 528, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 529, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 530, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 531, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 532, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 533, /* server_local_zone */ + YYSYMBOL_server_local_data = 534, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 535, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 536, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 537, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 538, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 539, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 540, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 541, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 542, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 543, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 544, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 545, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 546, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 547, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 548, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 549, /* server_access_control_view */ + YYSYMBOL_server_interface_tag = 550, /* server_interface_tag */ + YYSYMBOL_server_interface_tag_action = 551, /* server_interface_tag_action */ + YYSYMBOL_server_interface_tag_data = 552, /* server_interface_tag_data */ + YYSYMBOL_server_interface_view = 553, /* server_interface_view */ + YYSYMBOL_server_response_ip_tag = 554, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 555, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 556, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 557, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 558, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 559, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 560, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 561, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 562, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 563, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 564, /* server_ratelimit_factor */ + YYSYMBOL_server_ip_ratelimit_backoff = 565, /* server_ip_ratelimit_backoff */ + YYSYMBOL_server_ratelimit_backoff = 566, /* server_ratelimit_backoff */ + YYSYMBOL_server_outbound_msg_retry = 567, /* server_outbound_msg_retry */ + YYSYMBOL_server_low_rtt = 568, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 569, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 570, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 571, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 572, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 573, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 574, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 575, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 576, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 577, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 578, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 579, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 580, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 581, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 582, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 583, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 584, /* server_edns_client_string_opcode */ + YYSYMBOL_server_ede = 585, /* server_ede */ + YYSYMBOL_stub_name = 586, /* stub_name */ + YYSYMBOL_stub_host = 587, /* stub_host */ + YYSYMBOL_stub_addr = 588, /* stub_addr */ + YYSYMBOL_stub_first = 589, /* stub_first */ + YYSYMBOL_stub_no_cache = 590, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 591, /* stub_ssl_upstream */ + YYSYMBOL_stub_tcp_upstream = 592, /* stub_tcp_upstream */ + YYSYMBOL_stub_prime = 593, /* stub_prime */ + YYSYMBOL_forward_name = 594, /* forward_name */ + YYSYMBOL_forward_host = 595, /* forward_host */ + YYSYMBOL_forward_addr = 596, /* forward_addr */ + YYSYMBOL_forward_first = 597, /* forward_first */ + YYSYMBOL_forward_no_cache = 598, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 599, /* forward_ssl_upstream */ + YYSYMBOL_forward_tcp_upstream = 600, /* forward_tcp_upstream */ + YYSYMBOL_auth_name = 601, /* auth_name */ + YYSYMBOL_auth_zonefile = 602, /* auth_zonefile */ + YYSYMBOL_auth_master = 603, /* auth_master */ + YYSYMBOL_auth_url = 604, /* auth_url */ + YYSYMBOL_auth_allow_notify = 605, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 606, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 607, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 608, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 609, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 610, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 611, /* view_name */ + YYSYMBOL_view_local_zone = 612, /* view_local_zone */ + YYSYMBOL_view_response_ip = 613, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 614, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 615, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 616, /* view_local_data_ptr */ + YYSYMBOL_view_first = 617, /* view_first */ + YYSYMBOL_rcstart = 618, /* rcstart */ + YYSYMBOL_contents_rc = 619, /* contents_rc */ + YYSYMBOL_content_rc = 620, /* content_rc */ + YYSYMBOL_rc_control_enable = 621, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 622, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 623, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 624, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 625, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 626, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 627, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 628, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 629, /* dtstart */ + YYSYMBOL_contents_dt = 630, /* contents_dt */ + YYSYMBOL_content_dt = 631, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 632, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 633, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 634, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 635, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 636, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 637, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 638, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 639, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 640, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 641, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 642, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 643, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 644, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 645, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 646, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 647, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 648, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 649, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 650, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 651, /* pythonstart */ + YYSYMBOL_contents_py = 652, /* contents_py */ + YYSYMBOL_content_py = 653, /* content_py */ + YYSYMBOL_py_script = 654, /* py_script */ + YYSYMBOL_dynlibstart = 655, /* dynlibstart */ + YYSYMBOL_contents_dl = 656, /* contents_dl */ + YYSYMBOL_content_dl = 657, /* content_dl */ + YYSYMBOL_dl_file = 658, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 659, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 660, /* server_log_identity */ + YYSYMBOL_server_response_ip = 661, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 662, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 663, /* dnscstart */ + YYSYMBOL_contents_dnsc = 664, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 665, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 666, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 667, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 668, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 669, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 670, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 671, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 672, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 673, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 674, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 675, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 676, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 677, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 678, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 679, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 680, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 681, /* redis_server_host */ + YYSYMBOL_redis_server_port = 682, /* redis_server_port */ + YYSYMBOL_redis_timeout = 683, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 684, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 685, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 686, /* ipsetstart */ + YYSYMBOL_contents_ipset = 687, /* contents_ipset */ + YYSYMBOL_content_ipset = 688, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 689, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 690 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -962,12 +973,18 @@ typedef int yy_state_fast_t; # define YY_USE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else @@ -1126,19 +1143,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 695 +#define YYLAST 711 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 328 +#define YYNTOKENS 333 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 353 +#define YYNNTS 358 /* YYNRULES -- Number of rules. */ -#define YYNRULES 683 +#define YYNRULES 693 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1015 +#define YYNSTATES 1037 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 582 +#define YYMAXUTOK 587 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1210,82 +1227,83 @@ static const yytype_int16 yytranslate[] = 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327 + 325, 326, 327, 328, 329, 330, 331, 332 }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 195, 195, 195, 196, 196, 197, 197, 198, 198, - 198, 199, 199, 200, 200, 201, 201, 202, 204, 211, - 217, 218, 219, 219, 219, 220, 220, 221, 221, 221, - 222, 222, 223, 223, 223, 224, 224, 225, 225, 225, - 226, 226, 226, 227, 227, 228, 228, 229, 229, 230, - 230, 231, 231, 232, 232, 233, 233, 234, 234, 235, - 235, 235, 236, 236, 237, 237, 237, 238, 238, 238, - 239, 239, 240, 240, 241, 241, 242, 242, 243, 243, - 243, 244, 244, 245, 245, 246, 246, 246, 247, 247, - 248, 248, 249, 249, 250, 250, 250, 251, 251, 252, - 252, 253, 253, 254, 254, 255, 255, 256, 256, 257, - 257, 258, 258, 259, 259, 259, 260, 260, 260, 261, - 261, 261, 262, 262, 262, 262, 263, 264, 264, 264, - 265, 265, 265, 266, 266, 267, 267, 268, 268, 268, - 269, 269, 269, 270, 270, 271, 271, 271, 272, 272, - 272, 273, 273, 273, 274, 274, 275, 275, 276, 276, - 277, 278, 278, 279, 279, 280, 280, 281, 281, 282, - 282, 283, 283, 284, 284, 285, 285, 286, 286, 287, - 287, 288, 288, 288, 289, 289, 290, 290, 291, 291, - 292, 293, 293, 294, 294, 295, 296, 296, 297, 297, - 298, 298, 298, 299, 299, 300, 300, 300, 301, 301, - 301, 302, 302, 303, 304, 304, 305, 305, 306, 306, - 307, 307, 308, 308, 308, 309, 309, 309, 310, 310, - 310, 311, 311, 312, 312, 313, 313, 314, 314, 315, - 315, 316, 316, 317, 317, 318, 318, 321, 335, 336, - 337, 337, 337, 337, 337, 338, 338, 338, 340, 354, - 355, 356, 356, 356, 356, 357, 357, 357, 359, 375, - 376, 377, 377, 377, 377, 378, 378, 378, 380, 401, - 402, 403, 403, 403, 403, 404, 404, 404, 405, 405, - 405, 408, 427, 444, 452, 462, 469, 479, 498, 499, - 500, 500, 500, 500, 500, 501, 501, 501, 502, 502, - 502, 502, 504, 513, 522, 533, 542, 551, 560, 571, - 580, 592, 606, 621, 632, 649, 666, 683, 700, 715, - 730, 743, 758, 767, 776, 785, 794, 803, 812, 819, - 828, 837, 846, 855, 864, 873, 882, 891, 904, 915, - 926, 937, 946, 959, 968, 977, 986, 993, 1000, 1009, - 1016, 1025, 1033, 1040, 1047, 1055, 1064, 1072, 1088, 1096, - 1104, 1112, 1120, 1128, 1137, 1146, 1160, 1169, 1178, 1187, - 1196, 1205, 1214, 1221, 1228, 1254, 1262, 1269, 1276, 1283, - 1290, 1298, 1306, 1314, 1321, 1332, 1343, 1350, 1359, 1368, - 1377, 1386, 1393, 1400, 1407, 1423, 1431, 1439, 1449, 1459, - 1469, 1483, 1491, 1504, 1515, 1523, 1536, 1545, 1554, 1563, - 1572, 1582, 1592, 1600, 1613, 1622, 1630, 1639, 1647, 1660, - 1669, 1678, 1688, 1695, 1705, 1715, 1725, 1735, 1745, 1755, - 1765, 1775, 1782, 1789, 1796, 1805, 1814, 1823, 1832, 1839, - 1849, 1869, 1876, 1894, 1907, 1920, 1933, 1942, 1951, 1960, - 1969, 1979, 1989, 2000, 2009, 2018, 2027, 2036, 2045, 2054, - 2063, 2072, 2085, 2098, 2107, 2114, 2123, 2132, 2141, 2150, - 2159, 2167, 2180, 2188, 2243, 2250, 2265, 2275, 2285, 2292, - 2299, 2306, 2315, 2323, 2337, 2358, 2379, 2391, 2403, 2415, - 2424, 2445, 2454, 2463, 2471, 2479, 2492, 2505, 2520, 2535, - 2544, 2553, 2563, 2573, 2582, 2588, 2597, 2606, 2616, 2626, - 2636, 2645, 2655, 2664, 2677, 2690, 2702, 2716, 2728, 2742, - 2751, 2762, 2771, 2781, 2788, 2795, 2804, 2813, 2823, 2833, - 2843, 2853, 2860, 2867, 2876, 2885, 2895, 2905, 2915, 2922, - 2929, 2936, 2944, 2954, 2964, 2974, 2984, 2994, 3004, 3060, - 3070, 3078, 3086, 3101, 3110, 3116, 3117, 3118, 3118, 3118, - 3119, 3119, 3119, 3120, 3120, 3122, 3132, 3141, 3148, 3155, - 3162, 3169, 3176, 3183, 3189, 3190, 3191, 3191, 3191, 3192, - 3192, 3192, 3193, 3194, 3194, 3195, 3195, 3196, 3196, 3197, - 3198, 3199, 3200, 3201, 3202, 3204, 3213, 3223, 3230, 3237, - 3246, 3253, 3260, 3267, 3274, 3283, 3292, 3299, 3306, 3316, - 3326, 3336, 3346, 3356, 3366, 3372, 3373, 3374, 3376, 3382, - 3388, 3389, 3390, 3392, 3398, 3408, 3415, 3424, 3432, 3438, - 3439, 3441, 3441, 3441, 3442, 3442, 3443, 3444, 3445, 3446, - 3447, 3449, 3459, 3468, 3475, 3484, 3491, 3500, 3508, 3521, - 3529, 3542, 3548, 3549, 3550, 3550, 3551, 3551, 3551, 3552, - 3554, 3566, 3578, 3590, 3605, 3618, 3631, 3642, 3648, 3649, - 3650, 3650, 3652, 3667 + 0, 198, 198, 198, 199, 199, 200, 200, 201, 201, + 201, 202, 202, 203, 203, 204, 204, 205, 207, 214, + 220, 221, 222, 222, 222, 223, 223, 224, 224, 224, + 225, 225, 226, 226, 226, 227, 227, 228, 228, 228, + 229, 229, 229, 230, 230, 231, 231, 232, 232, 233, + 233, 234, 234, 235, 235, 236, 236, 237, 237, 238, + 238, 238, 239, 239, 240, 240, 240, 241, 241, 241, + 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, + 246, 247, 247, 248, 248, 249, 249, 249, 250, 250, + 251, 251, 252, 252, 253, 253, 253, 254, 254, 255, + 255, 256, 256, 257, 257, 258, 258, 259, 259, 260, + 260, 261, 261, 262, 262, 262, 263, 263, 263, 264, + 264, 264, 265, 265, 265, 265, 266, 267, 267, 267, + 268, 268, 268, 269, 269, 270, 270, 271, 271, 271, + 272, 272, 272, 273, 273, 274, 274, 274, 275, 275, + 275, 276, 276, 276, 277, 277, 278, 278, 279, 279, + 280, 281, 281, 282, 282, 283, 283, 284, 284, 285, + 285, 286, 286, 287, 287, 288, 288, 289, 289, 290, + 290, 291, 291, 291, 292, 292, 293, 293, 294, 294, + 295, 295, 295, 296, 296, 297, 298, 298, 299, 299, + 300, 301, 301, 302, 302, 303, 303, 303, 304, 304, + 305, 305, 305, 306, 306, 306, 307, 307, 308, 309, + 309, 310, 310, 311, 311, 312, 312, 313, 313, 313, + 314, 314, 314, 315, 315, 315, 316, 316, 317, 317, + 318, 318, 319, 319, 320, 320, 321, 321, 322, 322, + 323, 323, 326, 340, 341, 342, 342, 342, 342, 342, + 343, 343, 343, 345, 359, 360, 361, 361, 361, 361, + 362, 362, 362, 364, 380, 381, 382, 382, 382, 382, + 383, 383, 383, 385, 406, 407, 408, 408, 408, 408, + 409, 409, 409, 410, 410, 410, 413, 432, 449, 457, + 467, 474, 484, 503, 504, 505, 505, 505, 505, 505, + 506, 506, 506, 507, 507, 507, 507, 509, 518, 527, + 538, 547, 556, 565, 576, 585, 597, 611, 626, 637, + 654, 671, 688, 705, 720, 735, 748, 763, 772, 781, + 790, 799, 808, 817, 824, 833, 842, 851, 860, 869, + 878, 887, 896, 909, 920, 931, 942, 951, 964, 973, + 982, 991, 998, 1005, 1014, 1021, 1030, 1038, 1045, 1052, + 1060, 1069, 1077, 1093, 1101, 1109, 1117, 1125, 1133, 1142, + 1151, 1165, 1174, 1183, 1192, 1201, 1210, 1219, 1226, 1233, + 1259, 1267, 1274, 1281, 1288, 1295, 1303, 1311, 1319, 1326, + 1337, 1348, 1355, 1364, 1373, 1382, 1391, 1398, 1405, 1412, + 1428, 1436, 1444, 1454, 1464, 1474, 1488, 1496, 1509, 1520, + 1528, 1541, 1550, 1559, 1568, 1577, 1587, 1597, 1605, 1618, + 1627, 1635, 1644, 1652, 1665, 1674, 1683, 1693, 1700, 1710, + 1720, 1730, 1740, 1750, 1760, 1770, 1780, 1787, 1794, 1801, + 1810, 1819, 1828, 1837, 1844, 1854, 1862, 1871, 1878, 1896, + 1909, 1922, 1935, 1944, 1953, 1962, 1971, 1981, 1991, 2002, + 2011, 2020, 2029, 2038, 2047, 2056, 2065, 2074, 2087, 2100, + 2109, 2116, 2125, 2134, 2143, 2152, 2161, 2169, 2182, 2190, + 2245, 2252, 2267, 2277, 2287, 2294, 2301, 2308, 2317, 2325, + 2339, 2360, 2381, 2393, 2405, 2417, 2426, 2447, 2459, 2471, + 2480, 2501, 2510, 2519, 2527, 2535, 2548, 2561, 2576, 2591, + 2600, 2609, 2619, 2629, 2638, 2644, 2653, 2662, 2672, 2682, + 2692, 2701, 2711, 2720, 2733, 2746, 2758, 2772, 2784, 2798, + 2807, 2818, 2827, 2837, 2844, 2851, 2860, 2869, 2879, 2889, + 2899, 2909, 2916, 2923, 2932, 2941, 2951, 2961, 2971, 2978, + 2985, 2992, 3000, 3010, 3020, 3030, 3040, 3050, 3060, 3116, + 3126, 3134, 3142, 3157, 3166, 3172, 3173, 3174, 3174, 3174, + 3175, 3175, 3175, 3176, 3176, 3178, 3188, 3197, 3204, 3211, + 3218, 3225, 3232, 3239, 3245, 3246, 3247, 3247, 3247, 3248, + 3248, 3248, 3249, 3250, 3250, 3251, 3251, 3252, 3252, 3253, + 3254, 3255, 3256, 3257, 3258, 3260, 3269, 3279, 3286, 3293, + 3302, 3309, 3316, 3323, 3330, 3339, 3348, 3355, 3362, 3372, + 3382, 3392, 3402, 3412, 3422, 3428, 3429, 3430, 3432, 3438, + 3444, 3445, 3446, 3448, 3454, 3464, 3471, 3480, 3488, 3494, + 3495, 3497, 3497, 3497, 3498, 3498, 3499, 3500, 3501, 3502, + 3503, 3505, 3515, 3524, 3531, 3540, 3547, 3556, 3564, 3577, + 3585, 3598, 3604, 3605, 3606, 3606, 3607, 3607, 3607, 3608, + 3610, 3622, 3634, 3646, 3661, 3674, 3687, 3698, 3704, 3705, + 3706, 3706, 3708, 3723 }; #endif @@ -1425,17 +1443,19 @@ static const char *const yytname[] = "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID", "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK", "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA", - "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "$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", "rpz_signal_nxdomain_ra", "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", + "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "VAR_INTERFACE_ACTION", + "VAR_INTERFACE_VIEW", "VAR_INTERFACE_TAG", "VAR_INTERFACE_TAG_ACTION", + "VAR_INTERFACE_TAG_DATA", "$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", + "rpz_signal_nxdomain_ra", "rpzstart", "contents_rpz", "content_rpz", + "server_num_threads", "server_verbosity", "server_statistics_interval", + "server_statistics_cumulative", "server_extended_statistics", + "server_shm_enable", "server_shm_key", "server_port", + "server_send_client_subnet", "server_client_subnet_zone", "server_client_subnet_always_forward", "server_client_subnet_opcode", "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6", "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6", @@ -1491,7 +1511,7 @@ static const char *const yytname[] = "server_private_domain", "server_prefetch", "server_prefetch_key", "server_deny_any", "server_unwanted_reply_threshold", "server_do_not_query_address", "server_do_not_query_localhost", - "server_access_control", "server_module_conf", + "server_access_control", "server_interface_action", "server_module_conf", "server_val_override_date", "server_val_sig_skew_min", "server_val_sig_skew_max", "server_val_max_restart", "server_cache_max_ttl", "server_cache_max_negative_ttl", @@ -1513,40 +1533,41 @@ static const char *const yytname[] = "server_dns64_ignore_aaaa", "server_define_tag", "server_local_zone_tag", "server_access_control_tag", "server_access_control_tag_action", "server_access_control_tag_data", "server_local_zone_override", - "server_access_control_view", "server_response_ip_tag", - "server_ip_ratelimit", "server_ratelimit", "server_ip_ratelimit_size", - "server_ratelimit_size", "server_ip_ratelimit_slabs", - "server_ratelimit_slabs", "server_ratelimit_for_domain", - "server_ratelimit_below_domain", "server_ip_ratelimit_factor", - "server_ratelimit_factor", "server_ip_ratelimit_backoff", - "server_ratelimit_backoff", "server_outbound_msg_retry", - "server_low_rtt", "server_fast_server_num", "server_fast_server_permil", - "server_qname_minimisation", "server_qname_minimisation_strict", - "server_pad_responses", "server_pad_responses_block_size", - "server_pad_queries", "server_pad_queries_block_size", - "server_ipsecmod_enabled", "server_ipsecmod_ignore_bogus", - "server_ipsecmod_hook", "server_ipsecmod_max_ttl", - "server_ipsecmod_whitelist", "server_ipsecmod_strict", - "server_edns_client_string", "server_edns_client_string_opcode", - "server_ede", "stub_name", "stub_host", "stub_addr", "stub_first", - "stub_no_cache", "stub_ssl_upstream", "stub_tcp_upstream", "stub_prime", - "forward_name", "forward_host", "forward_addr", "forward_first", - "forward_no_cache", "forward_ssl_upstream", "forward_tcp_upstream", - "auth_name", "auth_zonefile", "auth_master", "auth_url", - "auth_allow_notify", "auth_zonemd_check", "auth_zonemd_reject_absence", - "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_access_control_view", "server_interface_tag", + "server_interface_tag_action", "server_interface_tag_data", + "server_interface_view", "server_response_ip_tag", "server_ip_ratelimit", + "server_ratelimit", "server_ip_ratelimit_size", "server_ratelimit_size", + "server_ip_ratelimit_slabs", "server_ratelimit_slabs", + "server_ratelimit_for_domain", "server_ratelimit_below_domain", + "server_ip_ratelimit_factor", "server_ratelimit_factor", + "server_ip_ratelimit_backoff", "server_ratelimit_backoff", + "server_outbound_msg_retry", "server_low_rtt", "server_fast_server_num", + "server_fast_server_permil", "server_qname_minimisation", + "server_qname_minimisation_strict", "server_pad_responses", + "server_pad_responses_block_size", "server_pad_queries", + "server_pad_queries_block_size", "server_ipsecmod_enabled", + "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook", + "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist", + "server_ipsecmod_strict", "server_edns_client_string", + "server_edns_client_string_opcode", "server_ede", "stub_name", + "stub_host", "stub_addr", "stub_first", "stub_no_cache", + "stub_ssl_upstream", "stub_tcp_upstream", "stub_prime", "forward_name", + "forward_host", "forward_addr", "forward_first", "forward_no_cache", + "forward_ssl_upstream", "forward_tcp_upstream", "auth_name", + "auth_zonefile", "auth_master", "auth_url", "auth_allow_notify", + "auth_zonemd_check", "auth_zonemd_reject_absence", "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", @@ -1576,48 +1597,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582 -}; -#endif - -#define YYPACT_NINF (-312) +#define YYPACT_NINF (-284) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1627,123 +1607,125 @@ static const yytype_int16 yytoknum[] = #define yytable_value_is_error(Yyn) \ 0 - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const yytype_int16 yypact[] = { - -312, 0, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, 305, -39, -32, -43, -30, -44, -42, -98, - -110, -311, -231, -235, -305, 4, 6, 7, 8, 9, - 10, 23, 24, 25, 26, 27, 37, 38, 39, 40, - 41, 43, 44, 53, 54, 56, 57, 58, 59, 60, - 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, - 92, 93, 95, 96, 98, 99, 101, 103, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 222, 223, - 224, 225, 226, 227, 228, 229, 234, 235, 236, 237, - 238, 239, 241, 250, 251, 252, 253, 256, 257, 263, - 265, 266, 267, 268, 269, 270, 272, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 298, 299, - 300, 302, 303, 304, 306, 340, 341, 342, 343, 347, - 348, 349, 391, 392, 393, 394, 395, 396, 397, 398, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, 399, 405, 409, 410, - 437, 438, 439, 441, -312, -312, -312, -312, -312, -312, - -312, -312, -312, 442, 450, 464, 465, 466, 467, 468, - -312, -312, -312, -312, -312, -312, -312, -312, 469, 470, - 471, 472, 473, 474, 475, -312, -312, -312, -312, -312, - -312, -312, -312, 476, 477, 478, 479, 480, 481, 482, - 483, 526, 528, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, 548, 549, 550, 551, 552, 553, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, 554, 555, 556, 557, 558, 569, 570, - 571, -312, -312, -312, -312, -312, -312, -312, -312, -312, - 572, 573, 574, 575, 577, 578, 579, 580, 581, 582, - 583, 586, 589, 592, 593, 602, 603, 604, 606, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, 607, - -312, -312, 608, -312, -312, 609, 610, 611, 612, 613, - 618, 619, 620, 623, 624, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, 625, 626, 627, 628, - 629, 630, -312, -312, -312, -312, -312, -312, -312, 631, - 632, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, 633, 634, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, 635, 636, 637, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, 638, - 639, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, 640, 641, 642, 643, 644, 645, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, 646, -312, -312, -312, -312, -312, -312, - -312, -312, -312, 647, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, 648, -312, -312, 649, 650, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, 651, 652, 653, -312, -312, -312, -312, - -312, -312, -312, -312, -312 + -284, 250, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -13, 201, 218, 52, 84, 38, 236, 209, + -81, -283, -93, -191, -276, 29, 30, 31, 80, 81, + 91, 92, 120, 121, 132, 146, 147, 148, 149, 161, + 162, 163, 164, 165, 208, 210, 230, 231, 234, 235, + 237, 254, 255, 256, 257, 259, 260, 263, 264, 265, + 268, 271, 274, 284, 285, 288, 289, 290, 291, 293, + 294, 295, 300, 302, 310, 311, 316, 317, 318, 319, + 320, 321, 331, 332, 333, 335, 338, 339, 345, 347, + 348, 349, 351, 357, 363, 364, 365, 366, 367, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 490, 491, 492, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 506, 507, 508, 509, 510, 511, 512, 513, 515, 516, + 517, 518, 519, 520, 521, 522, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 548, + 549, 550, 552, 553, 554, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, 555, 556, 558, 559, + 560, 561, 562, 563, -284, -284, -284, -284, -284, -284, + -284, -284, -284, 564, 565, 566, 567, 568, 569, 570, + -284, -284, -284, -284, -284, -284, -284, -284, 571, 572, + 573, 574, 575, 576, 577, -284, -284, -284, -284, -284, + -284, -284, -284, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 587, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, 588, 589, 590, 591, 592, 593, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, 594, 595, 596, 597, 598, 599, 600, + 601, -284, -284, -284, -284, -284, -284, -284, -284, -284, + 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, + 612, 613, 614, 615, 616, 617, 618, 619, 620, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, 621, + -284, -284, 622, -284, -284, 623, 624, 625, 626, 627, + 628, 629, 630, 631, 632, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, 633, 634, 635, 636, + 637, 638, -284, -284, -284, -284, -284, -284, -284, 639, + 640, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, 641, 642, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, 643, 644, 645, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, 646, + 647, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, 648, 649, 650, 651, 652, 653, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, 654, -284, -284, -284, -284, -284, -284, + -284, -284, -284, 655, -284, -284, -284, -284, -284, 656, + 657, 658, 659, 660, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + 661, -284, -284, 662, 663, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, 664, 665, + 666, -284, -284, -284, -284, -284, -284, 667, 668, -284, + -284, -284, -284, -284, -284, -284, -284 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 247, 258, 564, 624, 583, - 268, 638, 661, 278, 677, 297, 629, 3, 17, 21, - 249, 260, 270, 280, 299, 566, 585, 626, 631, 640, - 663, 679, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 252, 263, 574, 634, 593, + 273, 648, 671, 283, 687, 302, 639, 3, 17, 21, + 254, 265, 275, 285, 304, 576, 595, 636, 641, 650, + 673, 689, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1767,325 +1749,331 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 22, 23, 88, 91, 100, 208, 209, 24, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 37, - 79, 25, 92, 93, 48, 72, 87, 245, 26, 27, - 30, 31, 28, 29, 32, 33, 34, 242, 243, 244, - 35, 36, 124, 220, 125, 127, 128, 129, 222, 227, - 223, 234, 235, 236, 237, 130, 131, 132, 133, 134, - 135, 136, 204, 89, 78, 104, 122, 123, 232, 229, - 126, 38, 39, 40, 41, 42, 80, 94, 95, 111, - 66, 76, 67, 212, 213, 105, 58, 59, 211, 62, - 60, 61, 63, 240, 115, 119, 140, 151, 181, 154, - 233, 116, 73, 43, 44, 45, 102, 141, 142, 143, - 144, 46, 47, 49, 50, 52, 53, 51, 148, 149, - 155, 54, 55, 56, 64, 83, 120, 97, 150, 90, - 177, 98, 99, 117, 118, 230, 103, 57, 81, 84, - 65, 68, 106, 107, 108, 82, 178, 109, 69, 70, - 71, 221, 121, 195, 196, 197, 198, 199, 200, 201, - 202, 210, 110, 77, 241, 112, 113, 114, 179, 74, - 75, 96, 85, 86, 101, 137, 138, 231, 139, 145, - 146, 147, 182, 183, 185, 187, 188, 186, 189, 205, + 0, 0, 0, 0, 0, 20, 22, 23, 88, 91, + 100, 213, 214, 24, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 37, 79, 25, 92, 93, 48, + 72, 87, 250, 26, 27, 30, 31, 28, 29, 32, + 33, 34, 247, 248, 249, 35, 36, 124, 225, 125, + 127, 128, 129, 227, 232, 228, 239, 240, 241, 242, + 130, 131, 132, 133, 134, 135, 136, 209, 89, 78, + 104, 122, 123, 237, 234, 126, 38, 39, 40, 41, + 42, 80, 94, 95, 111, 66, 76, 67, 217, 218, + 105, 58, 59, 216, 62, 60, 61, 63, 245, 115, + 119, 140, 151, 181, 154, 238, 116, 73, 43, 44, + 45, 102, 141, 142, 143, 144, 46, 47, 49, 50, + 52, 53, 51, 148, 149, 155, 54, 55, 56, 64, + 83, 120, 97, 150, 90, 177, 98, 99, 117, 118, + 235, 103, 57, 81, 84, 190, 65, 68, 106, 107, + 108, 82, 178, 109, 69, 70, 71, 226, 121, 200, + 201, 202, 203, 204, 205, 206, 207, 215, 110, 77, + 246, 112, 113, 114, 179, 74, 75, 96, 85, 86, + 101, 137, 138, 236, 139, 145, 146, 147, 182, 183, + 185, 187, 188, 186, 189, 192, 193, 194, 191, 210, 152, 153, 158, 159, 156, 157, 160, 161, 163, 162, - 165, 164, 166, 224, 226, 225, 180, 190, 191, 192, - 193, 194, 214, 216, 215, 217, 218, 219, 238, 239, - 246, 184, 203, 206, 207, 228, 0, 0, 0, 0, - 0, 0, 0, 0, 248, 250, 251, 252, 254, 255, - 256, 257, 253, 0, 0, 0, 0, 0, 0, 0, - 259, 261, 262, 263, 264, 265, 266, 267, 0, 0, - 0, 0, 0, 0, 0, 269, 271, 272, 275, 276, - 273, 277, 274, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 279, 281, 282, 283, 284, 288, 289, - 290, 285, 286, 287, 0, 0, 0, 0, 0, 0, - 302, 306, 307, 308, 309, 310, 298, 300, 301, 303, - 304, 305, 311, 0, 0, 0, 0, 0, 0, 0, - 0, 565, 567, 569, 568, 574, 570, 571, 572, 573, + 165, 164, 166, 229, 231, 230, 180, 195, 196, 197, + 198, 199, 219, 221, 220, 222, 223, 224, 243, 244, + 251, 184, 208, 211, 212, 233, 0, 0, 0, 0, + 0, 0, 0, 0, 253, 255, 256, 257, 259, 260, + 261, 262, 258, 0, 0, 0, 0, 0, 0, 0, + 264, 266, 267, 268, 269, 270, 271, 272, 0, 0, + 0, 0, 0, 0, 0, 274, 276, 277, 280, 281, + 278, 282, 279, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 284, 286, 287, 288, 289, 293, 294, + 295, 290, 291, 292, 0, 0, 0, 0, 0, 0, + 307, 311, 312, 313, 314, 315, 303, 305, 306, 308, + 309, 310, 316, 0, 0, 0, 0, 0, 0, 0, + 0, 575, 577, 579, 578, 584, 580, 581, 582, 583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 584, - 586, 588, 587, 589, 590, 591, 592, 593, 594, 595, - 596, 597, 598, 599, 600, 601, 602, 603, 604, 0, - 625, 627, 0, 630, 632, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 639, 641, 642, 643, 645, - 646, 644, 647, 648, 649, 650, 0, 0, 0, 0, - 0, 0, 662, 664, 665, 666, 667, 668, 669, 0, - 0, 678, 680, 681, 313, 312, 319, 332, 330, 343, - 339, 340, 344, 341, 342, 345, 346, 347, 351, 352, - 382, 383, 384, 385, 386, 414, 415, 416, 422, 423, - 335, 424, 425, 428, 426, 427, 432, 433, 434, 448, - 397, 398, 401, 402, 435, 451, 391, 393, 452, 459, - 460, 461, 336, 413, 480, 481, 392, 474, 375, 331, - 387, 449, 456, 436, 0, 0, 484, 337, 314, 374, - 440, 315, 333, 334, 388, 389, 482, 438, 442, 443, - 349, 348, 316, 485, 417, 447, 376, 396, 453, 454, - 455, 458, 473, 390, 478, 476, 477, 405, 412, 444, - 445, 406, 407, 437, 463, 377, 378, 381, 353, 355, - 350, 356, 357, 358, 359, 366, 367, 368, 369, 370, - 371, 372, 486, 487, 489, 418, 419, 420, 421, 429, - 430, 431, 490, 491, 492, 0, 0, 0, 439, 408, - 410, 634, 501, 505, 503, 502, 506, 504, 513, 0, - 0, 509, 510, 511, 512, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 441, 457, 479, 517, 518, - 409, 493, 0, 0, 0, 0, 0, 0, 464, 465, - 466, 467, 468, 469, 470, 471, 472, 635, 399, 400, - 403, 394, 462, 373, 317, 318, 395, 519, 520, 521, - 522, 523, 525, 524, 526, 527, 528, 354, 361, 514, - 516, 515, 360, 0, 380, 446, 488, 379, 411, 362, - 363, 365, 364, 0, 530, 404, 475, 338, 531, 532, - 533, 534, 539, 537, 538, 535, 536, 540, 541, 542, - 543, 545, 546, 544, 557, 0, 561, 562, 0, 0, - 563, 547, 555, 548, 549, 550, 554, 556, 551, 552, - 553, 291, 292, 293, 294, 295, 296, 575, 577, 576, - 579, 580, 581, 582, 578, 605, 607, 608, 609, 610, - 611, 612, 613, 614, 615, 606, 616, 617, 618, 619, - 620, 621, 622, 623, 628, 633, 651, 652, 653, 656, - 654, 655, 657, 658, 659, 660, 670, 671, 672, 673, - 674, 675, 682, 683, 450, 483, 500, 636, 637, 507, - 508, 494, 495, 0, 0, 0, 499, 676, 529, 558, - 559, 560, 498, 496, 497 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 594, + 596, 598, 597, 599, 600, 601, 602, 603, 604, 605, + 606, 607, 608, 609, 610, 611, 612, 613, 614, 0, + 635, 637, 0, 640, 642, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 649, 651, 652, 653, 655, + 656, 654, 657, 658, 659, 660, 0, 0, 0, 0, + 0, 0, 672, 674, 675, 676, 677, 678, 679, 0, + 0, 688, 690, 691, 318, 317, 324, 337, 335, 348, + 344, 345, 349, 346, 347, 350, 351, 352, 356, 357, + 387, 388, 389, 390, 391, 419, 420, 421, 427, 428, + 340, 429, 430, 433, 431, 432, 437, 438, 439, 453, + 402, 403, 406, 407, 440, 457, 396, 398, 458, 465, + 466, 467, 341, 418, 486, 487, 397, 480, 380, 336, + 392, 454, 462, 441, 0, 0, 490, 342, 319, 379, + 445, 320, 338, 339, 393, 394, 488, 443, 447, 448, + 354, 353, 321, 491, 422, 452, 381, 401, 459, 460, + 461, 464, 479, 395, 484, 482, 483, 410, 417, 449, + 450, 411, 412, 442, 469, 382, 383, 386, 358, 360, + 355, 361, 362, 363, 364, 371, 372, 373, 374, 375, + 376, 377, 492, 493, 495, 423, 424, 425, 426, 434, + 435, 436, 496, 497, 498, 0, 0, 0, 444, 413, + 415, 644, 511, 515, 513, 512, 516, 514, 523, 0, + 0, 519, 520, 521, 522, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 446, 463, 485, 527, 528, + 414, 499, 0, 0, 0, 0, 0, 0, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 645, 404, 405, + 408, 399, 468, 378, 322, 323, 400, 529, 530, 531, + 532, 533, 535, 534, 536, 537, 538, 359, 366, 524, + 526, 525, 365, 0, 385, 451, 494, 384, 416, 367, + 368, 370, 369, 0, 540, 409, 481, 343, 541, 0, + 0, 0, 0, 0, 542, 543, 544, 549, 547, 548, + 545, 546, 550, 551, 552, 553, 555, 556, 554, 567, + 0, 571, 572, 0, 0, 573, 557, 565, 558, 559, + 560, 564, 566, 561, 562, 563, 296, 297, 298, 299, + 300, 301, 585, 587, 586, 589, 590, 591, 592, 588, + 615, 617, 618, 619, 620, 621, 622, 623, 624, 625, + 616, 626, 627, 628, 629, 630, 631, 632, 633, 638, + 643, 661, 662, 663, 666, 664, 665, 667, 668, 669, + 670, 680, 681, 682, 683, 684, 685, 692, 693, 455, + 489, 510, 646, 647, 517, 518, 500, 501, 0, 0, + 0, 505, 686, 539, 456, 509, 506, 0, 0, 568, + 569, 570, 504, 502, 503, 507, 508 }; - /* YYPGOTO[NTERM-NUM]. */ +/* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -27, 654, 655, 656, 657, -312, -312, - 658, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, -312, -312 + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, 669, 670, + 671, 672, 673, -284, -284, 674, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284 }; - /* YYDEFGOTO[NTERM-NUM]. */ +/* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 1, 17, 18, 19, 32, 270, 20, 33, 504, - 21, 34, 520, 22, 35, 535, 23, 36, 553, 570, - 571, 572, 573, 574, 575, 24, 37, 576, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, - 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 485, 486, 487, 488, 489, 490, 505, 506, - 507, 508, 509, 510, 511, 512, 521, 522, 523, 524, - 525, 526, 527, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 536, 537, 538, 539, 540, 541, 542, - 25, 38, 591, 592, 593, 594, 595, 596, 597, 598, - 599, 26, 39, 619, 620, 621, 622, 623, 624, 625, - 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, - 636, 637, 638, 27, 40, 640, 641, 28, 41, 643, - 644, 491, 492, 493, 494, 29, 42, 655, 656, 657, - 658, 659, 660, 661, 662, 663, 664, 665, 30, 43, - 672, 673, 674, 675, 676, 677, 678, 495, 31, 44, - 681, 682, 683 + 0, 1, 17, 18, 19, 32, 275, 20, 33, 514, + 21, 34, 530, 22, 35, 545, 23, 36, 563, 580, + 581, 582, 583, 584, 585, 24, 37, 586, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 515, 516, 517, 518, 519, 520, 521, + 522, 531, 532, 533, 534, 535, 536, 537, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 546, 547, + 548, 549, 550, 551, 552, 25, 38, 601, 602, 603, + 604, 605, 606, 607, 608, 609, 26, 39, 629, 630, + 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, + 641, 642, 643, 644, 645, 646, 647, 648, 27, 40, + 650, 651, 28, 41, 653, 654, 501, 502, 503, 504, + 29, 42, 665, 666, 667, 668, 669, 670, 671, 672, + 673, 674, 675, 30, 43, 682, 683, 684, 685, 686, + 687, 688, 505, 31, 44, 691, 692, 693 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 543, 528, 679, 680, 639, 496, 642, 497, 498, - 577, 3, 4, 513, 684, 543, 685, 686, 687, 688, - 689, 514, 515, 645, 646, 647, 648, 649, 650, 651, - 652, 653, 654, 690, 691, 692, 693, 694, 529, 530, - 666, 667, 668, 669, 670, 671, 5, 695, 696, 697, - 698, 699, 6, 700, 701, 583, 584, 585, 586, 587, - 588, 589, 590, 702, 703, 531, 704, 705, 706, 707, - 708, 499, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, - 618, 709, 710, 711, 712, 713, 7, 714, 715, 716, - 717, 718, 719, 720, 500, 721, 722, 501, 723, 724, - 516, 725, 517, 726, 8, 518, 502, 727, 728, 729, - 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, - 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, - 750, 751, 752, 753, 754, 755, 756, 532, 533, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, - 768, 769, 770, 771, 772, 773, 774, 775, 776, 9, - 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 689, 690, 649, 652, 77, 78, 79, 694, + 695, 696, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 553, 676, 677, 678, 679, 680, 681, + 697, 698, 121, 122, 123, 124, 125, 538, 126, 127, + 128, 699, 700, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 553, + 701, 702, 155, 539, 540, 156, 157, 158, 159, 160, + 161, 162, 703, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 704, 705, 706, 707, + 541, 655, 656, 657, 658, 659, 660, 661, 662, 663, + 664, 708, 709, 710, 711, 712, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 713, 218, + 714, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 715, 716, 542, 543, 717, 718, 506, 719, 507, 508, + 2, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 3, 4, 523, 720, 721, 722, 723, 248, 724, + 725, 524, 525, 726, 727, 728, 249, 250, 729, 251, + 252, 730, 253, 254, 731, 544, 255, 256, 257, 258, + 259, 260, 261, 262, 732, 733, 5, 263, 734, 735, + 736, 737, 6, 738, 739, 740, 264, 265, 266, 267, + 741, 509, 742, 268, 269, 270, 271, 272, 273, 274, + 743, 744, 555, 556, 557, 558, 745, 746, 747, 748, + 749, 750, 560, 593, 594, 595, 596, 597, 598, 599, + 600, 751, 752, 753, 510, 754, 7, 511, 755, 756, + 574, 575, 576, 577, 578, 757, 512, 758, 759, 760, + 526, 761, 527, 579, 8, 528, 554, 762, 555, 556, + 557, 558, 559, 763, 764, 765, 766, 767, 560, 610, + 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, + 621, 622, 623, 624, 625, 626, 627, 628, 768, 769, + 770, 771, 772, 773, 774, 775, 776, 561, 562, 777, + 778, 779, 780, 781, 782, 783, 784, 785, 786, 9, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, - 534, 797, 798, 799, 800, 801, 802, 803, 804, 805, - 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, - 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, - 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, - 836, 10, 837, 838, 839, 840, 841, 842, 843, 844, - 545, 546, 547, 548, 845, 846, 847, 848, 849, 850, - 550, 851, 544, 11, 545, 546, 547, 548, 549, 503, - 852, 853, 854, 855, 550, 519, 856, 857, 564, 565, - 566, 567, 568, 858, 12, 859, 860, 861, 862, 863, - 864, 569, 865, 13, 866, 867, 868, 869, 870, 871, - 872, 873, 874, 551, 552, 875, 876, 877, 878, 879, - 880, 881, 882, 883, 884, 885, 886, 14, 887, 888, - 889, 15, 890, 891, 892, 0, 893, 16, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 894, 895, 896, 897, 77, 78, 79, 898, 899, 900, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 901, 902, 903, 904, 905, 906, 907, 908, 909, - 121, 122, 123, 124, 125, 910, 126, 127, 128, 911, - 912, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 913, 914, 915, - 155, 916, 917, 156, 157, 158, 159, 160, 161, 162, - 918, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 919, 920, 921, 922, 923, 924, - 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, - 935, 936, 937, 938, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 939, 218, 940, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 941, 942, - 943, 944, 945, 946, 947, 948, 949, 950, 951, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 952, - 953, 954, 955, 956, 957, 958, 248, 959, 960, 961, - 962, 963, 964, 965, 249, 250, 966, 251, 252, 967, - 253, 254, 968, 969, 255, 256, 257, 258, 259, 260, - 261, 262, 970, 971, 972, 263, 973, 974, 975, 976, - 977, 978, 979, 980, 264, 265, 266, 267, 981, 982, - 983, 268, 269, 984, 985, 986, 987, 988, 989, 990, - 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, - 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, - 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, + 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, + 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, + 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, + 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, + 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, + 847, 10, 848, 849, 850, 851, 852, 853, 854, 855, + 856, 857, 858, 859, 860, 861, 862, 863, 864, 513, + 865, 866, 867, 11, 868, 869, 870, 871, 872, 873, + 874, 875, 876, 877, 878, 529, 879, 880, 881, 882, + 883, 884, 885, 886, 12, 887, 888, 889, 890, 891, + 892, 893, 894, 13, 895, 896, 897, 898, 899, 900, + 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, + 911, 912, 913, 914, 915, 916, 917, 14, 918, 919, + 920, 15, 921, 922, 923, 924, 925, 16, 926, 927, + 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, + 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, + 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, + 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, + 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, + 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, + 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, + 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, + 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, + 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, + 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 578, 579, 580, 581, 582 + 0, 0, 0, 0, 0, 0, 587, 588, 589, 590, + 591, 592 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 308, 309, 115, 45, 318, 47, 48, - 37, 11, 12, 45, 10, 45, 10, 10, 10, 10, - 10, 53, 54, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 10, 10, 10, 10, 10, 81, 82, - 275, 276, 277, 278, 279, 280, 46, 10, 10, 10, - 10, 10, 52, 10, 10, 97, 98, 99, 100, 101, - 102, 103, 104, 10, 10, 108, 10, 10, 10, 10, - 10, 110, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 10, 10, 10, 10, 10, 96, 10, 10, 10, - 10, 10, 10, 10, 143, 10, 10, 146, 10, 10, - 142, 10, 144, 10, 114, 147, 155, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 190, 191, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 308, 309, 115, 318, 49, 50, 51, 10, + 10, 10, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 45, 275, 276, 277, 278, 279, 280, + 10, 10, 105, 106, 107, 108, 109, 45, 111, 112, + 113, 10, 10, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 45, + 10, 10, 145, 81, 82, 148, 149, 150, 151, 152, + 153, 154, 10, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 10, 10, 10, 10, + 108, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 10, 10, 10, 10, 10, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 10, 232, + 10, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 10, 10, 190, 191, 10, 10, 45, 10, 47, 48, + 0, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 11, 12, 45, 10, 10, 10, 10, 281, 10, + 10, 53, 54, 10, 10, 10, 289, 290, 10, 292, + 293, 10, 295, 296, 10, 233, 299, 300, 301, 302, + 303, 304, 305, 306, 10, 10, 46, 310, 10, 10, + 10, 10, 52, 10, 10, 10, 319, 320, 321, 322, + 10, 110, 10, 326, 327, 328, 329, 330, 331, 332, + 10, 10, 284, 285, 286, 287, 10, 10, 10, 10, + 10, 10, 294, 97, 98, 99, 100, 101, 102, 103, + 104, 10, 10, 10, 143, 10, 96, 146, 10, 10, + 312, 313, 314, 315, 316, 10, 155, 10, 10, 10, + 142, 10, 144, 325, 114, 147, 282, 10, 284, 285, + 286, 287, 288, 10, 10, 10, 10, 10, 294, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 323, 324, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 169, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 233, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 231, 10, 10, 10, 10, 10, 10, 10, 10, - 284, 285, 286, 287, 10, 10, 10, 10, 10, 10, - 294, 10, 282, 253, 284, 285, 286, 287, 288, 298, - 10, 10, 10, 10, 294, 297, 10, 10, 312, 313, - 314, 315, 316, 10, 274, 10, 10, 10, 10, 10, - 10, 325, 10, 283, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 323, 324, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 298, + 10, 10, 10, 253, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 297, 10, 10, 10, 10, + 10, 10, 10, 10, 274, 10, 10, 10, 10, 10, + 10, 10, 10, 283, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 307, 10, 10, - 10, 311, 10, 10, 10, -1, 10, 317, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 10, 10, 10, 10, 49, 50, 51, 10, 10, 10, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 105, 106, 107, 108, 109, 10, 111, 112, 113, 10, - 10, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 10, 10, 10, - 145, 10, 10, 148, 149, 150, 151, 152, 153, 154, - 10, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 10, 232, 10, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 10, - 10, 10, 10, 10, 10, 10, 281, 10, 10, 10, - 10, 10, 10, 10, 289, 290, 10, 292, 293, 10, - 295, 296, 10, 10, 299, 300, 301, 302, 303, 304, - 305, 306, 10, 10, 10, 310, 10, 10, 10, 10, - 10, 10, 10, 10, 319, 320, 321, 322, 10, 10, - 10, 326, 327, 10, 10, 10, 10, 10, 10, 10, + 10, 311, 10, 10, 10, 10, 10, 317, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 37, 37, 37, 37, 37 + -1, -1, -1, -1, -1, -1, 37, 37, 37, 37, + 37, 37 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 329, 0, 11, 12, 46, 52, 96, 114, 169, - 231, 253, 274, 283, 307, 311, 317, 330, 331, 332, - 335, 338, 341, 344, 353, 608, 619, 641, 645, 653, - 666, 676, 333, 336, 339, 342, 345, 354, 609, 620, - 642, 646, 654, 667, 677, 13, 14, 15, 16, 17, + 0, 334, 0, 11, 12, 46, 52, 96, 114, 169, + 231, 253, 274, 283, 307, 311, 317, 335, 336, 337, + 340, 343, 346, 349, 358, 618, 629, 651, 655, 663, + 676, 686, 338, 341, 344, 347, 350, 359, 619, 630, + 652, 656, 664, 677, 687, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2108,7 +2096,7 @@ static const yytype_int16 yystos[] = 266, 267, 268, 269, 270, 271, 272, 273, 281, 289, 290, 292, 293, 295, 296, 299, 300, 301, 302, 303, 304, 305, 306, 310, 319, 320, 321, 322, 326, 327, - 334, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 328, 329, 330, 331, 332, 339, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, @@ -2130,26 +2118,27 @@ static const yytype_int16 yystos[] = 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 649, 650, 651, 652, 675, 45, 47, 48, 110, - 143, 146, 155, 298, 337, 576, 577, 578, 579, 580, - 581, 582, 583, 45, 53, 54, 142, 144, 147, 297, - 340, 584, 585, 586, 587, 588, 589, 590, 45, 81, - 82, 108, 190, 191, 233, 343, 601, 602, 603, 604, - 605, 606, 607, 45, 282, 284, 285, 286, 287, 288, - 294, 323, 324, 346, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 312, 313, 314, 315, 316, 325, - 347, 348, 349, 350, 351, 352, 355, 591, 592, 593, - 594, 595, 598, 97, 98, 99, 100, 101, 102, 103, - 104, 610, 611, 612, 613, 614, 615, 616, 617, 618, + 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, + 585, 659, 660, 661, 662, 685, 45, 47, 48, 110, + 143, 146, 155, 298, 342, 586, 587, 588, 589, 590, + 591, 592, 593, 45, 53, 54, 142, 144, 147, 297, + 345, 594, 595, 596, 597, 598, 599, 600, 45, 81, + 82, 108, 190, 191, 233, 348, 611, 612, 613, 614, + 615, 616, 617, 45, 282, 284, 285, 286, 287, 288, + 294, 323, 324, 351, 601, 602, 603, 604, 605, 606, + 607, 608, 609, 610, 312, 313, 314, 315, 316, 325, + 352, 353, 354, 355, 356, 357, 360, 601, 602, 603, + 604, 605, 608, 97, 98, 99, 100, 101, 102, 103, + 104, 620, 621, 622, 623, 624, 625, 626, 627, 628, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 621, - 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, - 632, 633, 634, 635, 636, 637, 638, 639, 640, 115, - 643, 644, 318, 647, 648, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 655, 656, 657, 658, 659, - 660, 661, 662, 663, 664, 665, 275, 276, 277, 278, - 279, 280, 668, 669, 670, 671, 672, 673, 674, 308, - 309, 678, 679, 680, 10, 10, 10, 10, 10, 10, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 631, + 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, + 642, 643, 644, 645, 646, 647, 648, 649, 650, 115, + 653, 654, 318, 657, 658, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 275, 276, 277, 278, + 279, 280, 678, 679, 680, 681, 682, 683, 684, 308, + 309, 688, 689, 690, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2182,44 +2171,45 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 328, 329, 329, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 331, 332, - 333, 333, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 335, 336, 336, - 337, 337, 337, 337, 337, 337, 337, 337, 338, 339, - 339, 340, 340, 340, 340, 340, 340, 340, 341, 342, - 342, 343, 343, 343, 343, 343, 343, 343, 344, 345, - 345, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 354, - 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 0, 333, 334, 334, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 336, 337, + 338, 338, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 340, 341, 341, 342, 342, 342, 342, 342, + 342, 342, 342, 343, 344, 344, 345, 345, 345, 345, + 345, 345, 345, 346, 347, 347, 348, 348, 348, 348, + 348, 348, 348, 349, 350, 350, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 359, 360, 360, 360, 360, 360, + 360, 360, 360, 360, 360, 360, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, @@ -2244,22 +2234,23 @@ static const yytype_int16 yyr1[] = 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, - 604, 605, 606, 607, 608, 609, 609, 610, 610, 610, - 610, 610, 610, 610, 610, 611, 612, 613, 614, 615, - 616, 617, 618, 619, 620, 620, 621, 621, 621, 621, - 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, - 621, 621, 621, 621, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, - 637, 638, 639, 640, 641, 642, 642, 643, 644, 645, - 646, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 654, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, - 665, 666, 667, 667, 668, 668, 668, 668, 668, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 677, - 678, 678, 679, 680 + 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, + 614, 615, 616, 617, 618, 619, 619, 620, 620, 620, + 620, 620, 620, 620, 620, 621, 622, 623, 624, 625, + 626, 627, 628, 629, 630, 630, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 632, 633, 634, 635, 636, + 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, + 647, 648, 649, 650, 651, 652, 652, 653, 654, 655, + 656, 656, 657, 658, 659, 660, 661, 662, 663, 664, + 664, 665, 665, 665, 665, 665, 665, 665, 665, 665, + 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, + 675, 676, 677, 677, 678, 678, 678, 678, 678, 678, + 679, 680, 681, 682, 683, 684, 685, 686, 687, 687, + 688, 688, 689, 690 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, @@ -2286,14 +2277,14 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2307,11 +2298,12 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 3, 4, 4, 4, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 3, 4, 4, 4, 3, 3, 4, 4, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, @@ -2342,6 +2334,7 @@ enum { YYENOMEM = -2 }; #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) @@ -2382,10 +2375,7 @@ do { \ YYFPRINTF Args; \ } while (0) -/* This macro is provided for backward compatibility. */ -# ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif + # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ @@ -2412,10 +2402,6 @@ yy_symbol_value_print (FILE *yyo, YY_USE (yyoutput); if (!yyvaluep) return; -# ifdef YYPRINT - if (yykind < YYNTOKENS) - YYPRINT (yyo, yytoknum[yykind], *yyvaluep); -# endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END @@ -2600,6 +2586,7 @@ yyparse (void) YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; @@ -2625,7 +2612,7 @@ yysetstate: if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; + YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ @@ -2653,7 +2640,7 @@ yysetstate: # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; @@ -2664,7 +2651,7 @@ yysetstate: YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) - goto yyexhaustedlab; + YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE @@ -2686,6 +2673,7 @@ yysetstate: } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + if (yystate == YYFINAL) YYACCEPT; @@ -2798,25 +2786,25 @@ yyreduce: switch (yyn) { case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */ -#line 205 "./util/configparser.y" +#line 208 "./util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); cfg_parser->started_toplevel = 0; } -#line 2807 "util/configparser.c" +#line 2795 "util/configparser.c" break; case 19: /* serverstart: VAR_SERVER */ -#line 212 "./util/configparser.y" +#line 215 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); cfg_parser->started_toplevel = 1; } -#line 2816 "util/configparser.c" +#line 2804 "util/configparser.c" break; - case 247: /* stubstart: VAR_STUB_ZONE */ -#line 322 "./util/configparser.y" + case 252: /* stubstart: VAR_STUB_ZONE */ +#line 327 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2829,11 +2817,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2833 "util/configparser.c" +#line 2821 "util/configparser.c" break; - case 258: /* forwardstart: VAR_FORWARD_ZONE */ -#line 341 "./util/configparser.y" + case 263: /* forwardstart: VAR_FORWARD_ZONE */ +#line 346 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2846,11 +2834,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2850 "util/configparser.c" +#line 2838 "util/configparser.c" break; - case 268: /* viewstart: VAR_VIEW */ -#line 360 "./util/configparser.y" + case 273: /* viewstart: VAR_VIEW */ +#line 365 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2865,11 +2853,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2869 "util/configparser.c" +#line 2857 "util/configparser.c" break; - case 278: /* authstart: VAR_AUTH_ZONE */ -#line 381 "./util/configparser.y" + case 283: /* authstart: VAR_AUTH_ZONE */ +#line 386 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2889,11 +2877,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2893 "util/configparser.c" +#line 2881 "util/configparser.c" break; - case 291: /* rpz_tag: VAR_TAGS STRING_ARG */ -#line 409 "./util/configparser.y" + case 296: /* rpz_tag: VAR_TAGS STRING_ARG */ +#line 414 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -2910,11 +2898,11 @@ yyreduce: } } -#line 2914 "util/configparser.c" +#line 2902 "util/configparser.c" break; - case 292: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ -#line 428 "./util/configparser.y" + case 297: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ +#line 433 "./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 && @@ -2929,21 +2917,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2933 "util/configparser.c" +#line 2921 "util/configparser.c" break; - case 293: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ -#line 445 "./util/configparser.y" + case 298: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ +#line 450 "./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 2943 "util/configparser.c" +#line 2931 "util/configparser.c" break; - case 294: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ -#line 453 "./util/configparser.y" + case 299: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ +#line 458 "./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) @@ -2951,21 +2939,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2955 "util/configparser.c" +#line 2943 "util/configparser.c" break; - case 295: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ -#line 463 "./util/configparser.y" + case 300: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ +#line 468 "./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 2965 "util/configparser.c" +#line 2953 "util/configparser.c" break; - case 296: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ -#line 470 "./util/configparser.y" + case 301: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ +#line 475 "./util/configparser.y" { OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2973,11 +2961,11 @@ yyreduce: else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2977 "util/configparser.c" +#line 2965 "util/configparser.c" break; - case 297: /* rpzstart: VAR_RPZ */ -#line 480 "./util/configparser.y" + case 302: /* rpzstart: VAR_RPZ */ +#line 485 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2995,11 +2983,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2999 "util/configparser.c" +#line 2987 "util/configparser.c" break; - case 312: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ -#line 505 "./util/configparser.y" + case 317: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ +#line 510 "./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) @@ -3007,11 +2995,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3011 "util/configparser.c" +#line 2999 "util/configparser.c" break; - case 313: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ -#line 514 "./util/configparser.y" + case 318: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ +#line 519 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3019,11 +3007,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3023 "util/configparser.c" +#line 3011 "util/configparser.c" break; - case 314: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ -#line 523 "./util/configparser.y" + case 319: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ +#line 528 "./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) @@ -3033,11 +3021,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3037 "util/configparser.c" +#line 3025 "util/configparser.c" break; - case 315: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ -#line 534 "./util/configparser.y" + case 320: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ +#line 539 "./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) @@ -3045,11 +3033,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3049 "util/configparser.c" +#line 3037 "util/configparser.c" break; - case 316: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ -#line 543 "./util/configparser.y" + case 321: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ +#line 548 "./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) @@ -3057,11 +3045,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3061 "util/configparser.c" +#line 3049 "util/configparser.c" break; - case 317: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ -#line 552 "./util/configparser.y" + case 322: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ +#line 557 "./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) @@ -3069,11 +3057,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3073 "util/configparser.c" +#line 3061 "util/configparser.c" break; - case 318: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ -#line 561 "./util/configparser.y" + case 323: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ +#line 566 "./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) @@ -3083,11 +3071,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3087 "util/configparser.c" +#line 3075 "util/configparser.c" break; - case 319: /* server_port: VAR_PORT STRING_ARG */ -#line 572 "./util/configparser.y" + case 324: /* server_port: VAR_PORT STRING_ARG */ +#line 577 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3095,11 +3083,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3099 "util/configparser.c" +#line 3087 "util/configparser.c" break; - case 320: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ -#line 581 "./util/configparser.y" + case 325: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ +#line 586 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3110,11 +3098,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3114 "util/configparser.c" +#line 3102 "util/configparser.c" break; - case 321: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ -#line 593 "./util/configparser.y" + case 326: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ +#line 598 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3126,11 +3114,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3130 "util/configparser.c" +#line 3118 "util/configparser.c" break; - case 322: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ -#line 607 "./util/configparser.y" + case 327: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ +#line 612 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3144,11 +3132,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3148 "util/configparser.c" +#line 3136 "util/configparser.c" break; - case 323: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ -#line 622 "./util/configparser.y" + case 328: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ +#line 627 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3158,11 +3146,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3162 "util/configparser.c" +#line 3150 "util/configparser.c" break; - case 324: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 633 "./util/configparser.y" + case 329: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 638 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3178,11 +3166,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3182 "util/configparser.c" +#line 3170 "util/configparser.c" break; - case 325: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 650 "./util/configparser.y" + case 330: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 655 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3198,11 +3186,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3202 "util/configparser.c" +#line 3190 "util/configparser.c" break; - case 326: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 667 "./util/configparser.y" + case 331: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 672 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3218,11 +3206,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3222 "util/configparser.c" +#line 3210 "util/configparser.c" break; - case 327: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 684 "./util/configparser.y" + case 332: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 689 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3238,11 +3226,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3242 "util/configparser.c" +#line 3230 "util/configparser.c" break; - case 328: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ -#line 701 "./util/configparser.y" + case 333: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ +#line 706 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3256,11 +3244,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3260 "util/configparser.c" +#line 3248 "util/configparser.c" break; - case 329: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ -#line 716 "./util/configparser.y" + case 334: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ +#line 721 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3274,11 +3262,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3278 "util/configparser.c" +#line 3266 "util/configparser.c" break; - case 330: /* server_interface: VAR_INTERFACE STRING_ARG */ -#line 731 "./util/configparser.y" + case 335: /* server_interface: VAR_INTERFACE STRING_ARG */ +#line 736 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3290,11 +3278,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3294 "util/configparser.c" +#line 3282 "util/configparser.c" break; - case 331: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ -#line 744 "./util/configparser.y" + case 336: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ +#line 749 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3308,11 +3296,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3312 "util/configparser.c" +#line 3300 "util/configparser.c" break; - case 332: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ -#line 759 "./util/configparser.y" + case 337: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ +#line 764 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3320,11 +3308,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3324 "util/configparser.c" +#line 3312 "util/configparser.c" break; - case 333: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ -#line 768 "./util/configparser.y" + case 338: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ +#line 773 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3332,11 +3320,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3336 "util/configparser.c" +#line 3324 "util/configparser.c" break; - case 334: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ -#line 777 "./util/configparser.y" + case 339: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ +#line 782 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3344,11 +3332,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3348 "util/configparser.c" +#line 3336 "util/configparser.c" break; - case 335: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ -#line 786 "./util/configparser.y" + case 340: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ +#line 791 "./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) @@ -3356,11 +3344,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3360 "util/configparser.c" +#line 3348 "util/configparser.c" break; - case 336: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ -#line 795 "./util/configparser.y" + case 341: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ +#line 800 "./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) @@ -3368,11 +3356,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3372 "util/configparser.c" +#line 3360 "util/configparser.c" break; - case 337: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ -#line 804 "./util/configparser.y" + case 342: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ +#line 809 "./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) @@ -3380,21 +3368,21 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3384 "util/configparser.c" +#line 3372 "util/configparser.c" break; - case 338: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ -#line 813 "./util/configparser.y" + case 343: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ +#line 818 "./util/configparser.y" { OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->if_automatic_ports); cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str); } -#line 3394 "util/configparser.c" +#line 3382 "util/configparser.c" break; - case 339: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ -#line 820 "./util/configparser.y" + case 344: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ +#line 825 "./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) @@ -3402,11 +3390,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3406 "util/configparser.c" +#line 3394 "util/configparser.c" break; - case 340: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ -#line 829 "./util/configparser.y" + case 345: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ +#line 834 "./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) @@ -3414,11 +3402,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3418 "util/configparser.c" +#line 3406 "util/configparser.c" break; - case 341: /* server_do_udp: VAR_DO_UDP STRING_ARG */ -#line 838 "./util/configparser.y" + case 346: /* server_do_udp: VAR_DO_UDP STRING_ARG */ +#line 843 "./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) @@ -3426,11 +3414,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3430 "util/configparser.c" +#line 3418 "util/configparser.c" break; - case 342: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ -#line 847 "./util/configparser.y" + case 347: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ +#line 852 "./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) @@ -3438,11 +3426,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3442 "util/configparser.c" +#line 3430 "util/configparser.c" break; - case 343: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ -#line 856 "./util/configparser.y" + case 348: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ +#line 861 "./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) @@ -3450,11 +3438,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3454 "util/configparser.c" +#line 3442 "util/configparser.c" break; - case 344: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ -#line 865 "./util/configparser.y" + case 349: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ +#line 870 "./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) @@ -3462,11 +3450,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3466 "util/configparser.c" +#line 3454 "util/configparser.c" break; - case 345: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ -#line 874 "./util/configparser.y" + case 350: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ +#line 879 "./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) @@ -3474,11 +3462,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3478 "util/configparser.c" +#line 3466 "util/configparser.c" break; - case 346: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ -#line 883 "./util/configparser.y" + case 351: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ +#line 888 "./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) @@ -3486,11 +3474,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3490 "util/configparser.c" +#line 3478 "util/configparser.c" break; - case 347: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ -#line 892 "./util/configparser.y" + case 352: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ +#line 897 "./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) @@ -3502,11 +3490,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3506 "util/configparser.c" +#line 3494 "util/configparser.c" break; - case 348: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ -#line 905 "./util/configparser.y" + case 353: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ +#line 910 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3516,11 +3504,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3520 "util/configparser.c" +#line 3508 "util/configparser.c" break; - case 349: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ -#line 916 "./util/configparser.y" + case 354: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ +#line 921 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3530,11 +3518,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3534 "util/configparser.c" +#line 3522 "util/configparser.c" break; - case 350: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ -#line 927 "./util/configparser.y" + case 355: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ +#line 932 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3544,11 +3532,11 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3548 "util/configparser.c" +#line 3536 "util/configparser.c" break; - case 351: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ -#line 938 "./util/configparser.y" + case 356: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ +#line 943 "./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) @@ -3556,11 +3544,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3560 "util/configparser.c" +#line 3548 "util/configparser.c" break; - case 352: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ -#line 947 "./util/configparser.y" + case 357: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ +#line 952 "./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) @@ -3572,11 +3560,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3576 "util/configparser.c" +#line 3564 "util/configparser.c" break; - case 353: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ -#line 960 "./util/configparser.y" + case 358: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ +#line 965 "./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) @@ -3584,11 +3572,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3588 "util/configparser.c" +#line 3576 "util/configparser.c" break; - case 354: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ -#line 969 "./util/configparser.y" + case 359: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ +#line 974 "./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) @@ -3596,11 +3584,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3600 "util/configparser.c" +#line 3588 "util/configparser.c" break; - case 355: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ -#line 978 "./util/configparser.y" + case 360: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ +#line 983 "./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) @@ -3608,31 +3596,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3612 "util/configparser.c" +#line 3600 "util/configparser.c" break; - case 356: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ -#line 987 "./util/configparser.y" + case 361: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ +#line 992 "./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 3622 "util/configparser.c" +#line 3610 "util/configparser.c" break; - case 357: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ -#line 994 "./util/configparser.y" + case 362: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ +#line 999 "./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 3632 "util/configparser.c" +#line 3620 "util/configparser.c" break; - case 358: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ -#line 1001 "./util/configparser.y" + case 363: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ +#line 1006 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3640,21 +3628,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3644 "util/configparser.c" +#line 3632 "util/configparser.c" break; - case 359: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ -#line 1010 "./util/configparser.y" + case 364: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ +#line 1015 "./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 3654 "util/configparser.c" +#line 3642 "util/configparser.c" break; - case 360: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ -#line 1017 "./util/configparser.y" + case 365: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ +#line 1022 "./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) @@ -3662,53 +3650,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3666 "util/configparser.c" +#line 3654 "util/configparser.c" break; - case 361: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ -#line 1026 "./util/configparser.y" + case 366: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ +#line 1031 "./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 3677 "util/configparser.c" +#line 3665 "util/configparser.c" break; - case 362: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ -#line 1034 "./util/configparser.y" + case 367: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ +#line 1039 "./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 3687 "util/configparser.c" +#line 3675 "util/configparser.c" break; - case 363: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ -#line 1041 "./util/configparser.y" + case 368: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ +#line 1046 "./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 3697 "util/configparser.c" +#line 3685 "util/configparser.c" break; - case 364: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ -#line 1048 "./util/configparser.y" + case 369: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ +#line 1053 "./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 3708 "util/configparser.c" +#line 3696 "util/configparser.c" break; - case 365: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ -#line 1056 "./util/configparser.y" + case 370: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ +#line 1061 "./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) @@ -3716,11 +3704,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3720 "util/configparser.c" +#line 3708 "util/configparser.c" break; - case 366: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ -#line 1065 "./util/configparser.y" + case 371: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ +#line 1070 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3728,11 +3716,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3732 "util/configparser.c" +#line 3720 "util/configparser.c" break; - case 367: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ -#line 1073 "./util/configparser.y" + case 372: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ +#line 1078 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -3748,11 +3736,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3752 "util/configparser.c" +#line 3740 "util/configparser.c" break; - case 368: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ -#line 1089 "./util/configparser.y" + case 373: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ +#line 1094 "./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) @@ -3760,11 +3748,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3764 "util/configparser.c" +#line 3752 "util/configparser.c" break; - case 369: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ -#line 1097 "./util/configparser.y" + case 374: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ +#line 1102 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3772,11 +3760,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3776 "util/configparser.c" +#line 3764 "util/configparser.c" break; - case 370: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ -#line 1105 "./util/configparser.y" + case 375: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ +#line 1110 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3784,11 +3772,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3788 "util/configparser.c" +#line 3776 "util/configparser.c" break; - case 371: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ -#line 1113 "./util/configparser.y" + case 376: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ +#line 1118 "./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) @@ -3796,11 +3784,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3800 "util/configparser.c" +#line 3788 "util/configparser.c" break; - case 372: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ -#line 1121 "./util/configparser.y" + case 377: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ +#line 1126 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3808,11 +3796,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3812 "util/configparser.c" +#line 3800 "util/configparser.c" break; - case 373: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ -#line 1129 "./util/configparser.y" + case 378: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ +#line 1134 "./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) @@ -3820,11 +3808,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3824 "util/configparser.c" +#line 3812 "util/configparser.c" break; - case 374: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ -#line 1138 "./util/configparser.y" + case 379: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ +#line 1143 "./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) @@ -3832,11 +3820,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3836 "util/configparser.c" +#line 3824 "util/configparser.c" break; - case 375: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ -#line 1147 "./util/configparser.y" + case 380: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ +#line 1152 "./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) @@ -3849,11 +3837,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3853 "util/configparser.c" +#line 3841 "util/configparser.c" break; - case 376: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ -#line 1161 "./util/configparser.y" + case 381: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ +#line 1166 "./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) @@ -3861,11 +3849,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3865 "util/configparser.c" +#line 3853 "util/configparser.c" break; - case 377: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ -#line 1170 "./util/configparser.y" + case 382: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ +#line 1175 "./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) @@ -3873,11 +3861,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3877 "util/configparser.c" +#line 3865 "util/configparser.c" break; - case 378: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ -#line 1179 "./util/configparser.y" + case 383: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ +#line 1184 "./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) @@ -3885,11 +3873,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3889 "util/configparser.c" +#line 3877 "util/configparser.c" break; - case 379: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ -#line 1188 "./util/configparser.y" + case 384: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ +#line 1193 "./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) @@ -3897,11 +3885,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3901 "util/configparser.c" +#line 3889 "util/configparser.c" break; - case 380: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ -#line 1197 "./util/configparser.y" + case 385: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ +#line 1202 "./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) @@ -3909,11 +3897,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3913 "util/configparser.c" +#line 3901 "util/configparser.c" break; - case 381: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ -#line 1206 "./util/configparser.y" + case 386: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ +#line 1211 "./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) @@ -3921,31 +3909,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3925 "util/configparser.c" +#line 3913 "util/configparser.c" break; - case 382: /* server_chroot: VAR_CHROOT STRING_ARG */ -#line 1215 "./util/configparser.y" + case 387: /* server_chroot: VAR_CHROOT STRING_ARG */ +#line 1220 "./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 3935 "util/configparser.c" +#line 3923 "util/configparser.c" break; - case 383: /* server_username: VAR_USERNAME STRING_ARG */ -#line 1222 "./util/configparser.y" + case 388: /* server_username: VAR_USERNAME STRING_ARG */ +#line 1227 "./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 3945 "util/configparser.c" +#line 3933 "util/configparser.c" break; - case 384: /* server_directory: VAR_DIRECTORY STRING_ARG */ -#line 1229 "./util/configparser.y" + case 389: /* server_directory: VAR_DIRECTORY STRING_ARG */ +#line 1234 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3970,105 +3958,105 @@ yyreduce: } } } -#line 3974 "util/configparser.c" +#line 3962 "util/configparser.c" break; - case 385: /* server_logfile: VAR_LOGFILE STRING_ARG */ -#line 1255 "./util/configparser.y" + case 390: /* server_logfile: VAR_LOGFILE STRING_ARG */ +#line 1260 "./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 3985 "util/configparser.c" +#line 3973 "util/configparser.c" break; - case 386: /* server_pidfile: VAR_PIDFILE STRING_ARG */ -#line 1263 "./util/configparser.y" + case 391: /* server_pidfile: VAR_PIDFILE STRING_ARG */ +#line 1268 "./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 3995 "util/configparser.c" +#line 3983 "util/configparser.c" break; - case 387: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ -#line 1270 "./util/configparser.y" + case 392: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ +#line 1275 "./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 4005 "util/configparser.c" +#line 3993 "util/configparser.c" break; - case 388: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ -#line 1277 "./util/configparser.y" + case 393: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ +#line 1282 "./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 4015 "util/configparser.c" +#line 4003 "util/configparser.c" break; - case 389: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ -#line 1284 "./util/configparser.y" + case 394: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ +#line 1289 "./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 4025 "util/configparser.c" +#line 4013 "util/configparser.c" break; - case 390: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1291 "./util/configparser.y" + case 395: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1296 "./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 4036 "util/configparser.c" +#line 4024 "util/configparser.c" break; - case 391: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1299 "./util/configparser.y" + case 396: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1304 "./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 4047 "util/configparser.c" +#line 4035 "util/configparser.c" break; - case 392: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ -#line 1307 "./util/configparser.y" + case 397: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ +#line 1312 "./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 4058 "util/configparser.c" +#line 4046 "util/configparser.c" break; - case 393: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ -#line 1315 "./util/configparser.y" + case 398: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ +#line 1320 "./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 4068 "util/configparser.c" +#line 4056 "util/configparser.c" break; - case 394: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ -#line 1322 "./util/configparser.y" + case 399: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ +#line 1327 "./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) @@ -4078,11 +4066,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4082 "util/configparser.c" +#line 4070 "util/configparser.c" break; - case 395: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ -#line 1333 "./util/configparser.y" + case 400: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ +#line 1338 "./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) @@ -4092,21 +4080,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4096 "util/configparser.c" +#line 4084 "util/configparser.c" break; - case 396: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ -#line 1344 "./util/configparser.y" + case 401: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ +#line 1349 "./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 4106 "util/configparser.c" +#line 4094 "util/configparser.c" break; - case 397: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ -#line 1351 "./util/configparser.y" + case 402: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ +#line 1356 "./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) @@ -4114,11 +4102,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4118 "util/configparser.c" +#line 4106 "util/configparser.c" break; - case 398: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ -#line 1360 "./util/configparser.y" + case 403: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ +#line 1365 "./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) @@ -4126,11 +4114,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4130 "util/configparser.c" +#line 4118 "util/configparser.c" break; - case 399: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ -#line 1369 "./util/configparser.y" + case 404: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ +#line 1374 "./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) @@ -4138,11 +4126,11 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4142 "util/configparser.c" +#line 4130 "util/configparser.c" break; - case 400: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ -#line 1378 "./util/configparser.y" + case 405: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ +#line 1383 "./util/configparser.y" { OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4150,41 +4138,41 @@ yyreduce: else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4154 "util/configparser.c" +#line 4142 "util/configparser.c" break; - case 401: /* server_identity: VAR_IDENTITY STRING_ARG */ -#line 1387 "./util/configparser.y" + case 406: /* server_identity: VAR_IDENTITY STRING_ARG */ +#line 1392 "./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 4164 "util/configparser.c" +#line 4152 "util/configparser.c" break; - case 402: /* server_version: VAR_VERSION STRING_ARG */ -#line 1394 "./util/configparser.y" + case 407: /* server_version: VAR_VERSION STRING_ARG */ +#line 1399 "./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 4174 "util/configparser.c" +#line 4162 "util/configparser.c" break; - case 403: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ -#line 1401 "./util/configparser.y" + case 408: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ +#line 1406 "./util/configparser.y" { OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_user_agent); cfg_parser->cfg->http_user_agent = (yyvsp[0].str); } -#line 4184 "util/configparser.c" +#line 4172 "util/configparser.c" break; - case 404: /* server_nsid: VAR_NSID STRING_ARG */ -#line 1408 "./util/configparser.y" + case 409: /* server_nsid: VAR_NSID STRING_ARG */ +#line 1413 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4199,33 +4187,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4203 "util/configparser.c" +#line 4191 "util/configparser.c" break; - case 405: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ -#line 1424 "./util/configparser.y" + case 410: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ +#line 1429 "./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 4214 "util/configparser.c" +#line 4202 "util/configparser.c" break; - case 406: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ -#line 1432 "./util/configparser.y" + case 411: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ +#line 1437 "./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 4225 "util/configparser.c" +#line 4213 "util/configparser.c" break; - case 407: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ -#line 1440 "./util/configparser.y" + case 412: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ +#line 1445 "./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) @@ -4234,11 +4222,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4238 "util/configparser.c" +#line 4226 "util/configparser.c" break; - case 408: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ -#line 1450 "./util/configparser.y" + case 413: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ +#line 1455 "./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) @@ -4247,11 +4235,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4251 "util/configparser.c" +#line 4239 "util/configparser.c" break; - case 409: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ -#line 1460 "./util/configparser.y" + case 414: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ +#line 1465 "./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) @@ -4260,11 +4248,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4264 "util/configparser.c" +#line 4252 "util/configparser.c" break; - case 410: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ -#line 1470 "./util/configparser.y" + case 415: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ +#line 1475 "./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) @@ -4277,22 +4265,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4281 "util/configparser.c" +#line 4269 "util/configparser.c" break; - case 411: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ -#line 1484 "./util/configparser.y" + case 416: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ +#line 1489 "./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 4292 "util/configparser.c" +#line 4280 "util/configparser.c" break; - case 412: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ -#line 1492 "./util/configparser.y" + case 417: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ +#line 1497 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4304,11 +4292,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4308 "util/configparser.c" +#line 4296 "util/configparser.c" break; - case 413: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ -#line 1505 "./util/configparser.y" + case 418: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ +#line 1510 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4318,22 +4306,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4322 "util/configparser.c" +#line 4310 "util/configparser.c" break; - case 414: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ -#line 1516 "./util/configparser.y" + case 419: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ +#line 1521 "./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 4333 "util/configparser.c" +#line 4321 "util/configparser.c" break; - case 415: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ -#line 1524 "./util/configparser.y" + case 420: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ +#line 1529 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4345,11 +4333,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4349 "util/configparser.c" +#line 4337 "util/configparser.c" break; - case 416: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ -#line 1537 "./util/configparser.y" + case 421: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ +#line 1542 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4357,11 +4345,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4361 "util/configparser.c" +#line 4349 "util/configparser.c" break; - case 417: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ -#line 1546 "./util/configparser.y" + case 422: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ +#line 1551 "./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) @@ -4369,11 +4357,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4373 "util/configparser.c" +#line 4361 "util/configparser.c" break; - case 418: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ -#line 1555 "./util/configparser.y" + case 423: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ +#line 1560 "./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) @@ -4381,11 +4369,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4385 "util/configparser.c" +#line 4373 "util/configparser.c" break; - case 419: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ -#line 1564 "./util/configparser.y" + case 424: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ +#line 1569 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4393,11 +4381,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4397 "util/configparser.c" +#line 4385 "util/configparser.c" break; - case 420: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ -#line 1573 "./util/configparser.y" + case 425: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ +#line 1578 "./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) @@ -4406,11 +4394,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4410 "util/configparser.c" +#line 4398 "util/configparser.c" break; - case 421: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ -#line 1583 "./util/configparser.y" + case 426: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ +#line 1588 "./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) @@ -4419,22 +4407,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4423 "util/configparser.c" +#line 4411 "util/configparser.c" break; - case 422: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ -#line 1593 "./util/configparser.y" + case 427: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ +#line 1598 "./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 4434 "util/configparser.c" +#line 4422 "util/configparser.c" break; - case 423: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ -#line 1601 "./util/configparser.y" + case 428: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ +#line 1606 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4446,11 +4434,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4450 "util/configparser.c" +#line 4438 "util/configparser.c" break; - case 424: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ -#line 1614 "./util/configparser.y" + case 429: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ +#line 1619 "./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) @@ -4458,22 +4446,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4462 "util/configparser.c" +#line 4450 "util/configparser.c" break; - case 425: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ -#line 1623 "./util/configparser.y" + case 430: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ +#line 1628 "./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 4473 "util/configparser.c" +#line 4461 "util/configparser.c" break; - case 426: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ -#line 1631 "./util/configparser.y" + case 431: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ +#line 1636 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4481,22 +4469,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4485 "util/configparser.c" +#line 4473 "util/configparser.c" break; - case 427: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ -#line 1640 "./util/configparser.y" + case 432: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ +#line 1645 "./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 4496 "util/configparser.c" +#line 4484 "util/configparser.c" break; - case 428: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ -#line 1648 "./util/configparser.y" + case 433: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ +#line 1653 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4508,11 +4496,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4512 "util/configparser.c" +#line 4500 "util/configparser.c" break; - case 429: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ -#line 1661 "./util/configparser.y" + case 434: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ +#line 1666 "./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) @@ -4520,11 +4508,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4524 "util/configparser.c" +#line 4512 "util/configparser.c" break; - case 430: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ -#line 1670 "./util/configparser.y" + case 435: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ +#line 1675 "./util/configparser.y" { OUTYY(("P(server_infra_cache_max_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4532,11 +4520,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4536 "util/configparser.c" +#line 4524 "util/configparser.c" break; - case 431: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ -#line 1679 "./util/configparser.y" + case 436: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ +#line 1684 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4545,21 +4533,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4549 "util/configparser.c" +#line 4537 "util/configparser.c" break; - case 432: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ -#line 1689 "./util/configparser.y" + case 437: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ +#line 1694 "./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 4559 "util/configparser.c" +#line 4547 "util/configparser.c" break; - case 433: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ -#line 1696 "./util/configparser.y" + case 438: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ +#line 1701 "./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) @@ -4568,11 +4556,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4572 "util/configparser.c" +#line 4560 "util/configparser.c" break; - case 434: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ -#line 1706 "./util/configparser.y" + case 439: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ +#line 1711 "./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) @@ -4581,11 +4569,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4585 "util/configparser.c" +#line 4573 "util/configparser.c" break; - case 435: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ -#line 1716 "./util/configparser.y" + case 440: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ +#line 1721 "./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) @@ -4594,11 +4582,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4598 "util/configparser.c" +#line 4586 "util/configparser.c" break; - case 436: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ -#line 1726 "./util/configparser.y" + case 441: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ +#line 1731 "./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) @@ -4607,11 +4595,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4611 "util/configparser.c" +#line 4599 "util/configparser.c" break; - case 437: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ -#line 1736 "./util/configparser.y" + case 442: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ +#line 1741 "./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) @@ -4620,11 +4608,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4624 "util/configparser.c" +#line 4612 "util/configparser.c" break; - case 438: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ -#line 1746 "./util/configparser.y" + case 443: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ +#line 1751 "./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) @@ -4633,11 +4621,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" +#line 4625 "util/configparser.c" break; - case 439: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ -#line 1756 "./util/configparser.y" + case 444: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ +#line 1761 "./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) @@ -4646,11 +4634,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4650 "util/configparser.c" +#line 4638 "util/configparser.c" break; - case 440: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ -#line 1766 "./util/configparser.y" + case 445: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ +#line 1771 "./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) @@ -4659,41 +4647,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4663 "util/configparser.c" +#line 4651 "util/configparser.c" break; - case 441: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ -#line 1776 "./util/configparser.y" + case 446: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ +#line 1781 "./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 4673 "util/configparser.c" +#line 4661 "util/configparser.c" break; - case 442: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ -#line 1783 "./util/configparser.y" + case 447: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ +#line 1788 "./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 4683 "util/configparser.c" +#line 4671 "util/configparser.c" break; - case 443: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ -#line 1790 "./util/configparser.y" + case 448: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ +#line 1795 "./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 4693 "util/configparser.c" +#line 4681 "util/configparser.c" break; - case 444: /* server_prefetch: VAR_PREFETCH STRING_ARG */ -#line 1797 "./util/configparser.y" + case 449: /* server_prefetch: VAR_PREFETCH STRING_ARG */ +#line 1802 "./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) @@ -4701,11 +4689,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4705 "util/configparser.c" +#line 4693 "util/configparser.c" break; - case 445: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ -#line 1806 "./util/configparser.y" + case 450: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ +#line 1811 "./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) @@ -4713,11 +4701,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4717 "util/configparser.c" +#line 4705 "util/configparser.c" break; - case 446: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ -#line 1815 "./util/configparser.y" + case 451: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ +#line 1820 "./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) @@ -4725,11 +4713,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4729 "util/configparser.c" +#line 4717 "util/configparser.c" break; - case 447: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ -#line 1824 "./util/configparser.y" + case 452: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ +#line 1829 "./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) @@ -4737,21 +4725,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4741 "util/configparser.c" +#line 4729 "util/configparser.c" break; - case 448: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ -#line 1833 "./util/configparser.y" + case 453: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ +#line 1838 "./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 4751 "util/configparser.c" +#line 4739 "util/configparser.c" break; - case 449: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ -#line 1840 "./util/configparser.y" + case 454: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ +#line 1845 "./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) @@ -4760,44 +4748,44 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4764 "util/configparser.c" +#line 4752 "util/configparser.c" break; - case 450: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ -#line 1850 "./util/configparser.y" + case 455: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ +#line 1855 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && - strcmp((yyvsp[0].str), "deny_non_local")!=0 && - strcmp((yyvsp[0].str), "refuse_non_local")!=0 && - strcmp((yyvsp[0].str), "allow_setrd")!=0 && - strcmp((yyvsp[0].str), "allow")!=0 && - strcmp((yyvsp[0].str), "allow_snoop")!=0) { - yyerror("expected deny, refuse, deny_non_local, " - "refuse_non_local, allow, allow_setrd or " - "allow_snoop in access control action"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else { - if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding acl"); - } + validate_acl_action((yyvsp[0].str)); + if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) + fatal_exit("out of memory adding acl"); } -#line 4787 "util/configparser.c" +#line 4763 "util/configparser.c" break; - case 451: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ -#line 1870 "./util/configparser.y" + case 456: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */ +#line 1863 "./util/configparser.y" + { + OUTYY(("P(server_interface_action:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); + validate_acl_action((yyvsp[0].str)); + if(!cfg_str2list_insert( + &cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str))) + fatal_exit("out of memory adding acl"); + } +#line 4775 "util/configparser.c" + break; + + case 457: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ +#line 1872 "./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 4797 "util/configparser.c" +#line 4785 "util/configparser.c" break; - case 452: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ -#line 1877 "./util/configparser.y" + case 458: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ +#line 1879 "./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) { @@ -4814,11 +4802,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4818 "util/configparser.c" +#line 4806 "util/configparser.c" break; - case 453: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ -#line 1895 "./util/configparser.y" + case 459: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ +#line 1897 "./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) { @@ -4830,11 +4818,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4834 "util/configparser.c" +#line 4822 "util/configparser.c" break; - case 454: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ -#line 1908 "./util/configparser.y" + case 460: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ +#line 1910 "./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) { @@ -4846,11 +4834,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4850 "util/configparser.c" +#line 4838 "util/configparser.c" break; - case 455: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ -#line 1921 "./util/configparser.y" + case 461: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ +#line 1923 "./util/configparser.y" { OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4862,11 +4850,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4866 "util/configparser.c" +#line 4854 "util/configparser.c" break; - case 456: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ -#line 1934 "./util/configparser.y" + case 462: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ +#line 1936 "./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) @@ -4874,11 +4862,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4878 "util/configparser.c" +#line 4866 "util/configparser.c" break; - case 457: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ -#line 1943 "./util/configparser.y" + case 463: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ +#line 1945 "./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) @@ -4886,11 +4874,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4890 "util/configparser.c" +#line 4878 "util/configparser.c" break; - case 458: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ -#line 1952 "./util/configparser.y" + case 464: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ +#line 1954 "./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) @@ -4898,11 +4886,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4902 "util/configparser.c" +#line 4890 "util/configparser.c" break; - case 459: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ -#line 1961 "./util/configparser.y" + case 465: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ +#line 1963 "./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) @@ -4910,11 +4898,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4914 "util/configparser.c" +#line 4902 "util/configparser.c" break; - case 460: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ -#line 1970 "./util/configparser.y" + case 466: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ +#line 1972 "./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) @@ -4923,11 +4911,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4927 "util/configparser.c" +#line 4915 "util/configparser.c" break; - case 461: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ -#line 1980 "./util/configparser.y" + case 467: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ +#line 1982 "./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) @@ -4936,11 +4924,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4940 "util/configparser.c" +#line 4928 "util/configparser.c" break; - case 462: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ -#line 1990 "./util/configparser.y" + case 468: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ +#line 1992 "./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) @@ -4950,11 +4938,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4954 "util/configparser.c" +#line 4942 "util/configparser.c" break; - case 463: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ -#line 2001 "./util/configparser.y" + case 469: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ +#line 2003 "./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) @@ -4962,11 +4950,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4966 "util/configparser.c" +#line 4954 "util/configparser.c" break; - case 464: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ -#line 2010 "./util/configparser.y" + case 470: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ +#line 2012 "./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) @@ -4974,11 +4962,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4978 "util/configparser.c" +#line 4966 "util/configparser.c" break; - case 465: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ -#line 2019 "./util/configparser.y" + case 471: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ +#line 2021 "./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) @@ -4986,11 +4974,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4990 "util/configparser.c" +#line 4978 "util/configparser.c" break; - case 466: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ -#line 2028 "./util/configparser.y" + case 472: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ +#line 2030 "./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) @@ -4998,11 +4986,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5002 "util/configparser.c" +#line 4990 "util/configparser.c" break; - case 467: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ -#line 2037 "./util/configparser.y" + case 473: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ +#line 2039 "./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) @@ -5010,11 +4998,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5014 "util/configparser.c" +#line 5002 "util/configparser.c" break; - case 468: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ -#line 2046 "./util/configparser.y" + case 474: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ +#line 2048 "./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) @@ -5022,11 +5010,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5026 "util/configparser.c" +#line 5014 "util/configparser.c" break; - case 469: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ -#line 2055 "./util/configparser.y" + case 475: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ +#line 2057 "./util/configparser.y" { OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5034,11 +5022,11 @@ yyreduce: else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5038 "util/configparser.c" +#line 5026 "util/configparser.c" break; - case 470: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ -#line 2064 "./util/configparser.y" + case 476: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ +#line 2066 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5046,11 +5034,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5050 "util/configparser.c" +#line 5038 "util/configparser.c" break; - case 471: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ -#line 2073 "./util/configparser.y" + case 477: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ +#line 2075 "./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) @@ -5062,11 +5050,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5066 "util/configparser.c" +#line 5054 "util/configparser.c" break; - case 472: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ -#line 2086 "./util/configparser.y" + case 478: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ +#line 2088 "./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) @@ -5078,11 +5066,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5082 "util/configparser.c" +#line 5070 "util/configparser.c" break; - case 473: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ -#line 2099 "./util/configparser.y" + case 479: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ +#line 2101 "./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) @@ -5090,21 +5078,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5094 "util/configparser.c" +#line 5082 "util/configparser.c" break; - case 474: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ -#line 2108 "./util/configparser.y" + case 480: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ +#line 2110 "./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 5104 "util/configparser.c" +#line 5092 "util/configparser.c" break; - case 475: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ -#line 2115 "./util/configparser.y" + case 481: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ +#line 2117 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5112,11 +5100,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5116 "util/configparser.c" +#line 5104 "util/configparser.c" break; - case 476: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ -#line 2124 "./util/configparser.y" + case 482: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ +#line 2126 "./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) @@ -5124,11 +5112,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5128 "util/configparser.c" +#line 5116 "util/configparser.c" break; - case 477: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ -#line 2133 "./util/configparser.y" + case 483: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ +#line 2135 "./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) @@ -5136,11 +5124,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5140 "util/configparser.c" +#line 5128 "util/configparser.c" break; - case 478: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ -#line 2142 "./util/configparser.y" + case 484: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ +#line 2144 "./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) @@ -5148,11 +5136,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5152 "util/configparser.c" +#line 5140 "util/configparser.c" break; - case 479: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ -#line 2151 "./util/configparser.y" + case 485: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ +#line 2153 "./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) @@ -5161,22 +5149,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5165 "util/configparser.c" +#line 5153 "util/configparser.c" break; - case 480: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ -#line 2160 "./util/configparser.y" + case 486: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ +#line 2162 "./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 5176 "util/configparser.c" +#line 5164 "util/configparser.c" break; - case 481: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ -#line 2168 "./util/configparser.y" + case 487: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ +#line 2170 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5188,22 +5176,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5192 "util/configparser.c" +#line 5180 "util/configparser.c" break; - case 482: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ -#line 2181 "./util/configparser.y" + case 488: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ +#line 2183 "./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 5203 "util/configparser.c" +#line 5191 "util/configparser.c" break; - case 483: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2189 "./util/configparser.y" + case 489: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2191 "./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 && @@ -5257,21 +5245,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5261 "util/configparser.c" +#line 5249 "util/configparser.c" break; - case 484: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2244 "./util/configparser.y" + case 490: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2246 "./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 5271 "util/configparser.c" +#line 5259 "util/configparser.c" break; - case 485: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2251 "./util/configparser.y" + case 491: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2253 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5285,11 +5273,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5289 "util/configparser.c" +#line 5277 "util/configparser.c" break; - case 486: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ -#line 2266 "./util/configparser.y" + case 492: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ +#line 2268 "./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) @@ -5298,11 +5286,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5302 "util/configparser.c" +#line 5290 "util/configparser.c" break; - case 487: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ -#line 2276 "./util/configparser.y" + case 493: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ +#line 2278 "./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) @@ -5311,41 +5299,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5315 "util/configparser.c" +#line 5303 "util/configparser.c" break; - case 488: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ -#line 2286 "./util/configparser.y" + case 494: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ +#line 2288 "./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 5325 "util/configparser.c" +#line 5313 "util/configparser.c" break; - case 489: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ -#line 2293 "./util/configparser.y" + case 495: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ +#line 2295 "./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 5335 "util/configparser.c" +#line 5323 "util/configparser.c" break; - case 490: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ -#line 2300 "./util/configparser.y" + case 496: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ +#line 2302 "./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 5345 "util/configparser.c" +#line 5333 "util/configparser.c" break; - case 491: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ -#line 2307 "./util/configparser.y" + case 497: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ +#line 2309 "./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) @@ -5353,22 +5341,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5357 "util/configparser.c" +#line 5345 "util/configparser.c" break; - case 492: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ -#line 2316 "./util/configparser.y" + case 498: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ +#line 2318 "./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 5368 "util/configparser.c" +#line 5356 "util/configparser.c" break; - case 493: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ -#line 2324 "./util/configparser.y" + case 499: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ +#line 2326 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5381,11 +5369,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5385 "util/configparser.c" +#line 5373 "util/configparser.c" break; - case 494: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ -#line 2338 "./util/configparser.y" + case 500: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ +#line 2340 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5405,11 +5393,11 @@ yyreduce: } } } -#line 5409 "util/configparser.c" +#line 5397 "util/configparser.c" break; - case 495: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ -#line 2359 "./util/configparser.y" + case 501: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ +#line 2361 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5429,11 +5417,11 @@ yyreduce: } } } -#line 5433 "util/configparser.c" +#line 5421 "util/configparser.c" break; - case 496: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2380 "./util/configparser.y" + case 502: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2382 "./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, @@ -5444,11 +5432,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5448 "util/configparser.c" +#line 5436 "util/configparser.c" break; - case 497: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2392 "./util/configparser.y" + case 503: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2394 "./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, @@ -5459,11 +5447,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5463 "util/configparser.c" +#line 5451 "util/configparser.c" break; - case 498: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ -#line 2404 "./util/configparser.y" + case 504: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ +#line 2406 "./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, @@ -5474,11 +5462,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5478 "util/configparser.c" +#line 5466 "util/configparser.c" break; - case 499: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ -#line 2416 "./util/configparser.y" + case 505: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ +#line 2418 "./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, @@ -5486,11 +5474,77 @@ yyreduce: yyerror("out of memory"); } } -#line 5490 "util/configparser.c" +#line 5478 "util/configparser.c" break; - case 500: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ -#line 2425 "./util/configparser.y" + case 506: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ +#line 2427 "./util/configparser.y" + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), + &len); + free((yyvsp[0].str)); + OUTYY(("P(server_interface_tag:%s)\n", (yyvsp[-1].str))); + if(!bitlist) { + yyerror("could not parse tags, (define-tag them first)"); + free((yyvsp[-1].str)); + } + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->interface_tags, + (yyvsp[-1].str), bitlist, len)) { + yyerror("out of memory"); + free((yyvsp[-1].str)); + } + } + } +#line 5502 "util/configparser.c" + break; + + case 507: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2448 "./util/configparser.y" + { + OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); + if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions, + (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { + yyerror("out of memory"); + free((yyvsp[-2].str)); + free((yyvsp[-1].str)); + free((yyvsp[0].str)); + } + } +#line 5517 "util/configparser.c" + break; + + case 508: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2460 "./util/configparser.y" + { + OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); + if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas, + (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { + yyerror("out of memory"); + free((yyvsp[-2].str)); + free((yyvsp[-1].str)); + free((yyvsp[0].str)); + } + } +#line 5532 "util/configparser.c" + break; + + case 509: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ +#line 2472 "./util/configparser.y" + { + OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); + if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view, + (yyvsp[-1].str), (yyvsp[0].str))) { + yyerror("out of memory"); + } + } +#line 5544 "util/configparser.c" + break; + + case 510: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ +#line 2481 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5510,11 +5564,11 @@ yyreduce: } } } -#line 5514 "util/configparser.c" +#line 5568 "util/configparser.c" break; - case 501: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ -#line 2446 "./util/configparser.y" + case 511: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ +#line 2502 "./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) @@ -5522,11 +5576,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5526 "util/configparser.c" +#line 5580 "util/configparser.c" break; - case 502: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ -#line 2455 "./util/configparser.y" + case 512: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ +#line 2511 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5534,33 +5588,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5538 "util/configparser.c" +#line 5592 "util/configparser.c" break; - case 503: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ -#line 2464 "./util/configparser.y" + case 513: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ +#line 2520 "./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 5549 "util/configparser.c" +#line 5603 "util/configparser.c" break; - case 504: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ -#line 2472 "./util/configparser.y" + case 514: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ +#line 2528 "./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 5560 "util/configparser.c" +#line 5614 "util/configparser.c" break; - case 505: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ -#line 2480 "./util/configparser.y" + case 515: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ +#line 2536 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5572,11 +5626,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5576 "util/configparser.c" +#line 5630 "util/configparser.c" break; - case 506: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ -#line 2493 "./util/configparser.y" + case 516: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ +#line 2549 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5588,11 +5642,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5592 "util/configparser.c" +#line 5646 "util/configparser.c" break; - case 507: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ -#line 2506 "./util/configparser.y" + case 517: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ +#line 2562 "./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) { @@ -5606,11 +5660,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5610 "util/configparser.c" +#line 5664 "util/configparser.c" break; - case 508: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ -#line 2521 "./util/configparser.y" + case 518: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ +#line 2577 "./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) { @@ -5624,11 +5678,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5628 "util/configparser.c" +#line 5682 "util/configparser.c" break; - case 509: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ -#line 2536 "./util/configparser.y" + case 519: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ +#line 2592 "./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) @@ -5636,11 +5690,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5640 "util/configparser.c" +#line 5694 "util/configparser.c" break; - case 510: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ -#line 2545 "./util/configparser.y" + case 520: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ +#line 2601 "./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) @@ -5648,11 +5702,11 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5652 "util/configparser.c" +#line 5706 "util/configparser.c" break; - case 511: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ -#line 2554 "./util/configparser.y" + case 521: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ +#line 2610 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5661,11 +5715,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5665 "util/configparser.c" +#line 5719 "util/configparser.c" break; - case 512: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ -#line 2564 "./util/configparser.y" + case 522: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ +#line 2620 "./util/configparser.y" { OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5674,11 +5728,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5678 "util/configparser.c" +#line 5732 "util/configparser.c" break; - case 513: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ -#line 2574 "./util/configparser.y" + case 523: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ +#line 2630 "./util/configparser.y" { OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5686,20 +5740,20 @@ yyreduce: else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5690 "util/configparser.c" +#line 5744 "util/configparser.c" break; - case 514: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ -#line 2583 "./util/configparser.y" + case 524: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ +#line 2639 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5699 "util/configparser.c" +#line 5753 "util/configparser.c" break; - case 515: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ -#line 2589 "./util/configparser.y" + case 525: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ +#line 2645 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5707,11 +5761,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5711 "util/configparser.c" +#line 5765 "util/configparser.c" break; - case 516: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ -#line 2598 "./util/configparser.y" + case 526: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ +#line 2654 "./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) @@ -5719,11 +5773,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5723 "util/configparser.c" +#line 5777 "util/configparser.c" break; - case 517: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ -#line 2607 "./util/configparser.y" + case 527: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ +#line 2663 "./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) @@ -5732,11 +5786,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5736 "util/configparser.c" +#line 5790 "util/configparser.c" break; - case 518: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ -#line 2617 "./util/configparser.y" + case 528: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ +#line 2673 "./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) @@ -5745,11 +5799,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5749 "util/configparser.c" +#line 5803 "util/configparser.c" break; - case 519: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ -#line 2627 "./util/configparser.y" + case 529: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ +#line 2683 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5758,11 +5812,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5762 "util/configparser.c" +#line 5816 "util/configparser.c" break; - case 520: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ -#line 2637 "./util/configparser.y" + case 530: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ +#line 2693 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5770,11 +5824,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5774 "util/configparser.c" +#line 5828 "util/configparser.c" break; - case 521: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ -#line 2646 "./util/configparser.y" + case 531: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ +#line 2702 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5783,11 +5837,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5787 "util/configparser.c" +#line 5841 "util/configparser.c" break; - case 522: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ -#line 2656 "./util/configparser.y" + case 532: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ +#line 2712 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5795,11 +5849,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5799 "util/configparser.c" +#line 5853 "util/configparser.c" break; - case 523: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ -#line 2665 "./util/configparser.y" + case 533: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ +#line 2721 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5811,11 +5865,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5815 "util/configparser.c" +#line 5869 "util/configparser.c" break; - case 524: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ -#line 2678 "./util/configparser.y" + case 534: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ +#line 2734 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5827,11 +5881,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5831 "util/configparser.c" +#line 5885 "util/configparser.c" break; - case 525: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ -#line 2691 "./util/configparser.y" + case 535: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ +#line 2747 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5842,11 +5896,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5846 "util/configparser.c" +#line 5900 "util/configparser.c" break; - case 526: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ -#line 2703 "./util/configparser.y" + case 536: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ +#line 2759 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5859,11 +5913,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5863 "util/configparser.c" +#line 5917 "util/configparser.c" break; - case 527: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ -#line 2717 "./util/configparser.y" + case 537: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ +#line 2773 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5874,11 +5928,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5878 "util/configparser.c" +#line 5932 "util/configparser.c" break; - case 528: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ -#line 2729 "./util/configparser.y" + case 538: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ +#line 2785 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5891,11 +5945,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5895 "util/configparser.c" +#line 5949 "util/configparser.c" break; - case 529: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ -#line 2743 "./util/configparser.y" + case 539: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ +#line 2799 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -5903,11 +5957,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 5907 "util/configparser.c" +#line 5961 "util/configparser.c" break; - case 530: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ -#line 2752 "./util/configparser.y" + case 540: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ +#line 2808 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5917,11 +5971,11 @@ yyreduce: else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5921 "util/configparser.c" +#line 5975 "util/configparser.c" break; - case 531: /* server_ede: VAR_EDE STRING_ARG */ -#line 2763 "./util/configparser.y" + case 541: /* server_ede: VAR_EDE STRING_ARG */ +#line 2819 "./util/configparser.y" { OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5929,11 +5983,11 @@ yyreduce: else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5933 "util/configparser.c" +#line 5987 "util/configparser.c" break; - case 532: /* stub_name: VAR_NAME STRING_ARG */ -#line 2772 "./util/configparser.y" + case 542: /* stub_name: VAR_NAME STRING_ARG */ +#line 2828 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5942,31 +5996,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5946 "util/configparser.c" +#line 6000 "util/configparser.c" break; - case 533: /* stub_host: VAR_STUB_HOST STRING_ARG */ -#line 2782 "./util/configparser.y" + case 543: /* stub_host: VAR_STUB_HOST STRING_ARG */ +#line 2838 "./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 5956 "util/configparser.c" +#line 6010 "util/configparser.c" break; - case 534: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ -#line 2789 "./util/configparser.y" + case 544: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ +#line 2845 "./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 5966 "util/configparser.c" +#line 6020 "util/configparser.c" break; - case 535: /* stub_first: VAR_STUB_FIRST STRING_ARG */ -#line 2796 "./util/configparser.y" + case 545: /* stub_first: VAR_STUB_FIRST STRING_ARG */ +#line 2852 "./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) @@ -5974,11 +6028,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5978 "util/configparser.c" +#line 6032 "util/configparser.c" break; - case 536: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ -#line 2805 "./util/configparser.y" + case 546: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ +#line 2861 "./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) @@ -5986,11 +6040,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5990 "util/configparser.c" +#line 6044 "util/configparser.c" break; - case 537: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ -#line 2814 "./util/configparser.y" + case 547: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ +#line 2870 "./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) @@ -5999,11 +6053,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6003 "util/configparser.c" +#line 6057 "util/configparser.c" break; - case 538: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ -#line 2824 "./util/configparser.y" + case 548: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ +#line 2880 "./util/configparser.y" { OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6012,11 +6066,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6016 "util/configparser.c" +#line 6070 "util/configparser.c" break; - case 539: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ -#line 2834 "./util/configparser.y" + case 549: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ +#line 2890 "./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) @@ -6025,11 +6079,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6029 "util/configparser.c" +#line 6083 "util/configparser.c" break; - case 540: /* forward_name: VAR_NAME STRING_ARG */ -#line 2844 "./util/configparser.y" + case 550: /* forward_name: VAR_NAME STRING_ARG */ +#line 2900 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6038,31 +6092,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6042 "util/configparser.c" +#line 6096 "util/configparser.c" break; - case 541: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ -#line 2854 "./util/configparser.y" + case 551: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ +#line 2910 "./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 6052 "util/configparser.c" +#line 6106 "util/configparser.c" break; - case 542: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ -#line 2861 "./util/configparser.y" + case 552: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ +#line 2917 "./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 6062 "util/configparser.c" +#line 6116 "util/configparser.c" break; - case 543: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ -#line 2868 "./util/configparser.y" + case 553: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ +#line 2924 "./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) @@ -6070,11 +6124,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6074 "util/configparser.c" +#line 6128 "util/configparser.c" break; - case 544: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ -#line 2877 "./util/configparser.y" + case 554: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ +#line 2933 "./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) @@ -6082,11 +6136,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6086 "util/configparser.c" +#line 6140 "util/configparser.c" break; - case 545: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ -#line 2886 "./util/configparser.y" + case 555: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ +#line 2942 "./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) @@ -6095,11 +6149,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6099 "util/configparser.c" +#line 6153 "util/configparser.c" break; - case 546: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ -#line 2896 "./util/configparser.y" + case 556: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ +#line 2952 "./util/configparser.y" { OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6108,11 +6162,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6112 "util/configparser.c" +#line 6166 "util/configparser.c" break; - case 547: /* auth_name: VAR_NAME STRING_ARG */ -#line 2906 "./util/configparser.y" + case 557: /* auth_name: VAR_NAME STRING_ARG */ +#line 2962 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6121,52 +6175,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6125 "util/configparser.c" +#line 6179 "util/configparser.c" break; - case 548: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ -#line 2916 "./util/configparser.y" + case 558: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ +#line 2972 "./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 6135 "util/configparser.c" +#line 6189 "util/configparser.c" break; - case 549: /* auth_master: VAR_MASTER STRING_ARG */ -#line 2923 "./util/configparser.y" + case 559: /* auth_master: VAR_MASTER STRING_ARG */ +#line 2979 "./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 6145 "util/configparser.c" +#line 6199 "util/configparser.c" break; - case 550: /* auth_url: VAR_URL STRING_ARG */ -#line 2930 "./util/configparser.y" + case 560: /* auth_url: VAR_URL STRING_ARG */ +#line 2986 "./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 6155 "util/configparser.c" +#line 6209 "util/configparser.c" break; - case 551: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ -#line 2937 "./util/configparser.y" + case 561: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ +#line 2993 "./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 6166 "util/configparser.c" +#line 6220 "util/configparser.c" break; - case 552: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ -#line 2945 "./util/configparser.y" + case 562: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ +#line 3001 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6175,11 +6229,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6179 "util/configparser.c" +#line 6233 "util/configparser.c" break; - case 553: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ -#line 2955 "./util/configparser.y" + case 563: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ +#line 3011 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6188,11 +6242,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6192 "util/configparser.c" +#line 6246 "util/configparser.c" break; - case 554: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ -#line 2965 "./util/configparser.y" + case 564: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ +#line 3021 "./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) @@ -6201,11 +6255,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6205 "util/configparser.c" +#line 6259 "util/configparser.c" break; - case 555: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ -#line 2975 "./util/configparser.y" + case 565: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ +#line 3031 "./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) @@ -6214,11 +6268,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6218 "util/configparser.c" +#line 6272 "util/configparser.c" break; - case 556: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ -#line 2985 "./util/configparser.y" + case 566: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ +#line 3041 "./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) @@ -6227,11 +6281,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6231 "util/configparser.c" +#line 6285 "util/configparser.c" break; - case 557: /* view_name: VAR_NAME STRING_ARG */ -#line 2995 "./util/configparser.y" + case 567: /* view_name: VAR_NAME STRING_ARG */ +#line 3051 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6240,11 +6294,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6244 "util/configparser.c" +#line 6298 "util/configparser.c" break; - case 558: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 3005 "./util/configparser.y" + case 568: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 3061 "./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 && @@ -6299,11 +6353,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6303 "util/configparser.c" +#line 6357 "util/configparser.c" break; - case 559: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3061 "./util/configparser.y" + case 569: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3117 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6312,33 +6366,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6316 "util/configparser.c" +#line 6370 "util/configparser.c" break; - case 560: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3071 "./util/configparser.y" + case 570: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3127 "./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 6327 "util/configparser.c" +#line 6381 "util/configparser.c" break; - case 561: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 3079 "./util/configparser.y" + case 571: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 3135 "./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 6338 "util/configparser.c" +#line 6392 "util/configparser.c" break; - case 562: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 3087 "./util/configparser.y" + case 572: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 3143 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6352,11 +6406,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6356 "util/configparser.c" +#line 6410 "util/configparser.c" break; - case 563: /* view_first: VAR_VIEW_FIRST STRING_ARG */ -#line 3102 "./util/configparser.y" + case 573: /* view_first: VAR_VIEW_FIRST STRING_ARG */ +#line 3158 "./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) @@ -6364,20 +6418,20 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6368 "util/configparser.c" +#line 6422 "util/configparser.c" break; - case 564: /* rcstart: VAR_REMOTE_CONTROL */ -#line 3111 "./util/configparser.y" + case 574: /* rcstart: VAR_REMOTE_CONTROL */ +#line 3167 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); cfg_parser->started_toplevel = 1; } -#line 6377 "util/configparser.c" +#line 6431 "util/configparser.c" break; - case 575: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ -#line 3123 "./util/configparser.y" + case 585: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ +#line 3179 "./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) @@ -6386,11 +6440,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6390 "util/configparser.c" +#line 6444 "util/configparser.c" break; - case 576: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ -#line 3133 "./util/configparser.y" + case 586: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ +#line 3189 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6398,80 +6452,80 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6402 "util/configparser.c" +#line 6456 "util/configparser.c" break; - case 577: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ -#line 3142 "./util/configparser.y" + case 587: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ +#line 3198 "./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 6412 "util/configparser.c" +#line 6466 "util/configparser.c" break; - case 578: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ -#line 3149 "./util/configparser.y" + case 588: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ +#line 3205 "./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 6422 "util/configparser.c" +#line 6476 "util/configparser.c" break; - case 579: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ -#line 3156 "./util/configparser.y" + case 589: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ +#line 3212 "./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 6432 "util/configparser.c" +#line 6486 "util/configparser.c" break; - case 580: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ -#line 3163 "./util/configparser.y" + case 590: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ +#line 3219 "./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 6442 "util/configparser.c" +#line 6496 "util/configparser.c" break; - case 581: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ -#line 3170 "./util/configparser.y" + case 591: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ +#line 3226 "./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 6452 "util/configparser.c" +#line 6506 "util/configparser.c" break; - case 582: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ -#line 3177 "./util/configparser.y" + case 592: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ +#line 3233 "./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 6462 "util/configparser.c" +#line 6516 "util/configparser.c" break; - case 583: /* dtstart: VAR_DNSTAP */ -#line 3184 "./util/configparser.y" + case 593: /* dtstart: VAR_DNSTAP */ +#line 3240 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); cfg_parser->started_toplevel = 1; } -#line 6471 "util/configparser.c" +#line 6525 "util/configparser.c" break; - case 605: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ -#line 3205 "./util/configparser.y" + case 615: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ +#line 3261 "./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) @@ -6479,11 +6533,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6483 "util/configparser.c" +#line 6537 "util/configparser.c" break; - case 606: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ -#line 3214 "./util/configparser.y" + case 616: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ +#line 3270 "./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) @@ -6492,31 +6546,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6496 "util/configparser.c" +#line 6550 "util/configparser.c" break; - case 607: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ -#line 3224 "./util/configparser.y" + case 617: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ +#line 3280 "./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 6506 "util/configparser.c" +#line 6560 "util/configparser.c" break; - case 608: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ -#line 3231 "./util/configparser.y" + case 618: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ +#line 3287 "./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 6516 "util/configparser.c" +#line 6570 "util/configparser.c" break; - case 609: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ -#line 3238 "./util/configparser.y" + case 619: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ +#line 3294 "./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) @@ -6524,51 +6578,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6528 "util/configparser.c" +#line 6582 "util/configparser.c" break; - case 610: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ -#line 3247 "./util/configparser.y" + case 620: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ +#line 3303 "./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 6538 "util/configparser.c" +#line 6592 "util/configparser.c" break; - case 611: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ -#line 3254 "./util/configparser.y" + case 621: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ +#line 3310 "./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 6548 "util/configparser.c" +#line 6602 "util/configparser.c" break; - case 612: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ -#line 3261 "./util/configparser.y" + case 622: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ +#line 3317 "./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 6558 "util/configparser.c" +#line 6612 "util/configparser.c" break; - case 613: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ -#line 3268 "./util/configparser.y" + case 623: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ +#line 3324 "./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 6568 "util/configparser.c" +#line 6622 "util/configparser.c" break; - case 614: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ -#line 3275 "./util/configparser.y" + case 624: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ +#line 3331 "./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) @@ -6576,11 +6630,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6580 "util/configparser.c" +#line 6634 "util/configparser.c" break; - case 615: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ -#line 3284 "./util/configparser.y" + case 625: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ +#line 3340 "./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) @@ -6588,31 +6642,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6592 "util/configparser.c" +#line 6646 "util/configparser.c" break; - case 616: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ -#line 3293 "./util/configparser.y" + case 626: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ +#line 3349 "./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 6602 "util/configparser.c" +#line 6656 "util/configparser.c" break; - case 617: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ -#line 3300 "./util/configparser.y" + case 627: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ +#line 3356 "./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 6612 "util/configparser.c" +#line 6666 "util/configparser.c" break; - case 618: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ -#line 3307 "./util/configparser.y" + case 628: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ +#line 3363 "./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) @@ -6621,11 +6675,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6625 "util/configparser.c" +#line 6679 "util/configparser.c" break; - case 619: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ -#line 3317 "./util/configparser.y" + case 629: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ +#line 3373 "./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) @@ -6634,11 +6688,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6638 "util/configparser.c" +#line 6692 "util/configparser.c" break; - case 620: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ -#line 3327 "./util/configparser.y" + case 630: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ +#line 3383 "./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) @@ -6647,11 +6701,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6651 "util/configparser.c" +#line 6705 "util/configparser.c" break; - case 621: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ -#line 3337 "./util/configparser.y" + case 631: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ +#line 3393 "./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) @@ -6660,11 +6714,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6664 "util/configparser.c" +#line 6718 "util/configparser.c" break; - case 622: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ -#line 3347 "./util/configparser.y" + case 632: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ +#line 3403 "./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) @@ -6673,11 +6727,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6677 "util/configparser.c" +#line 6731 "util/configparser.c" break; - case 623: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ -#line 3357 "./util/configparser.y" + case 633: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ +#line 3413 "./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) @@ -6686,49 +6740,49 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6690 "util/configparser.c" +#line 6744 "util/configparser.c" break; - case 624: /* pythonstart: VAR_PYTHON */ -#line 3367 "./util/configparser.y" + case 634: /* pythonstart: VAR_PYTHON */ +#line 3423 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); cfg_parser->started_toplevel = 1; } -#line 6699 "util/configparser.c" +#line 6753 "util/configparser.c" break; - case 628: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ -#line 3377 "./util/configparser.y" + case 638: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ +#line 3433 "./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 6709 "util/configparser.c" +#line 6763 "util/configparser.c" break; - case 629: /* dynlibstart: VAR_DYNLIB */ -#line 3383 "./util/configparser.y" + case 639: /* dynlibstart: VAR_DYNLIB */ +#line 3439 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); cfg_parser->started_toplevel = 1; } -#line 6718 "util/configparser.c" +#line 6772 "util/configparser.c" break; - case 633: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ -#line 3393 "./util/configparser.y" + case 643: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ +#line 3449 "./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 6728 "util/configparser.c" +#line 6782 "util/configparser.c" break; - case 634: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ -#line 3399 "./util/configparser.y" + case 644: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ +#line 3455 "./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) @@ -6737,21 +6791,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6741 "util/configparser.c" +#line 6795 "util/configparser.c" break; - case 635: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ -#line 3409 "./util/configparser.y" + case 645: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ +#line 3465 "./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 6751 "util/configparser.c" +#line 6805 "util/configparser.c" break; - case 636: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3416 "./util/configparser.y" + case 646: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3472 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6759,31 +6813,31 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6763 "util/configparser.c" +#line 6817 "util/configparser.c" break; - case 637: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3425 "./util/configparser.y" + case 647: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3481 "./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 6774 "util/configparser.c" +#line 6828 "util/configparser.c" break; - case 638: /* dnscstart: VAR_DNSCRYPT */ -#line 3433 "./util/configparser.y" + case 648: /* dnscstart: VAR_DNSCRYPT */ +#line 3489 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); cfg_parser->started_toplevel = 1; } -#line 6783 "util/configparser.c" +#line 6837 "util/configparser.c" break; - case 651: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ -#line 3450 "./util/configparser.y" + case 661: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ +#line 3506 "./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) @@ -6791,11 +6845,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6795 "util/configparser.c" +#line 6849 "util/configparser.c" break; - case 652: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ -#line 3460 "./util/configparser.y" + case 662: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ +#line 3516 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6803,21 +6857,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6807 "util/configparser.c" +#line 6861 "util/configparser.c" break; - case 653: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ -#line 3469 "./util/configparser.y" + case 663: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ +#line 3525 "./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 6817 "util/configparser.c" +#line 6871 "util/configparser.c" break; - case 654: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ -#line 3476 "./util/configparser.y" + case 664: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ +#line 3532 "./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))) @@ -6825,21 +6879,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 6829 "util/configparser.c" +#line 6883 "util/configparser.c" break; - case 655: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ -#line 3485 "./util/configparser.y" + case 665: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ +#line 3541 "./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 6839 "util/configparser.c" +#line 6893 "util/configparser.c" break; - case 656: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ -#line 3492 "./util/configparser.y" + case 666: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ +#line 3548 "./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))) @@ -6847,22 +6901,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 6851 "util/configparser.c" +#line 6905 "util/configparser.c" break; - case 657: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ -#line 3501 "./util/configparser.y" + case 667: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ +#line 3557 "./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 6862 "util/configparser.c" +#line 6916 "util/configparser.c" break; - case 658: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ -#line 3509 "./util/configparser.y" + case 668: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ +#line 3565 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6874,22 +6928,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6878 "util/configparser.c" +#line 6932 "util/configparser.c" break; - case 659: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ -#line 3522 "./util/configparser.y" + case 669: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ +#line 3578 "./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 6889 "util/configparser.c" +#line 6943 "util/configparser.c" break; - case 660: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ -#line 3530 "./util/configparser.y" + case 670: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ +#line 3586 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6901,20 +6955,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6905 "util/configparser.c" +#line 6959 "util/configparser.c" break; - case 661: /* cachedbstart: VAR_CACHEDB */ -#line 3543 "./util/configparser.y" + case 671: /* cachedbstart: VAR_CACHEDB */ +#line 3599 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); cfg_parser->started_toplevel = 1; } -#line 6914 "util/configparser.c" +#line 6968 "util/configparser.c" break; - case 670: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ -#line 3555 "./util/configparser.y" + case 680: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ +#line 3611 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6925,11 +6979,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6929 "util/configparser.c" +#line 6983 "util/configparser.c" break; - case 671: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ -#line 3567 "./util/configparser.y" + case 681: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ +#line 3623 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6940,11 +6994,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6944 "util/configparser.c" +#line 6998 "util/configparser.c" break; - case 672: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ -#line 3579 "./util/configparser.y" + case 682: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ +#line 3635 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6955,11 +7009,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6959 "util/configparser.c" +#line 7013 "util/configparser.c" break; - case 673: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ -#line 3591 "./util/configparser.y" + case 683: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ +#line 3647 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6973,11 +7027,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6977 "util/configparser.c" +#line 7031 "util/configparser.c" break; - case 674: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ -#line 3606 "./util/configparser.y" + case 684: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3662 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6989,11 +7043,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6993 "util/configparser.c" +#line 7047 "util/configparser.c" break; - case 675: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3619 "./util/configparser.y" + case 685: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3675 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7005,11 +7059,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7009 "util/configparser.c" +#line 7063 "util/configparser.c" break; - case 676: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3632 "./util/configparser.y" + case 686: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3688 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7019,20 +7073,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7023 "util/configparser.c" +#line 7077 "util/configparser.c" break; - case 677: /* ipsetstart: VAR_IPSET */ -#line 3643 "./util/configparser.y" + case 687: /* ipsetstart: VAR_IPSET */ +#line 3699 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); cfg_parser->started_toplevel = 1; } -#line 7032 "util/configparser.c" +#line 7086 "util/configparser.c" break; - case 682: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3653 "./util/configparser.y" + case 692: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3709 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7046,11 +7100,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7050 "util/configparser.c" +#line 7104 "util/configparser.c" break; - case 683: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3668 "./util/configparser.y" + case 693: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3724 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7064,11 +7118,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7068 "util/configparser.c" +#line 7122 "util/configparser.c" break; -#line 7072 "util/configparser.c" +#line 7126 "util/configparser.c" default: break; } @@ -7150,6 +7204,7 @@ yyerrorlab: label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; + ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -7210,7 +7265,7 @@ yyerrlab1: `-------------------------------------*/ yyacceptlab: yyresult = 0; - goto yyreturn; + goto yyreturnlab; /*-----------------------------------. @@ -7218,24 +7273,22 @@ yyacceptlab: `-----------------------------------*/ yyabortlab: yyresult = 1; - goto yyreturn; + goto yyreturnlab; -#if !defined yyoverflow -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - goto yyreturn; -#endif + goto yyreturnlab; -/*-------------------------------------------------------. -| yyreturn -- parsing is finished, clean up and return. | -`-------------------------------------------------------*/ -yyreturn: +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at @@ -7262,7 +7315,7 @@ yyreturn: return yyresult; } -#line 3682 "./util/configparser.y" +#line 3738 "./util/configparser.y" /* parse helper routines could be here */ @@ -7283,4 +7336,19 @@ validate_respip_action(const char* action) } } - +static void +validate_acl_action(const char* action) +{ + if(strcmp(action, "deny")!=0 && + strcmp(action, "refuse")!=0 && + strcmp(action, "deny_non_local")!=0 && + strcmp(action, "refuse_non_local")!=0 && + strcmp(action, "allow_setrd")!=0 && + strcmp(action, "allow")!=0 && + strcmp(action, "allow_snoop")!=0) + { + yyerror("expected deny, refuse, deny_non_local, " + "refuse_non_local, allow, allow_setrd or " + "allow_snoop as access control action"); + } +} diff --git a/util/configparser.h b/util/configparser.h index f10bdc1a0..18101d2cc 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.7.6. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison interface for Yacc-like parsers in C @@ -378,7 +378,12 @@ extern int yydebug; VAR_ZONEMD_REJECT_ABSENCE = 579, /* VAR_ZONEMD_REJECT_ABSENCE */ VAR_RPZ_SIGNAL_NXDOMAIN_RA = 580, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ VAR_INTERFACE_AUTOMATIC_PORTS = 581, /* VAR_INTERFACE_AUTOMATIC_PORTS */ - VAR_EDE = 582 /* VAR_EDE */ + VAR_EDE = 582, /* VAR_EDE */ + VAR_INTERFACE_ACTION = 583, /* VAR_INTERFACE_ACTION */ + VAR_INTERFACE_VIEW = 584, /* VAR_INTERFACE_VIEW */ + VAR_INTERFACE_TAG = 585, /* VAR_INTERFACE_TAG */ + VAR_INTERFACE_TAG_ACTION = 586, /* VAR_INTERFACE_TAG_ACTION */ + VAR_INTERFACE_TAG_DATA = 587 /* VAR_INTERFACE_TAG_DATA */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -712,16 +717,21 @@ extern int yydebug; #define VAR_RPZ_SIGNAL_NXDOMAIN_RA 580 #define VAR_INTERFACE_AUTOMATIC_PORTS 581 #define VAR_EDE 582 +#define VAR_INTERFACE_ACTION 583 +#define VAR_INTERFACE_VIEW 584 +#define VAR_INTERFACE_TAG 585 +#define VAR_INTERFACE_TAG_ACTION 586 +#define VAR_INTERFACE_TAG_DATA 587 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 66 "./util/configparser.y" +#line 67 "./util/configparser.y" char* str; -#line 725 "util/configparser.h" +#line 735 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; @@ -732,6 +742,8 @@ typedef union YYSTYPE YYSTYPE; extern YYSTYPE yylval; + int yyparse (void); + #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ diff --git a/util/configparser.y b/util/configparser.y index bf4e8c59c..8f3672f5d 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -52,6 +52,7 @@ int ub_c_lex(void); void ub_c_error(const char *message); static void validate_respip_action(const char* action); +static void validate_acl_action(const char* action); /* these need to be global, otherwise they cannot be used inside yacc */ extern struct config_parser_state* cfg_parser; @@ -190,6 +191,8 @@ extern struct config_parser_state* cfg_parser; %token VAR_EDNS_CLIENT_STRING_OPCODE VAR_NSID %token VAR_ZONEMD_PERMISSIVE_MODE VAR_ZONEMD_CHECK VAR_ZONEMD_REJECT_ABSENCE %token VAR_RPZ_SIGNAL_NXDOMAIN_RA VAR_INTERFACE_AUTOMATIC_PORTS VAR_EDE +%token VAR_INTERFACE_ACTION VAR_INTERFACE_VIEW VAR_INTERFACE_TAG +%token VAR_INTERFACE_TAG_ACTION VAR_INTERFACE_TAG_DATA %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -289,6 +292,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_disable_dnssec_lame_check | server_access_control_tag | server_local_zone_override | server_access_control_tag_action | server_access_control_tag_data | server_access_control_view | + server_interface_action | server_interface_view | server_interface_tag | + server_interface_tag_action | server_interface_tag_data | server_qname_minimisation_strict | server_pad_responses | server_pad_responses_block_size | server_pad_queries | server_pad_queries_block_size | @@ -1849,21 +1854,18 @@ server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG { OUTYY(("P(server_access_control:%s %s)\n", $2, $3)); - if(strcmp($3, "deny")!=0 && strcmp($3, "refuse")!=0 && - strcmp($3, "deny_non_local")!=0 && - strcmp($3, "refuse_non_local")!=0 && - strcmp($3, "allow_setrd")!=0 && - strcmp($3, "allow")!=0 && - strcmp($3, "allow_snoop")!=0) { - yyerror("expected deny, refuse, deny_non_local, " - "refuse_non_local, allow, allow_setrd or " - "allow_snoop in access control action"); - free($2); - free($3); - } else { - if(!cfg_str2list_insert(&cfg_parser->cfg->acls, $2, $3)) - fatal_exit("out of memory adding acl"); - } + validate_acl_action($3); + if(!cfg_str2list_insert(&cfg_parser->cfg->acls, $2, $3)) + fatal_exit("out of memory adding acl"); + } + ; +server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG + { + OUTYY(("P(server_interface_action:%s %s)\n", $2, $3)); + validate_acl_action($3); + if(!cfg_str2list_insert( + &cfg_parser->cfg->interface_actions, $2, $3)) + fatal_exit("out of memory adding acl"); } ; server_module_conf: VAR_MODULE_CONF STRING_ARG @@ -2421,6 +2423,60 @@ server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG } } ; +server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3, + &len); + free($3); + OUTYY(("P(server_interface_tag:%s)\n", $2)); + if(!bitlist) { + yyerror("could not parse tags, (define-tag them first)"); + free($2); + } + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->interface_tags, + $2, bitlist, len)) { + yyerror("out of memory"); + free($2); + } + } + } + ; +server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG + { + OUTYY(("P(server_interface_tag_action:%s %s %s)\n", $2, $3, $4)); + if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions, + $2, $3, $4)) { + yyerror("out of memory"); + free($2); + free($3); + free($4); + } + } + ; +server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG + { + OUTYY(("P(server_interface_tag_data:%s %s %s)\n", $2, $3, $4)); + if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas, + $2, $3, $4)) { + yyerror("out of memory"); + free($2); + free($3); + free($4); + } + } + ; +server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG + { + OUTYY(("P(server_interface_view:%s %s)\n", $2, $3)); + if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view, + $2, $3)) { + yyerror("out of memory"); + } + } + ; server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG { size_t len = 0; @@ -3699,4 +3755,19 @@ validate_respip_action(const char* action) } } - +static void +validate_acl_action(const char* action) +{ + if(strcmp(action, "deny")!=0 && + strcmp(action, "refuse")!=0 && + strcmp(action, "deny_non_local")!=0 && + strcmp(action, "refuse_non_local")!=0 && + strcmp(action, "allow_setrd")!=0 && + strcmp(action, "allow")!=0 && + strcmp(action, "allow_snoop")!=0) + { + yyerror("expected deny, refuse, deny_non_local, " + "refuse_non_local, allow, allow_setrd or " + "allow_snoop as access control action"); + } +} diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index 05a22d402..750f45b50 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -44,6 +44,7 @@ * boundaries in the program. */ #include "config.h" +#include "daemon/acl_list.h" #include "util/fptr_wlist.h" #include "util/mini_event.h" #include "services/outside_network.h" @@ -244,6 +245,7 @@ fptr_whitelist_rbtree_cmp(int (*fptr) (const void *, const void *)) else if(fptr == &auth_zone_cmp) return 1; else if(fptr == &auth_data_cmp) return 1; else if(fptr == &auth_xfer_cmp) return 1; + else if(fptr == &acl_interface_compare) return 1; return 0; } diff --git a/util/net_help.c b/util/net_help.c index 8153dbdd1..54fad6986 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -233,12 +233,11 @@ log_addr(enum verbosity_value v, const char* str, else verbose(v, "%s %s port %d", str, dest, (int)port); } -int +int extstrtoaddr(const char* str, struct sockaddr_storage* addr, - socklen_t* addrlen) + socklen_t* addrlen, int port) { char* s; - int port = UNBOUND_DNS_PORT; if((s=strchr(str, '@'))) { char buf[MAX_ADDR_STRLEN]; if(s-str >= MAX_ADDR_STRLEN) { @@ -255,7 +254,6 @@ extstrtoaddr(const char* str, struct sockaddr_storage* addr, return ipstrtoaddr(str, port, addr, addrlen); } - int ipstrtoaddr(const char* ip, int port, struct sockaddr_storage* addr, socklen_t* addrlen) diff --git a/util/net_help.h b/util/net_help.h index fc23b2181..f1881b3ed 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -183,10 +183,11 @@ void log_err_addr(const char* str, const char* err, * @param str: the string * @param addr: where to store sockaddr. * @param addrlen: length of stored sockaddr is returned. + * @param port: default port. * @return 0 on error. */ int extstrtoaddr(const char* str, struct sockaddr_storage* addr, - socklen_t* addrlen); + socklen_t* addrlen, int port); /** * Convert ip address string and port to sockaddr.